Krishna Kumar
bbd8a0d3a3
net: Avoid enqueuing skb for default qdiscs
...
dev_queue_xmit enqueue's a skb and calls qdisc_run which
dequeue's the skb and xmits it. In most cases, the skb that
is enqueue'd is the same one that is dequeue'd (unless the
queue gets stopped or multiple cpu's write to the same queue
and ends in a race with qdisc_run). For default qdiscs, we
can remove the redundant enqueue/dequeue and simply xmit the
skb since the default qdisc is work-conserving.
The patch uses a new flag - TCQ_F_CAN_BYPASS to identify the
default fast queue. The controversial part of the patch is
incrementing qlen when a skb is requeued - this is to avoid
checks like the second line below:
+ } else if ((q->flags & TCQ_F_CAN_BYPASS) && !qdisc_qlen(q) &&
>> !q->gso_skb &&
+ !test_and_set_bit(__QDISC_STATE_RUNNING, &q->state)) {
Results of a 2 hour testing for multiple netperf sessions (1,
2, 4, 8, 12 sessions on a 4 cpu system-X). The BW numbers are
aggregate Mb/s across iterations tested with this version on
System-X boxes with Chelsio 10gbps cards:
----------------------------------
Size | ORG BW NEW BW |
----------------------------------
128K | 156964 159381 |
256K | 158650 162042 |
----------------------------------
Changes from ver1:
1. Move sch_direct_xmit declaration from sch_generic.h to
pkt_sched.h
2. Update qdisc basic statistics for direct xmit path.
3. Set qlen to zero in qdisc_reset.
4. Changed some function names to more meaningful ones.
Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-08-06 20:10:18 -07:00
..
9p
net/9p: handle correctly interrupted 9P requests
2009-04-05 16:54:53 -05:00
bluetooth
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6
2009-06-11 05:47:43 -07:00
irda
net: mark read-only arrays as const
2009-08-05 10:42:58 -07:00
iucv
af_iucv: Return -EAGAIN if iucv msg limit is exceeded
2009-06-19 00:10:40 -07:00
netfilter
netfilter: tcp conntrack: fix unacknowledged data detection with NAT
2009-06-29 14:07:56 +02:00
netns
net, netns_xt: shrink netns_xt members
2009-07-05 19:16:18 -07:00
phonet
Phonet: sockets list through proc_fs
2009-07-23 17:58:19 -07:00
sctp
net: mark read-only arrays as const
2009-08-05 10:42:58 -07:00
tc_act
tipc
act_api.h
addrconf.h
ipv6: Fix conflict resolutions during ipv6 binding
2009-03-24 19:49:11 -07:00
af_ieee802154.h
ieee802154: move headers out of extra directory
2009-07-23 17:08:51 +04:00
af_rxrpc.h
af_unix.h
net: Fix soft lockups/OOM issues w/ unix garbage collector
2008-11-26 15:32:27 -08:00
ah.h
arp.h
atmclip.h
clip: convert to internal network_device_stats
2009-01-21 14:01:59 -08:00
ax25.h
ax88796.h
ax88796: Add method to take MAC from platform data
2009-03-24 23:32:03 -07:00
cfg80211.h
cfg80211: enable country IE support to all cfg80211 drivers
2009-08-04 16:44:19 -04:00
checksum.h
include/net net/ - csum_partial - remove unnecessary casts
2008-11-19 15:44:53 -08:00
cipso_ipv4.h
netlabel: Label incoming TCP connections correctly in SELinux
2009-03-28 15:01:36 +11:00
compat.h
datalink.h
dcbnl.h
net: fix DCB setstate to return success/failure
2008-12-21 20:09:50 -08:00
dn.h
decnet: compile fix for removal of byteorder wrapper
2008-11-27 23:04:13 -08:00
dn_dev.h
dn_fib.h
decnet: remove private wrappers of endian helpers
2008-11-27 00:12:47 -08:00
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h
dsa: add switch chip cascading support
2009-03-21 19:06:54 -07:00
dsfield.h
dst.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
esp.h
ethoc.h
net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.
2009-03-27 00:16:21 -07:00
fib_rules.h
net: Remove unused parameter from fill method in fib_rules_ops.
2009-05-20 17:26:23 -07:00
flow.h
netns xfrm: lookup in netns
2008-11-25 17:35:18 -08:00
garp.h
gen_stats.h
pkt_sched: gen_estimator: Optimize gen_estimator_active()
2008-11-26 15:24:32 -08:00
genetlink.h
genetlink: make netns aware
2009-07-12 14:03:27 -07:00
icmp.h
ieee80211_radiotap.h
wireless: radiotap updates
2009-03-27 20:12:52 -04:00
ieee802154.h
ieee802154: move headers out of extra directory
2009-07-23 17:08:51 +04:00
ieee802154_netdev.h
ieee802154: move headers out of extra directory
2009-07-23 17:08:51 +04:00
if_inet6.h
ipv6: reorder struct inet6_ifaddr to remove padding on 64 bit builds
2009-03-21 13:29:05 -07:00
inet6_connection_sock.h
inet6_hashtables.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
inet_common.h
inet_connection_sock.h
inet_ecn.h
net: replace __constant_{endian} uses in net headers
2009-02-14 22:58:35 -08:00
inet_frag.h
inet fragments: fix sparse warning: context imbalance
2009-02-26 23:13:35 -08:00
inet_hashtables.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
inet_sock.h
Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck
2009-06-16 13:09:51 -07:00
inet_timewait_sock.h
net: annotate inet_timewait_sock bitfields
2009-06-15 15:49:32 +02:00
inetpeer.h
ip.h
snmp: add missing counters for RFC 4293
2009-04-27 02:45:02 -07:00
ip6_checksum.h
ip6_fib.h
xfrm: select sane defaults for xfrm[4|6] gc_thresh
2009-07-30 18:52:15 -07:00
ip6_route.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
ip6_tunnel.h
ip_fib.h
ipv4: remove unused macro (FIB_RES_RESET) from ip_fib.h.
2009-05-03 14:19:51 -07:00
ip_vs.h
net: mark read-only arrays as const
2009-08-05 10:42:58 -07:00
ipcomp.h
ipconfig.h
ipip.h
sit: stateless autoconf for isatap
2009-05-19 16:02:02 -07:00
ipv6.h
udpv6: Remove unused skb argument of ipv6_select_ident()
2009-07-12 14:29:28 -07:00
ipx.h
net: replace __constant_{endian} uses in net headers
2009-02-14 22:58:35 -08:00
iw_handler.h
wext: constify extra argument to wireless_send_event
2009-07-10 15:01:49 -04:00
lapb.h
lib80211.h
wireless: missing include in lib80211.h
2008-11-21 11:42:55 -05:00
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h
mac80211: FIF_PSPOLL filter flag
2009-08-04 16:44:35 -04:00
mip6.h
ndisc.h
ipv6: Fix sporadic sendmsg -EINVAL when sending to multicast groups.
2009-01-04 16:04:39 -08:00
neighbour.h
neigh: Convert garbage collection from softirq to workqueue
2009-08-02 18:35:16 -07:00
net_namespace.h
net: explain netns notifiers a little better
2009-07-20 08:03:00 -07:00
netdma.h
net_dma: convert to dma_find_channel
2009-01-06 11:38:15 -07:00
netevent.h
netlabel.h
netlabel: Cleanup the Smack/NetLabel code to fix incoming TCP connections
2009-03-28 15:01:37 +11:00
netlink.h
netfilter: conntrack: add support for DCCP handshake sequence to ctnetlink
2009-05-27 17:50:35 +02:00
netrom.h
netrom: convert to internal net_device_stats
2009-01-21 14:02:01 -08:00
nexthop.h
nl802154.h
ieee802154: move headers out of extra directory
2009-07-23 17:08:51 +04:00
p8022.h
pkt_cls.h
ematch: simpler tcf_em_unregister()
2008-11-16 23:01:49 -08:00
pkt_sched.h
net: Avoid enqueuing skb for default qdiscs
2009-08-06 20:10:18 -07:00
protocol.h
ipv6: Use correct data types for ICMPv6 type and code
2009-06-23 04:31:07 -07:00
psnap.h
snap: use const for descriptor
2009-03-21 19:06:50 -07:00
raw.h
rawv6.h
ipv6: Use correct data types for ICMPv6 type and code
2009-06-23 04:31:07 -07:00
red.h
regulatory.h
cfg80211: clean up includes
2009-04-22 16:57:17 -04:00
request_sock.h
net: Fix memory leak in the proto_register function
2008-11-21 16:45:22 -08:00
rose.h
NET: ROSE: Don't use static buffer.
2009-07-26 19:11:14 -07:00
route.h
net: skb->rtable accessor
2009-06-03 02:51:02 -07:00
rtnetlink.h
sch_generic.h
net: Avoid enqueuing skb for default qdiscs
2009-08-06 20:10:18 -07:00
scm.h
cleanup: remove unused member in scm_cookie.
2009-07-05 19:16:10 -07:00
slhc_vj.h
snmp.h
snmp: add missing counters for RFC 4293
2009-04-27 02:45:02 -07:00
sock.h
net: sock_copy() fixes
2009-07-16 18:05:26 -07:00
stp.h
tcp.h
tcp: Fix MD5 signature checking on IPv4 mapped sockets
2009-07-20 07:49:07 -07:00
tcp_states.h
timewait_sock.h
net: Fix memory leak in the proto_register function
2008-11-21 16:45:22 -08:00
transp_v6.h
net: replace __constant_{endian} uses in net headers
2009-02-14 22:58:35 -08:00
udp.h
udpv4: Handle large incoming UDP/IPv4 packets and support software UFO.
2009-07-12 14:29:21 -07:00
udplite.h
udp: introduce struct udp_table and multiple spinlocks
2008-10-29 01:41:45 -07:00
wext.h
wimax.h
rfkill: rewrite
2009-06-03 14:06:13 -04:00
x25.h
x25: Fix sleep from timer on socket destroy.
2009-06-16 05:40:30 -07:00
x25device.h
xfrm.h
xfrm: select sane defaults for xfrm[4|6] gc_thresh
2009-07-30 18:52:15 -07:00