From: Tathagat Priyadarshi <tathagat.dpdk@gmail.com>
To: dev@dpdk.org
Cc: joshwash@google.com, stephen@networkplumber.org
Subject: [PATCH v2 0/4] net/gve: fix Tx queue stalls and sync DQO RDA with Linux driver
Date: Tue, 13 Oct 2026 10:43:44 +0000 [thread overview]
Message-ID: <20261013104348.714550-1-tathagat.dpdk@gmail.com> (raw)
In-Reply-To: <20261012105023.669486-1-tathagat.dpdk@gmail.com>
This patch series aligns the Google Virtual NIC (gve) DQO RDA transmit path
with the upstream Linux kernel driver (drivers/net/ethernet/google/gve/) to
resolve transmit queue stalls and hardware validation issues:
1. net/gve: fix DQO descriptor cleaning loop bound
Fixes the off-by-one error in gve_tx_clean_descs_dqo()
("while (--nb_descs)" -> "while (nb_descs--)") and avoids stalling
the completion queue on unrecognized descriptor types.
2. net/gve: fix DQO Tx queue stall on multi-seg and TSO
Tracks descriptor intervals with last_re_idx per packet against
GVE_TX_MIN_RE_INTERVAL (32) instead of counting packets at burst end,
preventing descriptor ring starvation and queue deadlocks under
multi-segment and TSO traffic.
3. net/gve: add cacheline overlap margin to DQO Tx ring
Enforces GVE_TX_MIN_DESC_PREVENT_CACHE_OVERLAP (4 descriptors) margin
in ring space checks, avoiding CPU and device DMA cacheline collisions.
4. net/gve: add packet and TSO hardware constraints for DQO
Augments gve_tx_validate_descs() (which enforces the 10-descriptor
limit per packet or MTU segment) with the remaining hardware length
constraints: [17, 9728] bytes for non-TSO packets, maximum MSS limit
(9728 bytes), TSO total length limit (262143 bytes), and validates
header contiguity and payload presence on TSO packets. Invalid packets
are dropped instead of stalling the queue.
v2:
- Patch 1/4, 3/4: No changes.
- Patch 2/4:
* Write the Tx tail when report_event is set so the device can start
fetching descriptors before the end of the burst
(per Joshua Washington).
* Pop the completion tag before writing the TSO context descriptor.
* Use reverse Christmas tree declaration ordering
(per Joshua Washington).
- Patch 4/4:
* Drop (free) invalid mbufs and continue the burst instead of
returning short, which caused head-of-line blocking
(per Stephen Hemminger).
* Validate packets before the ring space check.
* Exclude dropped packets from stats.packets.
* Rename too_many_descs to dropped_pkts since it now counts all
dropped packets (per Stephen Hemminger).
* Use a single GVE_TX_MAX_PKT_SIZE_DQO for the max packet size and
max MSS (per Joshua Washington).
* Declare seg_remain and mbuf_remain in the smallest scope
(per Joshua Washington).
* Reject packets whose descriptor count can never fit in the Tx ring.
* Enforce the TSO total length limit (262143 bytes).
* Add Fixes tag for the original DQO Tx path (per Stephen Hemminger).
Tathagat Priyadarshi (4):
net/gve: fix DQO descriptor cleaning loop bound
net/gve: fix DQO Tx queue stall on multi-seg and TSO
net/gve: add cacheline overlap margin to DQO Tx ring
net/gve: add packet and TSO hardware constraints for DQO
drivers/net/gve/base/gve_desc_dqo.h | 3 +
drivers/net/gve/gve_ethdev.h | 4 +-
drivers/net/gve/gve_tx_dqo.c | 152 ++++++++++++++++++++--------
3 files changed, 115 insertions(+), 44 deletions(-)
--
2.43.0
next prev parent reply other threads:[~2026-10-13 14:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 10:50 [PATCH 0/4] net/gve: fix TX queue stalls and sync DQO RDA with Linux driver Tathagat Priyadarshi
2026-10-12 10:50 ` [PATCH 1/4] net/gve: fix DQO descriptor cleaning loop bound Tathagat Priyadarshi
2026-10-12 10:50 ` [PATCH 2/4] net/gve: fix DQO TX queue stall on multi-seg and TSO Tathagat Priyadarshi
2026-10-12 18:13 ` Joshua Washington
2026-10-12 10:50 ` [PATCH 3/4] net/gve: add cacheline overlap margin to DQO TX ring Tathagat Priyadarshi
2026-10-12 10:50 ` [PATCH 4/4] net/gve: add packet and TSO hardware constraints for DQO Tathagat Priyadarshi
2026-10-12 19:40 ` Joshua Washington
2026-10-12 21:28 ` [PATCH 0/4] net/gve: fix TX queue stalls and sync DQO RDA with Linux driver Stephen Hemminger
2026-10-13 10:43 ` Tathagat Priyadarshi [this message]
2026-10-13 10:43 ` [PATCH v2 1/4] net/gve: fix DQO descriptor cleaning loop bound Tathagat Priyadarshi
2026-10-13 10:43 ` [PATCH v2 2/4] net/gve: fix DQO Tx queue stall on multi-seg and TSO Tathagat Priyadarshi
2026-10-13 10:43 ` [PATCH v2 3/4] net/gve: add cacheline overlap margin to DQO Tx ring Tathagat Priyadarshi
2026-10-13 10:43 ` [PATCH v2 4/4] net/gve: add packet and TSO hardware constraints for DQO Tathagat Priyadarshi
2026-10-13 15:22 ` [PATCH v2 0/4] net/gve: fix Tx queue stalls and sync DQO RDA with Linux driver Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261013104348.714550-1-tathagat.dpdk@gmail.com \
--to=tathagat.dpdk@gmail.com \
--cc=dev@dpdk.org \
--cc=joshwash@google.com \
--cc=stephen@networkplumber.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox