diff options
-rw-r--r-- | include/linux/netdevice.h | 7 | ||||
-rw-r--r-- | net/core/dev.c | 4 | ||||
-rw-r--r-- | net/core/netpoll.c | 4 | ||||
-rw-r--r-- | net/core/pktgen.c | 6 | ||||
-rw-r--r-- | net/sched/sch_teql.c | 4 |
5 files changed, 15 insertions, 10 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 6f85db3535e2..4a3f54e358e5 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -996,7 +996,7 @@ static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index) | |||
996 | * | 996 | * |
997 | * Check individual transmit queue of a device with multiple transmit queues. | 997 | * Check individual transmit queue of a device with multiple transmit queues. |
998 | */ | 998 | */ |
999 | static inline int netif_subqueue_stopped(const struct net_device *dev, | 999 | static inline int __netif_subqueue_stopped(const struct net_device *dev, |
1000 | u16 queue_index) | 1000 | u16 queue_index) |
1001 | { | 1001 | { |
1002 | #ifdef CONFIG_NETDEVICES_MULTIQUEUE | 1002 | #ifdef CONFIG_NETDEVICES_MULTIQUEUE |
@@ -1007,6 +1007,11 @@ static inline int netif_subqueue_stopped(const struct net_device *dev, | |||
1007 | #endif | 1007 | #endif |
1008 | } | 1008 | } |
1009 | 1009 | ||
1010 | static inline int netif_subqueue_stopped(const struct net_device *dev, | ||
1011 | struct sk_buff *skb) | ||
1012 | { | ||
1013 | return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb)); | ||
1014 | } | ||
1010 | 1015 | ||
1011 | /** | 1016 | /** |
1012 | * netif_wake_subqueue - allow sending packets on subqueue | 1017 | * netif_wake_subqueue - allow sending packets on subqueue |
diff --git a/net/core/dev.c b/net/core/dev.c index 1672cc134853..872658927e47 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -1553,7 +1553,7 @@ gso: | |||
1553 | return rc; | 1553 | return rc; |
1554 | } | 1554 | } |
1555 | if (unlikely((netif_queue_stopped(dev) || | 1555 | if (unlikely((netif_queue_stopped(dev) || |
1556 | netif_subqueue_stopped(dev, skb->queue_mapping)) && | 1556 | netif_subqueue_stopped(dev, skb)) && |
1557 | skb->next)) | 1557 | skb->next)) |
1558 | return NETDEV_TX_BUSY; | 1558 | return NETDEV_TX_BUSY; |
1559 | } while (skb->next); | 1559 | } while (skb->next); |
@@ -1692,7 +1692,7 @@ gso: | |||
1692 | HARD_TX_LOCK(dev, cpu); | 1692 | HARD_TX_LOCK(dev, cpu); |
1693 | 1693 | ||
1694 | if (!netif_queue_stopped(dev) && | 1694 | if (!netif_queue_stopped(dev) && |
1695 | !netif_subqueue_stopped(dev, skb->queue_mapping)) { | 1695 | !netif_subqueue_stopped(dev, skb)) { |
1696 | rc = 0; | 1696 | rc = 0; |
1697 | if (!dev_hard_start_xmit(skb, dev)) { | 1697 | if (!dev_hard_start_xmit(skb, dev)) { |
1698 | HARD_TX_UNLOCK(dev); | 1698 | HARD_TX_UNLOCK(dev); |
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 95daba624967..bf8d18f1b013 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c | |||
@@ -67,7 +67,7 @@ static void queue_process(struct work_struct *work) | |||
67 | local_irq_save(flags); | 67 | local_irq_save(flags); |
68 | netif_tx_lock(dev); | 68 | netif_tx_lock(dev); |
69 | if ((netif_queue_stopped(dev) || | 69 | if ((netif_queue_stopped(dev) || |
70 | netif_subqueue_stopped(dev, skb->queue_mapping)) || | 70 | netif_subqueue_stopped(dev, skb)) || |
71 | dev->hard_start_xmit(skb, dev) != NETDEV_TX_OK) { | 71 | dev->hard_start_xmit(skb, dev) != NETDEV_TX_OK) { |
72 | skb_queue_head(&npinfo->txq, skb); | 72 | skb_queue_head(&npinfo->txq, skb); |
73 | netif_tx_unlock(dev); | 73 | netif_tx_unlock(dev); |
@@ -269,7 +269,7 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb) | |||
269 | tries > 0; --tries) { | 269 | tries > 0; --tries) { |
270 | if (netif_tx_trylock(dev)) { | 270 | if (netif_tx_trylock(dev)) { |
271 | if (!netif_queue_stopped(dev) && | 271 | if (!netif_queue_stopped(dev) && |
272 | !netif_subqueue_stopped(dev, skb->queue_mapping)) | 272 | !netif_subqueue_stopped(dev, skb)) |
273 | status = dev->hard_start_xmit(skb, dev); | 273 | status = dev->hard_start_xmit(skb, dev); |
274 | netif_tx_unlock(dev); | 274 | netif_tx_unlock(dev); |
275 | 275 | ||
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index b78235e5a7f4..de33f36947e9 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c | |||
@@ -3383,7 +3383,7 @@ static __inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev) | |||
3383 | 3383 | ||
3384 | if ((netif_queue_stopped(odev) || | 3384 | if ((netif_queue_stopped(odev) || |
3385 | (pkt_dev->skb && | 3385 | (pkt_dev->skb && |
3386 | netif_subqueue_stopped(odev, pkt_dev->skb->queue_mapping))) || | 3386 | netif_subqueue_stopped(odev, pkt_dev->skb))) || |
3387 | need_resched()) { | 3387 | need_resched()) { |
3388 | idle_start = getCurUs(); | 3388 | idle_start = getCurUs(); |
3389 | 3389 | ||
@@ -3400,7 +3400,7 @@ static __inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev) | |||
3400 | pkt_dev->idle_acc += getCurUs() - idle_start; | 3400 | pkt_dev->idle_acc += getCurUs() - idle_start; |
3401 | 3401 | ||
3402 | if (netif_queue_stopped(odev) || | 3402 | if (netif_queue_stopped(odev) || |
3403 | netif_subqueue_stopped(odev, pkt_dev->skb->queue_mapping)) { | 3403 | netif_subqueue_stopped(odev, pkt_dev->skb)) { |
3404 | pkt_dev->next_tx_us = getCurUs(); /* TODO */ | 3404 | pkt_dev->next_tx_us = getCurUs(); /* TODO */ |
3405 | pkt_dev->next_tx_ns = 0; | 3405 | pkt_dev->next_tx_ns = 0; |
3406 | goto out; /* Try the next interface */ | 3406 | goto out; /* Try the next interface */ |
@@ -3429,7 +3429,7 @@ static __inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev) | |||
3429 | 3429 | ||
3430 | netif_tx_lock_bh(odev); | 3430 | netif_tx_lock_bh(odev); |
3431 | if (!netif_queue_stopped(odev) && | 3431 | if (!netif_queue_stopped(odev) && |
3432 | !netif_subqueue_stopped(odev, pkt_dev->skb->queue_mapping)) { | 3432 | !netif_subqueue_stopped(odev, pkt_dev->skb)) { |
3433 | 3433 | ||
3434 | atomic_inc(&(pkt_dev->skb->users)); | 3434 | atomic_inc(&(pkt_dev->skb->users)); |
3435 | retry_now: | 3435 | retry_now: |
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c index a9fad7162b5d..421281d9dd1d 100644 --- a/net/sched/sch_teql.c +++ b/net/sched/sch_teql.c | |||
@@ -284,7 +284,7 @@ restart: | |||
284 | if (slave->qdisc_sleeping != q) | 284 | if (slave->qdisc_sleeping != q) |
285 | continue; | 285 | continue; |
286 | if (netif_queue_stopped(slave) || | 286 | if (netif_queue_stopped(slave) || |
287 | netif_subqueue_stopped(slave, subq) || | 287 | __netif_subqueue_stopped(slave, subq) || |
288 | !netif_running(slave)) { | 288 | !netif_running(slave)) { |
289 | busy = 1; | 289 | busy = 1; |
290 | continue; | 290 | continue; |
@@ -294,7 +294,7 @@ restart: | |||
294 | case 0: | 294 | case 0: |
295 | if (netif_tx_trylock(slave)) { | 295 | if (netif_tx_trylock(slave)) { |
296 | if (!netif_queue_stopped(slave) && | 296 | if (!netif_queue_stopped(slave) && |
297 | !netif_subqueue_stopped(slave, subq) && | 297 | !__netif_subqueue_stopped(slave, subq) && |
298 | slave->hard_start_xmit(skb, slave) == 0) { | 298 | slave->hard_start_xmit(skb, slave) == 0) { |
299 | netif_tx_unlock(slave); | 299 | netif_tx_unlock(slave); |
300 | master->slaves = NEXT_SLAVE(q); | 300 | master->slaves = NEXT_SLAVE(q); |