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
..
9p
net/9p: remove a comment about pref member which doesn't exist
2014-11-06 14:59:19 -05:00
bluetooth
Bluetooth: Defer connection-parameter removal when unpairing
2014-10-25 07:56:24 +02:00
caif
caif_hsi.h: Remove extern from function prototypes
2013-09-23 16:29:41 -04:00
irda
include/net/: Fix FSF address in file headers
2013-12-06 12:37:56 -05:00
iucv
af_iucv: fix recvmsg by replacing skb_pull() function
2013-04-08 17:16:57 -04:00
netfilter
netfilter: nf_reject_ipv6: split nf_send_reset6() in smaller functions
2014-10-31 12:49:57 +01:00
netns
ipv6: make fib6 serial number per namespace
2014-10-07 00:02:30 -04:00
nfc
NFC: nci: Add support for proprietary RF Protocols
2014-09-24 02:02:24 +02:00
phonet
sctp
Removed unused function sctp_addr_is_valid()
2014-10-24 00:37:21 -04:00
tc_act
net_sched: act: hide struct tcf_common from API
2014-02-12 19:23:32 -05:00
6lowpan.h
ieee802154: 6lowpan: rename process_data and lowpan_process_data
2014-10-27 15:51:16 +01:00
act_api.h
net_sched: act: refuse to remove bound action outside
2014-02-12 19:23:32 -05:00
addrconf.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2014-09-23 12:09:27 -04:00
af_ieee802154.h
ieee802154: mac802154: remove FSF address
2014-10-25 08:07:30 +02:00
af_rxrpc.h
af_rxrpc.h: Remove extern from function prototypes
2013-07-31 17:50:01 -07:00
af_unix.h
af_unix: improve STREAM behavior with fragmented memory
2013-08-10 01:16:44 -07:00
af_vsock.h
vsock: Make transport the proto owner
2014-05-05 13:13:50 -04:00
ah.h
ipsec: Remove obsolete MAX_AH_AUTH_LEN
2014-09-18 10:54:36 +02:00
arp.h
arp: make arp_invalidate static
2013-12-28 17:02:46 -05:00
atmclip.h
ax25.h
ax25.h: Remove extern from function prototypes
2013-07-31 17:50:02 -07:00
ax88796.h
bond_3ad.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
bond_alb.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
bond_options.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
bonding.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
busy_poll.h
sched, net: Fixup busy_loop_us_clock()
2014-01-13 17:39:11 +01:00
cfg80211-wext.h
cfg80211.h
cfg80211: 802.11p OCB mode handling
2014-11-04 13:18:17 +01:00
cfg802154.h
mac802154: remove driver ops in wpan-phy
2014-10-28 23:19:07 +01:00
checksum.h
net: optimise csum_replace4()
2014-09-26 16:14:16 -04:00
cipso_ipv4.h
cipso: cleanup cipso_v4_translate() when !CONFIG_NETLABEL
2013-12-10 17:56:54 -05:00
cls_cgroup.h
cgroup: clean up cgroup_subsys names and initialization
2014-02-08 10:36:58 -05:00
codel.h
net: use ktime_get_ns() and ktime_get_real_ns() helpers
2014-08-22 19:57:23 -07:00
compat.h
compat.h: Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
datalink.h
net: Move prototype declaration to header file include/net/datalink.h from net/ipx/af_ipx.c
2014-02-09 17:32:50 -08:00
dcbevent.h
include/net/: Fix FSF address in file headers
2013-12-06 12:37:56 -05:00
dcbnl.h
Update setapp/getapp prototypes in dcbnl_rtnl_ops to return int instead of u8
2014-07-17 16:02:29 -07:00
dn.h
net: Move prototype declaration to header file include/net/dn.h from net/decnet/af_decnet.c
2014-02-09 17:32:49 -08:00
dn_dev.h
dn_dev: add support for IFA_FLAGS nl attribute
2013-12-10 21:50:00 -05:00
dn_fib.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_neigh.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_nsp.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_route.h
net: Move prototype declaration to appropriate header file from decnet/af_decnet.c
2014-02-09 17:32:49 -08:00
dsa.h
net: dsa: Add support for reading switch registers with ethtool
2014-10-30 14:54:11 -04:00
dsfield.h
dst.h
xfrm: Generate queueing routes only from route lookup functions
2014-09-16 10:08:49 +02:00
dst_ops.h
percpu_counter: add @gfp to percpu_counter_init()
2014-09-08 09:51:29 +09:00
esp.h
net: move pskb_put() to core code
2013-11-07 19:28:58 -05:00
ethoc.h
net: ethoc: set up MII management bus clock
2014-02-04 20:19:51 -08:00
fib_rules.h
fib_rules.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
firewire.h
firewire net, ipv4 arp: Extend hardware address and remove driver-level packet inspection.
2013-03-26 12:32:13 -04:00
flow.h
ipv4, fib: pass LOOPBACK_IFINDEX instead of 0 to flowi4_iif
2014-04-16 15:05:11 -04:00
flow_keys.h
net: Add function for parsing the header length out of linear ethernet frames
2014-09-05 17:47:02 -07:00
flowcache.h
flowcache: Make flow cache name space aware
2014-02-12 07:02:11 +01:00
fou.h
gue: TX support for using remote checksum offload option
2014-11-05 16:30:03 -05:00
garp.h
garp.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
gen_stats.h
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
genetlink.h
genetlink: add function genl_has_listeners()
2014-09-19 17:28:26 -04:00
geneve.h
openvswitch: fix a compilation error when CONFIG_INET is not setW!
2014-10-07 00:10:49 -04:00
gre.h
gre: Call gso_make_checksum
2014-06-04 22:46:38 -07:00
gro_cells.h
gue.h
gue: Protocol constants for remote checksum offload
2014-11-05 16:30:03 -05:00
icmp.h
icmp.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
ieee80211_radiotap.h
mac80211: propagate STBC / LDPC flags to radiotap
2014-02-06 09:34:58 +01:00
ieee802154_netdev.h
ieee802154: move ieee802154 header
2014-10-25 21:39:57 +02:00
if_inet6.h
ipv6: remove aca_lock spinlock from struct ifacaddr6
2014-10-14 13:15:15 -04:00
inet6_connection_sock.h
ipv4: add a sock pointer to ip_queue_xmit()
2014-04-15 12:58:34 -04:00
inet6_hashtables.h
ipv6: move INET6_MATCH() to include/net/inet6_hashtables.h
2014-11-05 16:59:04 -05:00
inet_common.h
inet*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
inet_connection_sock.h
tcp: avoid possible arithmetic overflows
2014-09-22 16:27:10 -04:00
inet_ecn.h
tunnel: fix RFC number in comment for INET_ECN_decapsulate()
2014-05-07 15:30:52 -04:00
inet_frag.h
percpu_counter: add @gfp to percpu_counter_init()
2014-09-08 09:51:29 +09:00
inet_hashtables.h
net: Use a more standard macro for INET_ADDR_COOKIE
2014-05-14 16:07:23 -04:00
inet_sock.h
net: remove inet6_reqsk_alloc
2014-06-27 15:53:35 -07:00
inet_timewait_sock.h
inet: move ipv6only in sock_common
2014-07-01 23:46:21 -07:00
inetpeer.h
inet: remove dead inetpeer sequence code
2014-09-08 16:42:42 -07:00
ip.h
ipv4: rename ip_options_echo to __ip_options_echo()
2014-09-28 16:35:42 -04:00
ip6_checksum.h
net: add gro_compute_pseudo functions
2014-08-24 18:09:23 -07:00
ip6_fib.h
ipv6: make rt_sernum atomic and serial number fields ordinary ints
2014-10-07 00:02:30 -04:00
ip6_route.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2014-05-24 00:32:30 -04:00
ip6_tunnel.h
ipv6: Allow sending packets through tunnels with wildcard endpoints
2014-11-06 14:19:19 -05:00
ip_fib.h
ipv4: harden fnhe_hashfun()
2014-09-05 17:40:33 -07:00
ip_tunnels.h
openvswitch: Add support for Geneve tunneling.
2014-10-06 00:32:21 -04:00
ip_vs.h
ipvs: Clean up comment style in ip_vs.h
2014-10-02 18:30:58 +02:00
ipcomp.h
ipconfig.h
ipv6.h
drivers/net, ipv6: Select IPv6 fragment idents for virtio UFO packets
2014-10-30 20:01:18 -04:00
ipx.h
ipx: move extern sysctl_ipx_pprop_broadcasting to header file
2014-10-27 16:03:53 -04:00
iw_handler.h
iw_handler.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
lapb.h
lapb.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
lib80211.h
lib80211: remove unused print_ssid()
2014-10-14 02:18:27 +02:00
llc.h
llc: make lock static
2014-01-03 20:56:48 -05:00
llc_c_ac.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_c_ev.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_c_st.h
llc_conn.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_if.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_pdu.h
net: llc: fix order of evaluation in llc_conn_ac_inc_vr_by_1
2014-01-01 22:22:43 -05:00
llc_s_ac.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_s_ev.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_s_st.h
llc_sap.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
mac80211.h
mac80211: replace restart_complete() with reconfig_complete()
2014-11-04 13:49:00 +01:00
mac802154.h
mac802154: rx: add software checksum filtering check
2014-10-29 23:07:45 +01:00
mip6.h
include/net/: Fix FSF address in file headers
2013-12-06 12:37:56 -05:00
mld.h
ipv6: mld: answer mldv2 queries with mldv1 reports in mldv1 fallback
2014-09-22 16:23:15 -04:00
mpls.h
openvswitch: Add basic MPLS support to kernel
2014-11-05 23:52:33 -08:00
mrp.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-10-01 17:06:14 -04:00
ndisc.h
ndisc.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
neighbour.h
neigh: optimize neigh_parms_release()
2014-10-29 16:11:50 -04:00
net_namespace.h
ipv6: remove rt6i_genid
2014-09-30 14:00:48 -04:00
net_ratelimit.h
netevent.h
netevent/netlink.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
netlabel.h
netlabel: fix the netlbl_catmap_setlong() dummy function
2014-08-07 20:55:21 -04:00
netlink.h
datapath: Rename last_action() as nla_is_last() and move to netlink.h
2014-10-28 17:07:29 -04:00
netprio_cgroup.h
cgroup: clean up cgroup_subsys names and initialization
2014-02-08 10:36:58 -05:00
netrom.h
netrom.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
nexthop.h
nl802154.h
ieee802154: mac802154: remove FSF address
2014-10-25 08:07:30 +02:00
p8022.h
p8022.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
ping.h
ipv6: make IPV6_RECVPKTINFO work for ipv4 datagrams
2014-01-19 19:53:18 -08:00
pkt_cls.h
net: sched: remove tcf_proto from ematch calls
2014-10-06 18:02:32 -04:00
pkt_sched.h
net: sched: avoid costly atomic operation in fq_dequeue()
2014-10-06 00:55:10 -04:00
protocol.h
net: Eliminate no_check from protosw
2014-05-23 16:28:53 -04:00
psnap.h
psnap.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
raw.h
raw/rawv6.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
rawv6.h
raw/rawv6.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
red.h
reciprocal_divide: update/correction of the algorithm
2014-01-21 23:17:20 -08:00
regulatory.h
regulatory: add NUL to alpha2
2014-08-15 13:51:40 +02:00
request_sock.h
inet: includes a sock_common in request_sock
2013-10-10 00:08:07 -04:00
rose.h
rose.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
route.h
ipv4: remove ip_rt_dump from route.c
2014-03-24 12:45:01 -04:00
rtnetlink.h
net: rtnetlink - make create_link take name_assign_type
2014-07-15 16:13:07 -07:00
sch_generic.h
qdisc: bulk dequeue support for qdiscs with TCQ_F_ONETXQUEUE
2014-10-03 12:37:06 -07:00
scm.h
scm.h: Remove extern from function prototypes
2013-09-23 01:51:09 -04:00
secure_seq.h
inetpeer: get rid of ip_id_count
2014-06-02 11:00:41 -07:00
slhc_vj.h
snmp.h
Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2014-10-15 07:48:18 +02:00
sock.h
net: introduce SO_INCOMING_CPU
2014-11-11 13:00:06 -05:00
Space.h
drivers: net: Include new header file in sbni.c
2013-12-19 18:51:20 -05:00
stp.h
stp.h: Remove extern from function prototypes
2013-09-23 01:51:09 -04:00
tcp.h
net: allow setting ecn via routing table
2014-11-04 16:06:09 -05:00
tcp_memcontrol.h
tcp_memcontrol: Kill struct tcp_memcontrol
2013-10-21 18:43:02 -04:00
tcp_states.h
timewait_sock.h
transp_v6.h
ipv6: make IPV6_RECVPKTINFO work for ipv4 datagrams
2014-01-19 19:53:18 -08:00
tso.h
net: Add a software TSO helper API
2014-05-22 14:57:15 -04:00
udp.h
udp: Generalize skb_udp_segment
2014-10-01 21:35:51 -04:00
udp_tunnel.h
udp-tunnel: Add a few more UDP tunnel APIs
2014-09-19 15:57:15 -04:00
udplite.h
udplite.h: Remove extern from function prototypes
2013-09-23 16:29:40 -04:00
vsock_addr.h
VSOCK: Move af_vsock.h and vsock_addr.h to include/net
2013-07-27 22:14:06 -07:00
vxlan.h
vxlan: Call udp_flow_src_port
2014-07-07 21:14:21 -07:00
wext.h
wext.h: Remove extern from function prototypes
2013-09-23 16:29:40 -04:00
wimax.h
net: treewide: Fix typo found in DocBook/networking.xml
2014-09-05 17:35:28 -07:00
x25.h
x25.h: Remove extern from function prototypes
2013-09-23 16:29:41 -04:00
x25device.h
xfrm.h
xfrm: configure policy hash table thresholds by netlink
2014-09-02 13:37:56 +02:00