diff options
author | David S. Miller <davem@davemloft.net> | 2014-11-11 13:00:11 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-11-11 13:00:11 -0500 |
commit | b00394c007269183d9f539fa87e65892ac2006e2 (patch) | |
tree | e3c81c868a7c14ca2bac7efd69b6b21e25c355d4 /net/ipv6/tcp_ipv6.c | |
parent | 2e1af7d74f4f7b4d4c1b0fbf5da3b5f92d9c332f (diff) | |
parent | 2c8c56e15df3d4c2af3d656e44feb18789f75837 (diff) | |
download | linux-b00394c007269183d9f539fa87e65892ac2006e2.tar.gz linux-b00394c007269183d9f539fa87e65892ac2006e2.tar.xz |
Merge branch 'so_incoming_cpu'
Eric Dumazet says:
====================
net: SO_INCOMING_CPU support
SO_INCOMING_CPU socket option (read by getsockopt()) provides
an alternative to RPS/RFS for high performance servers using
multi queues NIC.
TCP should use sk_mark_napi_id() for established sockets only.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index ace29b60813c..1985b4933a6b 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -1293,6 +1293,7 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) struct dst_entry *dst = sk->sk_rx_dst; sock_rps_save_rxhash(sk, skb); + sk_mark_napi_id(sk, skb); if (dst) { if (inet_sk(sk)->rx_dst_ifindex != skb->skb_iif || dst->ops->check(dst, np->rx_dst_cookie) == NULL) { @@ -1322,6 +1323,7 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) */ if (nsk != sk) { sock_rps_save_rxhash(nsk, skb); + sk_mark_napi_id(sk, skb); if (tcp_child_process(sk, nsk, skb)) goto reset; if (opt_skb) @@ -1454,7 +1456,7 @@ process: if (sk_filter(sk, skb)) goto discard_and_relse; - sk_mark_napi_id(sk, skb); + sk_incoming_cpu_update(sk); skb->dev = NULL; bh_lock_sock_nested(sk); |