From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id 811431B4D3 for ; Thu, 27 Sep 2018 16:52:15 +0200 (CEST) Received: from Internal Mail-Server by MTLPINE1 (envelope-from dekelp@mellanox.com) with ESMTPS (AES256-SHA encrypted); 27 Sep 2018 16:56:43 +0200 Received: from mtl-vdi-280.wap.labs.mlnx. (mtl-vdi-280.wap.labs.mlnx [10.128.130.87]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id w8REq7gK013802; Thu, 27 Sep 2018 17:52:10 +0300 From: Dekel Peled To: dev@dpdk.org, shahafs@mellanox.com, yskoh@mellanox.com Cc: orika@mellanox.com Date: Thu, 27 Sep 2018 17:50:43 +0300 Message-Id: <1538059845-35896-3-git-send-email-dekelp@mellanox.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1538059845-35896-1-git-send-email-dekelp@mellanox.com> References: <1538059845-35896-1-git-send-email-dekelp@mellanox.com> Subject: [dpdk-dev] [PATCH 2/4] net/mlx5: add definitions for DV encap and decap X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Sep 2018 14:52:16 -0000 This patch add the required definitions for DV encap/decap actions. It also adds usage of the new actions definition in validation function of existing drop operation. Signed-off-by: Dekel Peled --- drivers/net/mlx5/mlx5_flow.c | 10 ++++++++++ drivers/net/mlx5/mlx5_flow.h | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 79a06df..fed0d29 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -768,6 +768,16 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority, RTE_FLOW_ERROR_TYPE_ACTION, NULL, "can't have 2 fate actions in" " same flow"); + if (action_flags & (MLX5_ACTION_TUNNEL_DECAP | + MLX5_ACTION_TUNNEL_DECAP_L3 | + MLX5_ACTION_TUNNEL_ENCAP | + MLX5_ACTION_TUNNEL_ENCAP_L3)) + return rte_flow_error_set(error, + ENOTSUP, + RTE_FLOW_ERROR_TYPE_ACTION, + NULL, + "can't encap or decap and drop in" + " same flow"); if (attr->egress) return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ATTR_EGRESS, diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index a353d07..4a4f923 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -90,6 +90,10 @@ #define MLX5_ACTION_OF_PUSH_VLAN (1u << 8) #define MLX5_ACTION_OF_SET_VLAN_VID (1u << 9) #define MLX5_ACTION_OF_SET_VLAN_PCP (1u << 10) +#define MLX5_ACTION_TUNNEL_ENCAP (1u << 11) +#define MLX5_ACTION_TUNNEL_DECAP (1u << 12) +#define MLX5_ACTION_TUNNEL_ENCAP_L3 (1u << 13) +#define MLX5_ACTION_TUNNEL_DECAP_L3 (1u << 14) /* possible L3 layers protocols filtering. */ #define MLX5_IP_PROTOCOL_TCP 6 @@ -175,6 +179,9 @@ struct mlx5_flow_dv { #ifdef HAVE_IBV_FLOW_DV_SUPPORT struct mlx5dv_flow_action_attr actions[MLX5_DV_MAX_NUMBER_OF_ACTIONS]; /**< Action list. */ + + struct ibv_flow_action *encap_verb; /**< Verbs object of encap. */ + struct ibv_flow_action *decap_verb; /**< Verbs object of decap. */ #endif int actions_n; /**< number of actions. */ }; -- 1.8.3.1