net: better skb->sender_cpu and skb->napi_id cohabitation
authorEric Dumazet <edumazet@google.com>
Wed, 18 Nov 2015 14:30:50 +0000 (06:30 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Nov 2015 21:17:37 +0000 (16:17 -0500)
commit52bd2d62ce6758d811edcbd2256eb9ea7f6a56cb
treea05cc3913f4389700efef15cccf882befbcd6d32
parentd37b4c0a3647db23f41c5ee85701eec3544446d1
net: better skb->sender_cpu and skb->napi_id cohabitation

skb->sender_cpu and skb->napi_id share a common storage,
and we had various bugs about this.

We had to call skb_sender_cpu_clear() in some places to
not leave a prior skb->napi_id and fool netdev_pick_tx()

As suggested by Alexei, we could split the space so that
these errors can not happen.

0 value being reserved as the common (not initialized) value,
let's reserve [1 .. NR_CPUS] range for valid sender_cpu,
and [NR_CPUS+1 .. ~0U] for valid napi_id.

This will allow proper busy polling support over tunnels.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Suggested-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/skbuff.h
net/core/dev.c