[PKT_SCHED]: Check subqueue status before calling hard_start_xmit
authorPeter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Wed, 14 Nov 2007 04:40:55 +0000 (20:40 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 14 Nov 2007 04:40:55 +0000 (20:40 -0800)
commit5f1a485d5905aa641f33009019b3699076666a4c
tree8bdcb81a47090cc3b34b1de7159b981e1c55b88b
parent9418d5dc9ba40b88737580457bf3b7c63c60ec43
[PKT_SCHED]: Check subqueue status before calling hard_start_xmit

The only qdiscs that check subqueue state before dequeue'ing are PRIO
and RR.  The other qdiscs, including the default pfifo_fast qdisc,
will allow traffic bound for subqueue 0 through to hard_start_xmit.
The check for netif_queue_stopped() is done above in pkt_sched.h, so
it is unnecessary for qdisc_restart().  However, if the underlying
driver is multiqueue capable, and only sets queue states on subqueues,
this will allow packets to enter the driver when it's currently unable
to process packets, resulting in expensive requeues and driver
entries.  This patch re-adds the check for the subqueue status before
calling hard_start_xmit, so we can try and avoid the driver entry when
the queues are stopped.

Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_generic.c