Message ID | 0211e6063d0146111a9351299e52d39ad36d3735.1612346797.git.dekelp@nvidia.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Raslan Darawsheh |
Headers | show |
Series | net/mlx5: fix check of shared RSS capability | expand |
Context | Check | Description |
---|---|---|
ci/iol-testing | warning | Testing issues |
ci/iol-abi-testing | success | Testing PASS |
ci/intel-Testing | success | Testing PASS |
ci/iol-intel-Performance | success | Performance Testing PASS |
ci/iol-broadcom-Functional | success | Functional Testing PASS |
ci/iol-broadcom-Performance | success | Performance Testing PASS |
ci/Intel-compilation | success | Compilation OK |
ci/checkpatch | success | coding style OK |
Hi, > -----Original Message----- > From: dev <dev-bounces@dpdk.org> On Behalf Of Dekel Peled > Sent: Wednesday, February 3, 2021 12:09 PM > To: Matan Azrad <matan@nvidia.com>; Shahaf Shuler > <shahafs@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com> > Cc: dev@dpdk.org; stable@dpdk.org > Subject: [dpdk-dev] [PATCH] net/mlx5: fix check of shared RSS capability > > Existing code to create shared RSS action doesn't fully check > driver capabilities. > Using older driver, if DevX capabilities are insufficient, > the IBV operations are used. > In this case the ind_table_modify operation is not supported, and > shared RSS action can't be modified after creation. > > This patch adds check of driver capability, and fails the validation > for shared RSS action in case it is insufficient. > > Fixes: d2046c09aa64 ("net/mlx5: support shared action for RSS") > Cc: stable@dpdk.org > > Signed-off-by: Dekel Peled <dekelp@nvidia.com> > Acked-by: Matan Azrad <matan@nvidia.com> > --- Patch applied to next-net-mlx, Kindest regards Raslan Darawsheh
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index e0874e3f5f..c14298306c 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -12920,6 +12920,10 @@ __flow_dv_action_rss_update(struct rte_eth_dev *dev, uint32_t idx, return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, NULL, "invalid shared action to update"); + if (priv->obj_ops.ind_table_modify == NULL) + return rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ACTION, NULL, + "cannot modify indirection table"); queue = mlx5_malloc(MLX5_MEM_ZERO, RTE_ALIGN_CEIL(queue_size, sizeof(void *)), 0, SOCKET_ID_ANY); @@ -13802,6 +13806,20 @@ flow_dv_action_validate(struct rte_eth_dev *dev, RTE_SET_USED(conf); switch (action->type) { case RTE_FLOW_ACTION_TYPE_RSS: + /* + * priv->obj_ops is set according to driver capabilities. + * When DevX capabilities are + * sufficient, it is set to devx_obj_ops. + * Otherwise, it is set to ibv_obj_ops. + * ibv_obj_ops doesn't support ind_table_modify operation. + * In this case the shared RSS action can't be used. + */ + if (priv->obj_ops.ind_table_modify == NULL) + return rte_flow_error_set + (err, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ACTION, + NULL, + "shared RSS action not supported"); return mlx5_validate_action_rss(dev, action, err); case RTE_FLOW_ACTION_TYPE_AGE: if (!priv->sh->aso_age_mng)