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) to avoid 14-bit field wrap-around, and validates header
contiguity and payload presence on TSO packets.
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 | 2 +-
drivers/net/gve/gve_tx_dqo.c | 80 +++++++++++++++++++++--------
3 files changed, 62 insertions(+), 23 deletions(-)
--
2.43.0