summaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorSridhar Samudrala <sridhar.samudrala@intel.com>2017-03-24 10:08:36 -0700
committerDavid S. Miller <davem@davemloft.net>2017-03-24 20:49:31 -0700
commit6d4339028b350efbf87c61e6d9e113e5373545c9 (patch)
treec80a83afc1d175816d95920e9ea185f4f5f96650 /net/core
parentbf3b9f6372c45b0fbf24d86b8794910d20170017 (diff)
downloadlinux-6d4339028b350efbf87c61e6d9e113e5373545c9.tar.bz2
net: Introduce SO_INCOMING_NAPI_ID
This socket option returns the NAPI ID associated with the queue on which the last frame is received. This information can be used by the apps to split the incoming flows among the threads based on the Rx queue on which they are received. If the NAPI ID actually represents a sender_cpu then the value is ignored and 0 is returned. Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/sock.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/net/core/sock.c b/net/core/sock.c
index 4b762f2a3552..1a58a9dc6888 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1328,6 +1328,18 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
goto lenout;
}
+
+#ifdef CONFIG_NET_RX_BUSY_POLL
+ case SO_INCOMING_NAPI_ID:
+ v.val = READ_ONCE(sk->sk_napi_id);
+
+ /* aggregate non-NAPI IDs down to 0 */
+ if (v.val < MIN_NAPI_ID)
+ v.val = 0;
+
+ break;
+#endif
+
default:
/* We implement the SO_SNDLOWAT etc to not be settable
* (1003.1g 7).