Commit b9507bda authored by Daniel Borkmann's avatar Daniel Borkmann Committed by David S. Miller

netdevice: move netdev_cap_txqueue for shared usage to header

In order to allow users to invoke netdev_cap_txqueue, it needs to
be moved into netdevice.h header file. While at it, also add kernel
doc header to document the API.
Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 99932d4f
...@@ -2278,6 +2278,26 @@ static inline void netdev_reset_queue(struct net_device *dev_queue) ...@@ -2278,6 +2278,26 @@ static inline void netdev_reset_queue(struct net_device *dev_queue)
netdev_tx_reset_queue(netdev_get_tx_queue(dev_queue, 0)); netdev_tx_reset_queue(netdev_get_tx_queue(dev_queue, 0));
} }
/**
* netdev_cap_txqueue - check if selected tx queue exceeds device queues
* @dev: network device
* @queue_index: given tx queue index
*
* Returns 0 if given tx queue index >= number of device tx queues,
* otherwise returns the originally passed tx queue index.
*/
static inline u16 netdev_cap_txqueue(struct net_device *dev, u16 queue_index)
{
if (unlikely(queue_index >= dev->real_num_tx_queues)) {
net_warn_ratelimited("%s selects TX queue %d, but real number of TX queues is %d\n",
dev->name, queue_index,
dev->real_num_tx_queues);
return 0;
}
return queue_index;
}
/** /**
* netif_running - test if up * netif_running - test if up
* @dev: network device * @dev: network device
......
...@@ -323,17 +323,6 @@ u32 __skb_get_poff(const struct sk_buff *skb) ...@@ -323,17 +323,6 @@ u32 __skb_get_poff(const struct sk_buff *skb)
return poff; return poff;
} }
static inline u16 dev_cap_txqueue(struct net_device *dev, u16 queue_index)
{
if (unlikely(queue_index >= dev->real_num_tx_queues)) {
net_warn_ratelimited("%s selects TX queue %d, but real number of TX queues is %d\n",
dev->name, queue_index,
dev->real_num_tx_queues);
return 0;
}
return queue_index;
}
static inline int get_xps_queue(struct net_device *dev, struct sk_buff *skb) static inline int get_xps_queue(struct net_device *dev, struct sk_buff *skb)
{ {
#ifdef CONFIG_XPS #ifdef CONFIG_XPS
...@@ -408,7 +397,7 @@ struct netdev_queue *netdev_pick_tx(struct net_device *dev, ...@@ -408,7 +397,7 @@ struct netdev_queue *netdev_pick_tx(struct net_device *dev,
queue_index = __netdev_pick_tx(dev, skb); queue_index = __netdev_pick_tx(dev, skb);
if (!accel_priv) if (!accel_priv)
queue_index = dev_cap_txqueue(dev, queue_index); queue_index = netdev_cap_txqueue(dev, queue_index);
} }
skb_set_queue_mapping(skb, queue_index); skb_set_queue_mapping(skb, queue_index);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment