netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next V2 0/2] veth: qdisc backpressure and qdisc check refactor
@ 2025-04-08 15:31 Jesper Dangaard Brouer
  2025-04-08 15:31 ` [PATCH net-next V2 1/2] veth: apply qdisc backpressure on full ptr_ring to reduce TX drops Jesper Dangaard Brouer
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Jesper Dangaard Brouer @ 2025-04-08 15:31 UTC (permalink / raw)
  To: netdev, Jakub Kicinski
  Cc: Jesper Dangaard Brouer, bpf, tom, Eric Dumazet, David S. Miller,
	Paolo Abeni, Toke Høiland-Jørgensen, dsahern,
	makita.toshiaki, kernel-team

This series addresses TX drops observed in production when using veth
devices with threaded NAPI, and refactors a common qdisc check into a
shared helper.

In threaded NAPI mode, packet drops can occur when the ptr_ring backing
the veth peer fills up. This is typically due to a combination of
scheduling delays and the consumer (NAPI thread) being slower than the
producer. When the ring overflows, packets are dropped in veth_xmit().

Patch 1 introduces a backpressure mechanism: when the ring is full, the
driver returns NETDEV_TX_BUSY, signaling the qdisc layer to requeue the
packet. This allows Active Queue Management (AQM) - such as fq or sfq -
to spread traffic more fairly across flows and reduce damage from
elephant flows.

To minimize invasiveness, this backpressure behavior is only enabled when
a qdisc is attached. If no qdisc is present, the driver retains its
original behavior (dropping packets on a full ring), avoiding behavior
changes for configurations without a qdisc.

Detecting the presence of a "real" qdisc relies on a check that is
already duplicated across multiple drivers (e.g., veth, vrf). Patch-2
consolidates this logic into a new helper, qdisc_txq_is_noop(), to avoid
duplication and clarify intent.

---

Jesper Dangaard Brouer (2):
      veth: apply qdisc backpressure on full ptr_ring to reduce TX drops
      net: sched: generalize check for no-op qdisc


 drivers/net/veth.c        | 49 ++++++++++++++++++++++++++++++++-------
 drivers/net/vrf.c         |  3 +--
 include/net/sch_generic.h |  7 +++++-
 3 files changed, 48 insertions(+), 11 deletions(-)

--


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-04-11 14:32 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-08 15:31 [PATCH net-next V2 0/2] veth: qdisc backpressure and qdisc check refactor Jesper Dangaard Brouer
2025-04-08 15:31 ` [PATCH net-next V2 1/2] veth: apply qdisc backpressure on full ptr_ring to reduce TX drops Jesper Dangaard Brouer
2025-04-11 12:45   ` Simon Horman
2025-04-11 13:56     ` Jesper Dangaard Brouer
2025-04-11 14:32       ` Toke Høiland-Jørgensen
2025-04-08 15:31 ` [PATCH net-next V2 2/2] net: sched: generalize check for no-op qdisc Jesper Dangaard Brouer
2025-04-08 15:47   ` Eric Dumazet
2025-04-09 13:28     ` Jesper Dangaard Brouer
2025-04-09 13:47       ` Toke Høiland-Jørgensen
2025-04-11 12:48   ` Simon Horman
2025-04-11 12:59 ` [PATCH net-next V2 0/2] veth: qdisc backpressure and qdisc check refactor Jakub Sitnicki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).