linux/net/sched
Jamal Hadi Salim 8236632fb3 [NET_SCHED]: explict hold dev tx lock
For N cpus, with full throttle traffic on all N CPUs, funneling traffic
to the same ethernet device, the devices queue lock is contended by all
N CPUs constantly. The TX lock is only contended by a max of 2 CPUS.
In the current mode of operation, after all the work of entering the
dequeue region, we may endup aborting the path if we are unable to get
the tx lock and go back to contend for the queue lock. As N goes up,
this gets worse.

The changes in this patch result in a small increase in performance
with a 4CPU (2xdual-core) with no irq binding. Both e1000 and tg3
showed similar behavior;

Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-10 16:52:15 -07:00
..
act_api.c [NET_SCHED] protect action config/dump from irqs 2007-09-14 16:43:05 -07:00
act_gact.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
act_ipt.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
act_mirred.c [NET]: Make the device list and device lookups per namespace. 2007-10-10 16:49:10 -07:00
act_pedit.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
act_police.c [NET_SCHED]: Cleanup L2T macros and handle oversized packets 2007-10-10 16:49:20 -07:00
act_simple.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_api.c [NET]: Make the device list and device lookups per namespace. 2007-10-10 16:49:10 -07:00
cls_basic.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_fw.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_route.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.h [NETLINK]: Use nlmsg_trim() where appropriate 2007-04-25 22:26:37 -07:00
cls_tcindex.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_u32.c [PKT_SCHED] cls_u32: error code isn't been propogated properly 2007-10-07 23:57:45 -07:00
em_cmp.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_meta.c [NET]: Make the device list and device lookups per namespace. 2007-10-10 16:49:10 -07:00
em_nbyte.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_text.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_u32.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
ematch.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
Kconfig [PKT_SCHED]: Some typo fixes in net/sched/Kconfig 2007-07-18 02:00:04 -07:00
Makefile [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
sch_api.c [NET]: Make the device list and device lookups per namespace. 2007-10-10 16:49:10 -07:00
sch_atm.c [ATM]: Replacing kmalloc/memset combination with kzalloc. 2007-07-18 01:46:51 -07:00
sch_blackhole.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_cbq.c [NET_SCHED]: Cleanup L2T macros and handle oversized packets 2007-10-10 16:49:20 -07:00
sch_dsmark.c [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
sch_fifo.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_generic.c [NET_SCHED]: explict hold dev tx lock 2007-10-10 16:52:15 -07:00
sch_gred.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_hfsc.c [NET_SCHED]: Kill CONFIG_NET_CLS_POLICE 2007-07-15 00:03:05 -07:00
sch_htb.c [NET_SCHED]: Cleanup L2T macros and handle oversized packets 2007-10-10 16:49:20 -07:00
sch_ingress.c [NET_SCHED]: Fix prio/ingress classification logic error 2007-07-31 02:28:18 -07:00
sch_netem.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_prio.c [NET_SCHED] sch_prio.c: remove duplicate call of tc_classify() 2007-08-30 22:35:46 -07:00
sch_red.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
sch_sfq.c [SFQ]: Remove artificial limitation for queue limit. 2007-10-01 21:01:23 -07:00
sch_tbf.c [NET_SCHED]: Cleanup L2T macros and handle oversized packets 2007-10-10 16:49:20 -07:00
sch_teql.c [NET]: Nuke SET_MODULE_OWNER macro. 2007-10-10 16:51:13 -07:00