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
..
9p
bluetooth
Bluetooth: trivial: Change NO_FCS_RECV to RECV_NO_FCS
2012-12-03 16:00:01 -02:00
caif
caif-hsi: Remove use of module parameters
2012-06-25 16:44:12 -07:00
irda
TTY: ircomm, use tty from tty_port
2012-06-12 15:50:24 -07:00
iucv
netfilter
netfilter: nf_nat: Handle routing changes in MASQUERADE target
2012-12-03 15:14:20 +01:00
netns
sctp: Make hmac algorithm selection for cookie generation dynamic
2012-10-26 02:22:18 -04:00
nfc
NFC: Export nfc_hci_sak_to_protocol()
2012-11-19 23:56:59 +01:00
phonet
net: remove my future former mail address
2012-06-17 16:29:38 -07:00
sctp
sctp: Add RCU protection to assoc->transport_addr_list
2012-12-07 14:15:04 -05:00
tc_act
act_api.h
addrconf.h
netconf: advertise mc_forwarding status
2012-12-04 13:08:10 -05:00
af_ieee802154.h
af_rxrpc.h
af_unix.h
unix: Remove unused field from unix_sock
2012-10-21 20:37:06 -04:00
ah.h
arp.h
net: Dont use ifindices in hash fns
2012-08-09 16:18:06 -07:00
atmclip.h
ax25.h
userns: Convert net/ax25 to use kuid_t where appropriate
2012-08-14 21:49:42 -07:00
ax88796.h
cfg80211-wext.h
cfg80211.h
cfg80211: fix BSS struct IE access races
2012-11-30 13:42:20 +01:00
checksum.h
net: core: add function for incremental IPv6 pseudo header checksum updates
2012-08-30 03:00:16 +02:00
cipso_ipv4.h
cipso: handle CIPSO options correctly when NetLabel is disabled
2012-06-01 14:18:29 -04:00
cls_cgroup.h
net: Update args to dummy sock_update_classid().
2012-10-26 05:07:00 -04:00
codel.h
codel: refine one condition to avoid a nul rec_inv_sqrt
2012-08-10 16:52:54 -07:00
compat.h
datalink.h
dcbevent.h
dcbnl.h
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
decnet: Use neighbours privately in dn_route struct.
2012-07-05 01:12:14 -07:00
dsa.h
dsfield.h
dst.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2012-08-22 14:21:38 -07:00
dst_ops.h
net: Fix warnings in dst_ops.h
2012-07-19 10:43:03 -07:00
esp.h
ethoc.h
fib_rules.h
ipv4: Elide fib_validate_source() completely when possible.
2012-06-29 01:36:36 -07:00
flow.h
ipv4: Add FLOWI_FLAG_KNOWN_NH
2012-10-08 17:42:36 -04:00
flow_keys.h
garp.h
gen_stats.h
genetlink.h
netlink: Rename pid to portid to avoid confusion
2012-09-10 15:30:41 -04:00
gre.h
gro_cells.h
net: fix a race in gro_cell_poll()
2012-12-11 12:49:53 -05:00
icmp.h
ieee80211_radiotap.h
mac80211: support (partial) VHT radiotap information
2012-11-27 11:56:18 +01:00
ieee802154.h
ieee802154_netdev.h
mac802154: declare reduced mlme operations
2012-05-16 15:16:56 -04:00
if_inet6.h
net: delete all instances of special processing for token ring
2012-05-15 20:14:35 -04:00
inet6_connection_sock.h
ipv6: Add helper inet6_csk_update_pmtu().
2012-07-16 03:44:56 -07:00
inet6_hashtables.h
ipv6: Early TCP socket demux
2012-07-26 15:50:39 -07:00
inet_common.h
net-tcp: Fast Open client - sendmsg(MSG_FASTOPEN)
2012-07-19 11:02:03 -07:00
inet_connection_sock.h
net: ipv6: fix TCP early demux
2012-08-06 13:33:21 -07:00
inet_ecn.h
tunnel: drop packet if ECN present with not-ECT
2012-09-27 18:12:37 -04:00
inet_frag.h
ipv6: unify fragment thresh handling code
2012-09-19 17:23:28 -04:00
inet_hashtables.h
net: fix sparse endianness warnings on sock_common
2012-12-02 20:23:01 -05:00
inet_sock.h
net: move inet_dport/inet_num in sock_common
2012-11-30 15:02:56 -05:00
inet_timewait_sock.h
net: move inet_dport/inet_num in sock_common
2012-11-30 15:02:56 -05:00
inetpeer.h
ipv4: Maintain redirect and PMTU info in struct rtable again.
2012-07-10 22:40:14 -07:00
ip.h
ipv4: fix path MTU discovery with connection tracking
2012-08-26 19:13:55 +02:00
ip6_checksum.h
ipv6: Separate tcp offload functionality
2012-11-15 17:36:18 -05:00
ip6_fib.h
ipv6: remove rt6i_peer_genid from rt6_info and its handler
2012-11-08 21:16:08 -05:00
ip6_route.h
ipv6: export IP6_RT_PRIO_* to userland
2012-11-16 01:47:40 -05:00
ip6_tunnel.h
gre: Support GRE over IPv6
2012-08-14 14:28:32 -07:00
ip_fib.h
ipv4: add a fib_type to fib_info
2012-10-04 13:58:26 -04:00
ip_vs.h
ipvs: fix build errors related to config option combinations
2012-10-23 09:23:40 +09:00
ipcomp.h
ipconfig.h
ipip.h
net: convert __IPTUNNEL_XMIT() to an inline function
2012-11-14 18:49:50 -05:00
ipv6.h
ipv6: unify logic evaluating inet6_dev's accept_ra property
2012-12-01 11:36:37 -05:00
ipx.h
iw_handler.h
lapb.h
lapb: Neaten debugging
2012-05-17 18:45:20 -04:00
lib80211.h
llc.h
llc: Remove stray reference to sysctl_llc_station_ack_timeout.
2012-09-17 13:13:24 -04:00
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
net: delete all instances of special processing for token ring
2012-05-15 20:14:35 -04:00
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h
mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL
2012-12-05 09:53:31 +01:00
mac802154.h
mac802154: add wpan device-class support
2012-06-26 21:06:11 -07:00
mip6.h
mld.h
ndisc.h
net: Dont use ifindices in hash fns
2012-08-09 16:18:06 -07:00
neighbour.h
net: output path optimizations
2012-08-07 16:24:55 -07:00
net_namespace.h
userns: make each net (net_ns) belong to a user_ns
2012-11-18 20:30:55 -05:00
net_ratelimit.h
netdma.h
netevent.h
net: Pass neighbours and dest address into NETEVENT_REDIRECT events.
2012-07-05 02:21:55 -07:00
netlabel.h
userns: Convert the audit loginuid to be a kuid
2012-09-17 18:08:54 -07:00
netlink.h
netlink: Rename pid to portid to avoid confusion
2012-09-10 15:30:41 -04:00
netprio_cgroup.h
cgroup: Assign subsystem IDs during compile time
2012-09-14 09:57:43 -07:00
netrom.h
nexthop.h
nl802154.h
p8022.h
ping.h
pkt_cls.h
pkt_sched.h
protocol.h
net: Remove code duplication between offload structures
2012-11-15 17:39:51 -05:00
psnap.h
raw.h
rawv6.h
ipv6: bool/const conversions phase2
2012-05-19 01:08:16 -04:00
red.h
regulatory.h
cfg80211: add cellular base station regulatory hint support
2012-07-17 12:16:39 +02:00
request_sock.h
tcp: better retrans tracking for defer-accept
2012-11-03 14:45:00 -04:00
rose.h
route.h
ipv4: avoid a test in ip_rt_put()
2012-11-03 14:59:04 -04:00
rtnetlink.h
rtnelink: remove unused parameter from rtnl_create_link().
2012-11-30 12:24:40 -05:00
sch_generic.h
pkt_sched: avoid requeues if possible
2012-12-12 00:16:47 -05:00
scm.h
net: Remove unnecessary NULL check in scm_destroy().
2012-09-24 15:52:33 -04:00
secure_seq.h
slhc_vj.h
snmp.h
net: avoid reloads in SNMP_UPD_PO_STATS
2012-08-06 13:40:47 -07:00
sock.h
net: fix sparse endianness warnings on sock_common
2012-12-02 20:23:01 -05:00
stp.h
tcp.h
tcp: remove dead prototype for tcp_v4_get_peer()
2012-11-23 14:10:31 -05:00
tcp_memcontrol.h
tcp_states.h
timewait_sock.h
[PATCH] tcp: Cache inetpeer in timewait socket, and only when necessary.
2012-06-09 14:56:12 -07:00
transp_v6.h
udp.h
net/ipv6/udp: UDP encapsulation: introduce encap_rcv hook into IPv6
2012-04-28 22:21:51 -04:00
udplite.h
wext.h
wimax.h
wpan-phy.h
mac802154: monitor device support
2012-05-16 15:17:08 -04:00
x25.h
x25device.h
xfrm.h
xfrm: Fix the gc threshold value for ipv4
2012-11-13 09:15:07 +01:00