linux/arch/avr32
Eric Dumazet 2c8c56e15d net: introduce SO_INCOMING_CPU
Alternative to RPS/RFS is to use hardware support for multiple
queues.

Then split a set of million of sockets into worker threads, each
one using epoll() to manage events on its own socket pool.

Ideally, we want one thread per RX/TX queue/cpu, but we have no way to
know after accept() or connect() on which queue/cpu a socket is managed.

We normally use one cpu per RX queue (IRQ smp_affinity being properly
set), so remembering on socket structure which cpu delivered last packet
is enough to solve the problem.

After accept(), connect(), or even file descriptor passing around
processes, applications can use :

 int cpu;
 socklen_t len = sizeof(cpu);

 getsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU, &cpu, &len);

And use this information to put the socket into the right silo
for optimal performance, as all networking stack should run
on the appropriate cpu, without need to send IPI (RPS/RFS).

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-11-11 13:00:06 -05:00
..
boards ARM: SoC driver changes for 3.17 2014-08-08 11:34:32 -07:00
boot avr32: fix out-of-range jump in large kernels 2013-11-20 09:53:21 +01:00
configs avr32: update defconfig to use the generic PWM framework 2014-07-09 15:13:34 +02:00
include net: introduce SO_INCOMING_CPU 2014-11-11 13:00:06 -05:00
kernel avr32: Replace __get_cpu_var with __this_cpu_write 2014-08-26 13:45:55 -04:00
lib ARCH: drivers remove __dev* attributes. 2013-01-03 15:57:13 -08:00
mach-at32ap dmaengine: dw: convert dw_dma_slave to use explicit HS interfaces 2014-09-11 11:48:12 +05:30
mm arch/avr32/mm/cache.c: export symbol flush_icache_range() for module using 2014-03-31 08:41:52 +02:00
oprofile oprofilefs_create_...() do not need superblock argument 2013-09-03 22:52:48 -04:00
Kconfig Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
Kconfig.debug
Makefile avr32: Makefile: add '-D__linux__' flag for gcc-4.4.7 use 2014-02-17 11:24:43 +01:00