The flow sample/mirror action includes sub-actions for the
duplicated packet.
In SW steering case, dv_flow_en=1, there is a FW limitation
that forces configuring also encap action when port action
for the wire port is configured in the duplicated packet's
sub-actions.

The driver did a wrong validation for the above limitation
and forced other actions instead of encap for the wire port.
Force only encap action in case of wire port.

This patch fixes the wrongly checking for the sample encap action.

Fixes: a8697f50f50f ("net/mlx5: fix E-Switch mirror flow rule validation")
Cc: sta...@dpdk.org

Signed-off-by: Jiawei Wang <jiaw...@nvidia.com>
Acked-by: Matan Azrad <ma...@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow_dv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 154e509707..9753af2cb1 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -8721,7 +8721,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct 
rte_flow_attr *attr,
                                                                
RTE_FLOW_ERROR_TYPE_ACTION, NULL,
                                                                "mirror to rep 
port with encap is not supported");
                        } else {
-                               if ((sub_action_flags & 
~MLX5_FLOW_ACTION_ENCAP) &&
+                               if (!(sub_action_flags & 
MLX5_FLOW_ACTION_ENCAP) &&
                                    (action_flags & MLX5_FLOW_ACTION_JUMP))
                                        return rte_flow_error_set(error, 
ENOTSUP,
                                                                
RTE_FLOW_ERROR_TYPE_ACTION, NULL,
-- 
2.18.1

Reply via email to