This series adds support for proactive device reset
(RTE_ETH_ERROR_HANDLE_MODE_PROACTIVE) to the GVE driver, replacing the
existing passive reset implementation. When the device requests a reset,
the driver now automatically recovers the control plane and recreates RX
and TX queues without requiring the application to manually reconfigure
the port.
To support automatic recovery safely while traffic is running, this
series:
- Fixes a pre-existing leak of the flow subsystem on device init
failure.
- Saves RX and TX queue setup parameters and versions queue memzone
names by reset generation so queues can be recreated before old queue
memory is freed.
- Defers freeing retired queue memory ("zombie" queues) until after a
grace period so concurrent datapath threads can safely drain after
packet burst functions are redirected to dummy handlers.
- Splits device resource setup and teardown into host memory allocation
and hardware configuration so host DMA memory can be kept across
resets and re-registered with the device.
- Adds a reset mutex and moves device status polling off the shared DPDK
alarm/interrupt thread onto a dedicated control thread.
- Implements proactive recovery and emits the standard DPDK recovery
lifecycle events (RTE_ETH_EVENT_ERR_RECOVERING,
RTE_ETH_EVENT_RECOVERY_SUCCESS, and RTE_ETH_EVENT_RECOVERY_FAILED).
Jasper Tran O'Leary (8):
net/gve: free flow subsystem on dev init failure
net/gve: snapshot queue configurations
net/gve: add deferred queue memory reclamation
net/gve: separate device resource alloc and config
net/gve: add dedicated mutex for device reset
net/gve: add check for device reset to AQ ctrl ops
net/gve: implement proactive device reset
net/gve: remove unused device reset parameter
Joshua Washington (1):
net/gve: move dev status poller to its own thread
doc/guides/nics/gve.rst | 67 +-
doc/guides/rel_notes/release_26_11.rst | 5 +
drivers/net/gve/base/gve.h | 1 +
drivers/net/gve/gve_ethdev.c | 775 ++++++++++++++------
drivers/net/gve/gve_ethdev.h | 87 ++-
drivers/net/gve/gve_rx.c | 36 +-
drivers/net/gve/gve_rx_dqo.c | 36 +-
drivers/net/gve/gve_tx.c | 32 +-
drivers/net/gve/gve_tx_dqo.c | 35 +-
9 files changed, 813 insertions(+), 261 deletions(-)
--
2.56.0.307.g5fe7bd680c-goog