[PATCH v14 17/81] net/mlx5: remove use of VLAs for Windows built code
Andre Muezerie
andremue at linux.microsoft.com
Fri Jan 10 21:22:36 CET 2025
From: Tyler Retzlaff <roretzla at linux.microsoft.com>
MSVC does not support VLAs, replace VLAs with standard C arrays
or alloca(). alloca() is available for all toolchain/platform
combinations officially supported by DPDK.
Signed-off-by: Tyler Retzlaff <roretzla at linux.microsoft.com>
---
drivers/net/meson.build | 8 ++++++++
drivers/net/mlx5/mlx5.c | 5 ++---
drivers/net/mlx5/mlx5_flow.c | 6 +++---
3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/drivers/net/meson.build b/drivers/net/meson.build
index dafd637ba4..170e7339e5 100644
--- a/drivers/net/meson.build
+++ b/drivers/net/meson.build
@@ -68,3 +68,11 @@ drivers = [
std_deps = ['ethdev', 'kvargs'] # 'ethdev' also pulls in mbuf, net, eal etc
std_deps += ['bus_pci'] # very many PMDs depend on PCI, so make std
std_deps += ['bus_vdev'] # same with vdev bus
+
+warning_flags = ['-Wvla']
+
+foreach arg: warning_flags
+ if cc.has_argument(arg)
+ cflags += arg
+ endif
+endforeach
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 6e4473e2f4..979e54686b 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -1598,14 +1598,13 @@ void
mlx5_rt_timestamp_config(struct mlx5_dev_ctx_shared *sh,
struct mlx5_hca_attr *hca_attr)
{
- uint32_t dw_cnt = MLX5_ST_SZ_DW(register_mtutc);
- uint32_t reg[dw_cnt];
+ uint32_t reg[MLX5_ST_SZ_DW(register_mtutc)];
int ret = ENOTSUP;
if (hca_attr->access_register_user)
ret = mlx5_devx_cmd_register_read(sh->cdev->ctx,
MLX5_REGISTER_ID_MTUTC, 0,
- reg, dw_cnt);
+ reg, RTE_DIM(reg));
if (!ret) {
uint32_t ts_mode;
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 16ddd05448..37b5402447 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -1479,8 +1479,8 @@ mlx5_flow_item_acceptable(const struct rte_eth_dev *dev,
"mask/last without a spec is not"
" supported");
if (item->spec && item->last && !range_accepted) {
- uint8_t spec[size];
- uint8_t last[size];
+ uint8_t *spec = alloca(size);
+ uint8_t *last = alloca(size);
unsigned int i;
int ret;
@@ -8477,7 +8477,7 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev,
.type = RTE_FLOW_ITEM_TYPE_END,
},
};
- uint16_t queue[priv->reta_idx_n];
+ uint16_t *queue = alloca(sizeof(uint16_t) * priv->reta_idx_n);
struct rte_flow_action_rss action_rss = {
.func = RTE_ETH_HASH_FUNCTION_DEFAULT,
.level = 0,
--
2.47.0.vfs.0.3
More information about the dev
mailing list