Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Jarek Poplawski and committed by
David S. Miller
f4ab5432 cd07a8ea

+1 -4
+1 -4
include/net/pkt_sched.h
··· 90 90 91 91 static inline void qdisc_run(struct Qdisc *q) 92 92 { 93 - struct netdev_queue *txq = q->dev_queue; 94 - 95 - if (!netif_tx_queue_stopped(txq) && 96 - !test_and_set_bit(__QDISC_STATE_RUNNING, &q->state)) 93 + if (!test_and_set_bit(__QDISC_STATE_RUNNING, &q->state)) 97 94 __qdisc_run(q); 98 95 } 99 96