mirror of
https://github.com/torvalds/linux.git
synced 2026-05-13 00:28:54 +02:00
macvlan: avoid spinlock contention in macvlan_broadcast_enqueue()
Under high stress, we spend a lot of time cloning skbs, then acquiring a spinlock, then freeing the clone because the queue is full. Add a shortcut to avoid these costs under pressure. Signed-off-by: Eric Dumazet <edumazet@google.com> Link: https://patch.msgid.link/20260401103809.3038139-3-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
1ef5789d99
commit
0d5dc1d7aa
|
|
@ -360,6 +360,9 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port,
|
|||
struct sk_buff *nskb;
|
||||
int err = -ENOMEM;
|
||||
|
||||
if (skb_queue_len_lockless(&port->bc_queue) >= bc_queue_len_used)
|
||||
goto err;
|
||||
|
||||
nskb = skb_clone(skb, GFP_ATOMIC);
|
||||
if (!nskb)
|
||||
goto err;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user