All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.