]> git.ipfire.org Git - thirdparty/linux.git/commit
net: add net.core.qdisc_max_burst
authorEric Dumazet <edumazet@google.com>
Wed, 7 Jan 2026 10:41:59 +0000 (10:41 +0000)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 13 Jan 2026 09:12:11 +0000 (10:12 +0100)
commitffe4ccd359d006eba559cb1a3c6113144b7fb38c
tree00547b3df467260871b935d0fb3347f3c556c026
parentdfdf774656205515b2d6ad94fce63c7ccbe92d91
net: add net.core.qdisc_max_burst

In blamed commit, I added a check against the temporary queue
built in __dev_xmit_skb(). Idea was to drop packets early,
before any spinlock was acquired.

if (unlikely(defer_count > READ_ONCE(q->limit))) {
kfree_skb_reason(skb, SKB_DROP_REASON_QDISC_DROP);
return NET_XMIT_DROP;
}

It turned out that HTB Qdisc has a zero q->limit.
HTB limits packets on a per-class basis.
Some of our tests became flaky.

Add a new sysctl : net.core.qdisc_max_burst to control
how many packets can be stored in the temporary lockless queue.

Also add a new QDISC_BURST_DROP drop reason to better diagnose
future issues.

Thanks Neal !

Fixes: 100dfa74cad9 ("net: dev_queue_xmit() llist adoption")
Reported-and-bisected-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
Link: https://patch.msgid.link/20260107104159.3669285-1-edumazet@google.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Documentation/admin-guide/sysctl/net.rst
include/net/dropreason-core.h
include/net/hotdata.h
net/core/dev.c
net/core/hotdata.c
net/core/sysctl_net_core.c