• Peter P Waskiewicz Jr's avatar
    PKT_SCHED: Check subqueue status before calling hard_start_xmit · 96219ec9
    Peter P Waskiewicz Jr authored
    [PKT_SCHED]: Check subqueue status before calling hard_start_xmit
    
    [ Upstream commit: 5f1a485d ]
    
    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: default avatarPeter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    96219ec9
sch_generic.c 14.3 KB