[PATCH v3 9/9] net/gve: restrict max ring size in GQ QPL to 2K
Joshua Washington
joshwash at google.com
Wed Jul 8 00:13:21 CEST 2026
On Tue, Jul 7, 2026 at 12:40 PM Joshua Washington <joshwash at google.com> wrote:
>
> The GQ QPL queue format has a maximum supported ring size of 2k.
> However, it is possible in some cases for the device to pass a larger
> ring size as the max ring size. Restrict the ring size in the driver to
> ensure that rings with invalid queue depths are not created.
>
> Fixes: cde01d164f8f ("net/gve: support modifying ring size in GQ format")
> Cc: stable at dpdk.org
> Signed-off-by: Joshua Washington <joshwash at google.com>
> Reviewed-by: Jasper Tran O'Leary <jtranoleary at google.com>
> ---
> drivers/net/gve/base/gve_adminq.c | 12 +++++++++---
> drivers/net/gve/gve_ethdev.h | 1 +
> 2 files changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/gve/base/gve_adminq.c b/drivers/net/gve/base/gve_adminq.c
> index 2b25c7f390..315e2456fd 100644
> --- a/drivers/net/gve/base/gve_adminq.c
> +++ b/drivers/net/gve/base/gve_adminq.c
> @@ -6,6 +6,7 @@
> #include "../gve_ethdev.h"
> #include "gve_adminq.h"
> #include "gve_register.h"
> +#include "rte_common.h"
Looks like I forgot to fix the include formatting here. I will fix in
the next revision.
>
> #define GVE_MAX_ADMINQ_RELEASE_CHECK 500
> #define GVE_ADMINQ_SLEEP_LEN 20
> @@ -946,15 +947,20 @@ static void
> gve_set_max_desc_cnt(struct gve_priv *priv,
> const struct gve_device_option_modify_ring *modify_ring)
> {
> + priv->max_rx_desc_cnt = be16_to_cpu(modify_ring->max_ring_size.rx);
> + priv->max_tx_desc_cnt = be16_to_cpu(modify_ring->max_ring_size.tx);
> +
> if (priv->queue_format == GVE_DQO_RDA_FORMAT) {
> PMD_DRV_LOG(DEBUG, "Overriding max ring size from device for DQ "
> "queue format to 4096.");
> priv->max_rx_desc_cnt = GVE_MAX_QUEUE_SIZE_DQO;
> priv->max_tx_desc_cnt = GVE_MAX_QUEUE_SIZE_DQO;
> - return;
> + } else if (priv->queue_format == GVE_GQI_QPL_FORMAT) {
> + priv->max_rx_desc_cnt = RTE_MIN(priv->max_rx_desc_cnt,
> + GVE_MAX_RING_SIZE_GQ_QPL);
> + priv->max_tx_desc_cnt = RTE_MIN(priv->max_tx_desc_cnt,
> + GVE_MAX_RING_SIZE_GQ_QPL);
> }
> - priv->max_rx_desc_cnt = be16_to_cpu(modify_ring->max_ring_size.rx);
> - priv->max_tx_desc_cnt = be16_to_cpu(modify_ring->max_ring_size.tx);
> }
>
> static void gve_enable_supported_features(struct gve_priv *priv,
> diff --git a/drivers/net/gve/gve_ethdev.h b/drivers/net/gve/gve_ethdev.h
> index 4a7e5ecdf3..c9a176ff17 100644
> --- a/drivers/net/gve/gve_ethdev.h
> +++ b/drivers/net/gve/gve_ethdev.h
> @@ -21,6 +21,7 @@
> #define DQO_TX_MULTIPLIER 4
>
> #define GVE_DEFAULT_MAX_RING_SIZE 1024
> +#define GVE_MAX_RING_SIZE_GQ_QPL 2048
> #define GVE_DEFAULT_MIN_RX_RING_SIZE 512
> #define GVE_DEFAULT_MIN_TX_RING_SIZE 256
>
> --
> 2.55.0.rc2.803.g1fd1e6609c-goog
>
--
Joshua Washington | Software Engineer | joshwash at google.com | (414) 366-4423
More information about the stable
mailing list