net/mlx5: fix drop action in tunnel offload mode
authorGregory Etelson <getelson@nvidia.com>
Wed, 20 Jan 2021 19:17:10 +0000 (21:17 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 29 Jan 2021 17:16:08 +0000 (18:16 +0100)
Tunnel offload mode allows application to restore partially offloaded
tunneled packets to its original state.
The mode was designed to optimize packet recovery. It must not
block flow actions that are allowed by MLX5 PMD.

The patch allows tunnel offload match rules to use drop flow action.

Fixes: 4ec6360de37d ("net/mlx5: implement tunnel offload")
Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
drivers/net/mlx5/mlx5_flow_dv.c

index faafc92..9ffd6ec 100644 (file)
@@ -6228,8 +6228,11 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
         * Validate the drop action mutual exclusion with other actions.
         * Drop action is mutually-exclusive with any other action, except for
         * Count action.
+        * Drop action compatibility with tunnel offload was already validated.
         */
-       if ((action_flags & MLX5_FLOW_ACTION_DROP) &&
+       if (action_flags & (MLX5_FLOW_ACTION_TUNNEL_MATCH |
+                           MLX5_FLOW_ACTION_TUNNEL_MATCH));
+       else if ((action_flags & MLX5_FLOW_ACTION_DROP) &&
            (action_flags & ~(MLX5_FLOW_ACTION_DROP | MLX5_FLOW_ACTION_COUNT)))
                return rte_flow_error_set(error, EINVAL,
                                          RTE_FLOW_ERROR_TYPE_ACTION, NULL,