diff options
author | Jakub Kicinski <kuba@kernel.org> | 2021-09-23 20:19:49 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-09-23 20:19:49 +0200 |
commit | 2fcd14d0f78090f57aecd7f424e2b0373cd631a7 (patch) | |
tree | f8946c307a3b5d319c17ec988d8a38c0fe7a08de /net/core/dev.c | |
parent | net: dsa: sja1105: stop using priv->vlan_aware (diff) | |
parent | Merge tag 'net-5.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/net... (diff) | |
download | linux-2fcd14d0f78090f57aecd7f424e2b0373cd631a7.tar.xz linux-2fcd14d0f78090f57aecd7f424e2b0373cd631a7.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
net/mptcp/protocol.c
977d293e23b4 ("mptcp: ensure tx skbs always have the MPTCP ext")
efe686ffce01 ("mptcp: ensure tx skbs always have the MPTCP ext")
same patch merged in both trees, keep net-next.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index f930329f0dc2..62ddd7d6e00d 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6925,12 +6925,16 @@ EXPORT_SYMBOL(napi_disable); */ void napi_enable(struct napi_struct *n) { - BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state)); - smp_mb__before_atomic(); - clear_bit(NAPI_STATE_SCHED, &n->state); - clear_bit(NAPI_STATE_NPSVC, &n->state); - if (n->dev->threaded && n->thread) - set_bit(NAPI_STATE_THREADED, &n->state); + unsigned long val, new; + + do { + val = READ_ONCE(n->state); + BUG_ON(!test_bit(NAPI_STATE_SCHED, &val)); + + new = val & ~(NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC); + if (n->dev->threaded && n->thread) + new |= NAPIF_STATE_THREADED; + } while (cmpxchg(&n->state, val, new) != val); } EXPORT_SYMBOL(napi_enable); |