Flow sampling is dependent on rdma-core support. The definitions which enable sampling code are HAVE_MLX5_DR_CREATE_ACTION_FLOW_SAMPLE and HAVE_MLX5_DR_CREATE_ACTION_DEST_ARRAY. This commit expands these definitions to more functions which use sampling logic and structs: flow_dv_sample_resource_register, flow_dv_dest_array_resource_register, flow_dv_sample_resource_release, flow_dv_dest_array_resource_release. Hence any system without the required rdma-core support will not compile or execute redundant sampling code.
Fixes: eb7368b0109a ("net/mlx5: update translate function for sample action") Fixes: e8a1d23ae9a8 ("net/mlx5: update translate function for mirror") Cc: sta...@dpdk.org Signed-off-by: Ophir Munk <ophi...@nvidia.com> --- drivers/net/mlx5/mlx5_flow_dv.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index dafe07f..2560559 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -8629,6 +8629,7 @@ flow_dv_sample_resource_register(struct rte_eth_dev *dev, void **sample_dv_actions, struct rte_flow_error *error) { +#ifdef HAVE_MLX5_DR_CREATE_ACTION_FLOW_SAMPLE struct mlx5_flow_dv_sample_resource *cache_resource; struct mlx5dv_dr_flow_sampler_attr sampler_attr; struct mlx5_priv *priv = dev->data->dev_private; @@ -8746,6 +8747,17 @@ flow_dv_sample_resource_register(struct rte_eth_dev *dev, dev_flow->handle->dvh.rix_sample); dev_flow->handle->dvh.rix_sample = 0; return -rte_errno; +#else + RTE_SET_USED(dev); + RTE_SET_USED(attr); + RTE_SET_USED(resource); + RTE_SET_USED(dev_flow); + RTE_SET_USED(sample_dv_actions); + RTE_SET_USED(error); + DRV_LOG(ERR, "Sample resource registration is not supported."); + rte_errno = ENOTSUP; + return -ENOTSUP; +#endif /* HAVE_MLX5_DR_CREATE_ACTION_FLOW_SAMPLE */ } /** @@ -8772,6 +8784,7 @@ flow_dv_dest_array_resource_register(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, struct rte_flow_error *error) { +#ifdef HAVE_MLX5_DR_CREATE_ACTION_DEST_ARRAY struct mlx5_flow_dv_dest_array_resource *cache_resource; struct mlx5dv_dr_action_dest_attr *dest_attr[MLX5_MAX_DEST_NUM] = { 0 }; struct mlx5dv_dr_action_dest_reformat dest_reformat[MLX5_MAX_DEST_NUM]; @@ -8894,6 +8907,16 @@ flow_dv_dest_array_resource_register(struct rte_eth_dev *dev, dev_flow->handle->dvh.rix_dest_array); dev_flow->handle->dvh.rix_dest_array = 0; return -rte_errno; +#else + RTE_SET_USED(dev); + RTE_SET_USED(attr); + RTE_SET_USED(resource); + RTE_SET_USED(dev_flow); + RTE_SET_USED(error); + DRV_LOG(ERR, "Dest array resource registration is not supported."); + rte_errno = ENOTSUP; + return -ENOTSUP; +#endif /* HAVE_MLX5_DR_CREATE_ACTION_DEST_ARRAY */ } /** @@ -10758,6 +10781,7 @@ static int flow_dv_sample_resource_release(struct rte_eth_dev *dev, struct mlx5_flow_handle *handle) { +#ifdef HAVE_MLX5_DR_CREATE_ACTION_FLOW_SAMPLE struct mlx5_priv *priv = dev->data->dev_private; uint32_t idx = handle->dvh.rix_sample; struct mlx5_flow_dv_sample_resource *cache_resource; @@ -10807,6 +10831,12 @@ flow_dv_sample_resource_release(struct rte_eth_dev *dev, return 0; } return 1; +#else + RTE_SET_USED(dev); + RTE_SET_USED(handle); + DRV_LOG(ERR, "Sample resource release is not supported."); + return 0; +#endif /* HAVE_MLX5_DR_CREATE_ACTION_FLOW_SAMPLE */ } /** @@ -10824,6 +10854,7 @@ static int flow_dv_dest_array_resource_release(struct rte_eth_dev *dev, struct mlx5_flow_handle *handle) { +#ifdef HAVE_MLX5_DR_CREATE_ACTION_DEST_ARRAY struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_dv_dest_array_resource *cache_resource; struct mlx5_flow_sub_actions_idx *mdest_act_res; @@ -10875,6 +10906,12 @@ flow_dv_dest_array_resource_release(struct rte_eth_dev *dev, return 0; } return 1; +#else + RTE_SET_USED(dev); + RTE_SET_USED(handle); + DRV_LOG(ERR, "Dest array resource release is not supported."); + return 0; +#endif /* ifdef HAVE_MLX5_DR_CREATE_ACTION_DEST_ARRAY */ } /** -- 2.8.4