[PATCH 6/9] net/gve: add check for device reset to AQ ctrl ops
Jasper Tran O'Leary
jtranoleary at google.com
Tue Oct 27 19:54:15 CET 2026
Refactor the check for the device needing a reset into a control plane
operation. This will make it easier to add a corresponding Mailbox
operation in subsequent patches.
Signed-off-by: Jasper Tran O'Leary <jtranoleary at google.com>
Reviewed-by: Joshua Washington <joshwash at google.com>
---
drivers/net/gve/gve_ethdev.c | 14 +++++++++++---
drivers/net/gve/gve_ethdev.h | 1 +
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c
index 391e7923f..cfd043dbf 100644
--- a/drivers/net/gve/gve_ethdev.c
+++ b/drivers/net/gve/gve_ethdev.c
@@ -1711,14 +1711,14 @@ gve_set_default_ring_size_bounds(struct gve_priv *priv)
static void
gve_check_device_status(void *arg)
{
+ struct gve_process_private *process_priv;
struct rte_eth_dev *dev = arg;
struct gve_priv *priv = dev->data->dev_private;
- uint32_t dev_status;
int ret;
- dev_status = ioread32be(&priv->reg_bar0->device_status);
+ process_priv = rte_eth_devices[priv->port_id].process_private;
- if (dev_status & GVE_DEVICE_STATUS_RESET_MASK) {
+ if (process_priv->ctrl_ops->check_device_needs_reset(priv)) {
PMD_DRV_LOG(INFO,
"Device on port %u requests a reset. Stopping device status polling.",
dev->data->port_id);
@@ -1783,9 +1783,17 @@ gve_adminq_get_device_properties(struct gve_priv *priv)
return gve_adminq_describe_device(priv);
}
+static bool
+gve_adminq_check_device_needs_reset(struct gve_priv *priv)
+{
+ uint32_t dev_status = ioread32be(&priv->reg_bar0->device_status);
+ return (dev_status & GVE_DEVICE_STATUS_RESET_MASK) != 0;
+}
+
static const struct gve_ctrl_ops gve_adminq_ops = {
.init_ctrl_plane = gve_adminq_alloc,
.free_ctrl_plane = gve_adminq_free,
+ .check_device_needs_reset = gve_adminq_check_device_needs_reset,
.get_device_properties = gve_adminq_get_device_properties,
.get_ptype_map = gve_adminq_get_ptype_map_dqo,
.get_interrupt_dbs = gve_adminq_configure_device_resources,
diff --git a/drivers/net/gve/gve_ethdev.h b/drivers/net/gve/gve_ethdev.h
index d16db54a8..495b60c11 100644
--- a/drivers/net/gve/gve_ethdev.h
+++ b/drivers/net/gve/gve_ethdev.h
@@ -307,6 +307,7 @@ struct gve_txq_config {
struct gve_ctrl_ops {
int (*init_ctrl_plane)(struct gve_priv *priv);
void (*free_ctrl_plane)(struct gve_priv *priv);
+ bool (*check_device_needs_reset)(struct gve_priv *priv);
int (*get_device_properties)(struct gve_priv *priv);
int (*get_ptype_map)(struct gve_priv *priv);
int (*get_interrupt_dbs)(struct gve_priv *priv);
--
2.56.0.307.g5fe7bd680c-goog
More information about the dev
mailing list