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

Reply via email to