Commit 738b35cc authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller

net: core: Make netif_wake_subqueue a wrapper

netif_wake_subqueue() is duplicating the same thing that netif_tx_wake_queue()
does, so make it call it directly after looking up the queue from the index.
Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 171d87ac
...@@ -3106,7 +3106,19 @@ static inline bool netif_subqueue_stopped(const struct net_device *dev, ...@@ -3106,7 +3106,19 @@ static inline bool netif_subqueue_stopped(const struct net_device *dev,
return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb)); return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb));
} }
void netif_wake_subqueue(struct net_device *dev, u16 queue_index); /**
* netif_wake_subqueue - allow sending packets on subqueue
* @dev: network device
* @queue_index: sub queue index
*
* Resume individual transmit queue of a device with multiple transmit queues.
*/
static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
{
struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
netif_tx_wake_queue(txq);
}
#ifdef CONFIG_XPS #ifdef CONFIG_XPS
int netif_set_xps_queue(struct net_device *dev, const struct cpumask *mask, int netif_set_xps_queue(struct net_device *dev, const struct cpumask *mask,
......
...@@ -2408,28 +2408,6 @@ void netif_schedule_queue(struct netdev_queue *txq) ...@@ -2408,28 +2408,6 @@ void netif_schedule_queue(struct netdev_queue *txq)
} }
EXPORT_SYMBOL(netif_schedule_queue); EXPORT_SYMBOL(netif_schedule_queue);
/**
* netif_wake_subqueue - allow sending packets on subqueue
* @dev: network device
* @queue_index: sub queue index
*
* Resume individual transmit queue of a device with multiple transmit queues.
*/
void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
{
struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
if (test_and_clear_bit(__QUEUE_STATE_DRV_XOFF, &txq->state)) {
struct Qdisc *q;
rcu_read_lock();
q = rcu_dereference(txq->qdisc);
__netif_schedule(q);
rcu_read_unlock();
}
}
EXPORT_SYMBOL(netif_wake_subqueue);
void netif_tx_wake_queue(struct netdev_queue *dev_queue) void netif_tx_wake_queue(struct netdev_queue *dev_queue)
{ {
if (test_and_clear_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state)) { if (test_and_clear_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state)) {
......
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