linux/include
Eric Dumazet 1abbe1394a pkt_sched: avoid requeues if possible
With BQL being deployed, we can more likely have following behavior :

We dequeue a packet from qdisc in dequeue_skb(), then we realize target
tx queue is in XOFF state in sch_direct_xmit(), and we have to hold the
skb into gso_skb for later.

This shows in stats (tc -s qdisc dev eth0) as requeues.

Problem of these requeues is that high priority packets can not be
dequeued as long as this (possibly low prio and big TSO packet) is not
removed from gso_skb.

At 1Gbps speed, a full size TSO packet is 500 us of extra latency.

In some cases, we know that all packets dequeued from a qdisc are
for a particular and known txq :

- If device is non multi queue
- For all MQ/MQPRIO slave qdiscs

This patch introduces a new qdisc flag, TCQ_F_ONETXQUEUE to mark
this capability, so that dequeue_skb() is allowed to dequeue a packet
only if the associated txq is not stopped.

This indeed reduce latencies for high prio packets (or improve fairness
with sfq/fq_codel), and almost remove qdisc 'requeues'.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-12-12 00:16:47 -05:00
..
acpi
asm-generic UAPI: Remove empty non-UAPI Kbuild files 2012-10-17 12:31:15 +01:00
clocksource
crypto Merge branch 'modules-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux 2012-10-14 13:39:34 -07:00
drm drm/radeon: add new SI pci id 2012-11-21 18:37:38 -05:00
keys
linux Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2012-12-11 16:24:55 -05:00
math-emu
media [media] adv7604: Replace prim_mode by mode 2012-11-21 17:43:49 -02:00
memory
misc
net pkt_sched: avoid requeues if possible 2012-12-12 00:16:47 -05:00
pcmcia
ras
rdma
rxrpc
scsi [SCSI] sd: Implement support for WRITE SAME 2012-11-13 22:45:42 -08:00
sound ALSA: Add a reference counter to card instance 2012-10-30 11:07:10 +01:00
target
trace Revert "mm: remove __GFP_NO_KSWAPD" 2012-11-26 17:41:24 -08:00
uapi virtio_net: multiqueue support 2012-12-09 00:30:55 -05:00
video
xen Bug-fixes: 2012-11-10 06:56:21 +01:00
Kbuild UAPI: Remove empty non-UAPI Kbuild files 2012-10-17 12:31:15 +01:00