aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorJarek Poplawski <jarkao2@gmail.com>2008-09-23 04:05:56 -0400
committerDavid S. Miller <davem@davemloft.net>2008-09-23 04:05:56 -0400
commitf4ab543201992fe499bef5c406e09f23aa97b4d5 (patch)
treee5e52782cdc408bd27717d82e87535a24fd516d6 /include/net
parentcd07a8ea0dd4b204919b4c9ced8d9efdd9924495 (diff)
pkt_sched: Remove the tx queue state check in qdisc_run()
The current check wrongly uses the state of one (currently the first) tx queue for all tx queues in case of non-default qdiscs. This check mainly prevented requeuing loop with __netif_schedule(), but now it's controlled inside __qdisc_run(), while dequeuing. The wrongness of this check was first noticed by Herbert Xu. Signed-off-by: Jarek Poplawski <jarkao2@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/pkt_sched.h5
1 files changed, 1 insertions, 4 deletions
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h
index b786a5b09253..4082f39f5079 100644
--- a/include/net/pkt_sched.h
+++ b/include/net/pkt_sched.h
@@ -90,10 +90,7 @@ extern void __qdisc_run(struct Qdisc *q);
90 90
91static inline void qdisc_run(struct Qdisc *q) 91static inline void qdisc_run(struct Qdisc *q)
92{ 92{
93 struct netdev_queue *txq = q->dev_queue; 93 if (!test_and_set_bit(__QDISC_STATE_RUNNING, &q->state))
94
95 if (!netif_tx_queue_stopped(txq) &&
96 !test_and_set_bit(__QDISC_STATE_RUNNING, &q->state))
97 __qdisc_run(q); 94 __qdisc_run(q);
98} 95}
99 96