Re: [RFC net-next 2/2] gve: Map NAPI instances to queues

From: Praveen Kaligineedi
Date: Fri Sep 27 2024 - 14:16:03 EST


> diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c
> index 661566db68c8..da811e90bdfa 100644
> --- a/drivers/net/ethernet/google/gve/gve_main.c
> +++ b/drivers/net/ethernet/google/gve/gve_main.c
> @@ -1875,6 +1875,9 @@ static void gve_turndown(struct gve_priv *priv)
>
> if (!gve_tx_was_added_to_block(priv, idx))
> continue;
> +
> + netif_queue_set_napi(priv->dev, idx, NETDEV_QUEUE_TYPE_TX,
> + NULL);
> napi_disable(&block->napi);
> }
When XDP program is installed, the for loop iterates over both
configured TX queues (idx < priv->tx_cfg.num_queues) as well as
dedicated XDP TX queues ( idx >= priv->tx_cfg.num_queues).
Should add if (idx < priv->tx_cfg.num_queues) check here.

> @@ -1909,6 +1915,9 @@ static void gve_turnup(struct gve_priv *priv)
> continue;
>
> napi_enable(&block->napi);
> + netif_queue_set_napi(priv->dev, idx, NETDEV_QUEUE_TYPE_TX,
> + &block->napi);
> +
> if (gve_is_gqi(priv)) {
> iowrite32be(0, gve_irq_doorbell(priv, block));
> } else {

Same as above. When XDP program is installed, the for loop iterates
over both configured TX queues (idx < priv->tx_cfg.num_queues) as
well as dedicated XDP TX queues ( idx >= priv->tx_cfg.num_queues)