On Mon, 2013-05-27 at 10:44 +0300, Eliezer Tamir wrote:
diff --git a/include/net/sock.h b/include/net/sock.h
index 66772cf..c7c3ea6 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -281,6 +281,7 @@ struct cg_proto;
* @sk_error_report: callback to indicate errors (e.g. %MSG_ERRQUEUE)
* @sk_backlog_rcv: callback to process the backlog
* @sk_destruct: called at sock freeing time, i.e. when all refcnt == 0
+ * @sk_napi_id: id of the last napi context to receive data for sk
*/
struct sock {
/*
@@ -399,6 +400,9 @@ struct sock {
int (*sk_backlog_rcv)(struct sock *sk,
struct sk_buff *skb);
void (*sk_destruct)(struct sock *sk);
+#ifdef CONFIG_NET_LL_RX_POLL
+ unsigned int sk_napi_id;
+#endif
};
I believe this is a bad choice for data locality.
I would rather move it in the same cache line than sk_rxhash