aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_teql.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sched/sch_teql.c')
-rw-r--r--net/sched/sch_teql.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c
index f05ad9a30b4c..dfe7e4520988 100644
--- a/net/sched/sch_teql.c
+++ b/net/sched/sch_teql.c
@@ -277,6 +277,7 @@ static int teql_master_xmit(struct sk_buff *skb, struct net_device *dev)
277 int busy; 277 int busy;
278 int nores; 278 int nores;
279 int len = skb->len; 279 int len = skb->len;
280 int subq = skb->queue_mapping;
280 struct sk_buff *skb_res = NULL; 281 struct sk_buff *skb_res = NULL;
281 282
282 start = master->slaves; 283 start = master->slaves;
@@ -293,7 +294,9 @@ restart:
293 294
294 if (slave->qdisc_sleeping != q) 295 if (slave->qdisc_sleeping != q)
295 continue; 296 continue;
296 if (netif_queue_stopped(slave) || ! netif_running(slave)) { 297 if (netif_queue_stopped(slave) ||
298 netif_subqueue_stopped(slave, subq) ||
299 !netif_running(slave)) {
297 busy = 1; 300 busy = 1;
298 continue; 301 continue;
299 } 302 }
@@ -302,6 +305,7 @@ restart:
302 case 0: 305 case 0:
303 if (netif_tx_trylock(slave)) { 306 if (netif_tx_trylock(slave)) {
304 if (!netif_queue_stopped(slave) && 307 if (!netif_queue_stopped(slave) &&
308 !netif_subqueue_stopped(slave, subq) &&
305 slave->hard_start_xmit(skb, slave) == 0) { 309 slave->hard_start_xmit(skb, slave) == 0) {
306 netif_tx_unlock(slave); 310 netif_tx_unlock(slave);
307 master->slaves = NEXT_SLAVE(q); 311 master->slaves = NEXT_SLAVE(q);