rps: Various optimizations
authorEric Dumazet <eric.dumazet@gmail.com>
Fri, 7 May 2010 05:07:48 +0000 (22:07 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 7 May 2010 05:07:48 +0000 (22:07 -0700)
commiteecfd7c4e36ff532d895885971d01d049bd3e014
treef75ee9904f29f9fd8d5a019766e41d3c07066903
parent39e0786d3cf39c6d2f47b4818ae2da8b8ebc9ce2
rps: Various optimizations

Introduce ____napi_schedule() helper for callers in irq disabled
contexts. rps_trigger_softirq() becomes a leaf function.

Use container_of() in process_backlog() instead of accessing per_cpu
address.

Use a custom inlined version of __napi_complete() in process_backlog()
to avoid one locked instruction :

 only current cpu owns and manipulates this napi,
 and NAPI_STATE_SCHED is the only possible flag set on backlog.
 we can use a plain write instead of clear_bit(),
 and we dont need an smp_mb() memory barrier, since RPS is on,
 backlog is protected by a spinlock.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c