RSS action is valid only in NIC-RX domain, this fix bypass
the function that getting RSS action from the flow action list
under no NIC-RX domain.

Fixes: e745f90 ("net/mlx5: optimize flow RSS struct")
Cc: sta...@dpdk.org

Signed-off-by: Jiawei Wang <jiaw...@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viachesl...@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 2a4073c..0670447 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -5278,7 +5278,7 @@ struct mlx5_hlist_entry *
        struct mlx5_priv *priv = dev->data->dev_private;
        struct rte_flow *flow = NULL;
        struct mlx5_flow *dev_flow;
-       const struct rte_flow_action_rss *rss;
+       const struct rte_flow_action_rss *rss = NULL;
        struct mlx5_translated_shared_action
                shared_actions[MLX5_MAX_SHARED_ACTIONS];
        int shared_actions_n = MLX5_MAX_SHARED_ACTIONS;
@@ -5356,7 +5356,9 @@ struct mlx5_hlist_entry *
        MLX5_ASSERT(flow->drv_type > MLX5_FLOW_TYPE_MIN &&
                    flow->drv_type < MLX5_FLOW_TYPE_MAX);
        memset(rss_desc, 0, offsetof(struct mlx5_flow_rss_desc, queue));
-       rss = flow_get_rss_action(p_actions_rx);
+       /* RSS Action only works on NIC RX domain */
+       if (attr->ingress && !attr->transfer)
+               rss = flow_get_rss_action(p_actions_rx);
        if (rss) {
                if (flow_rss_workspace_adjust(wks, rss_desc, rss->queue_num))
                        return 0;
-- 
1.8.3.1

Reply via email to