From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 28FB1A09FF; Mon, 28 Dec 2020 13:41:44 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B6C8FCB93; Mon, 28 Dec 2020 13:34:15 +0100 (CET) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id 7E556CA5C for ; Mon, 28 Dec 2020 13:33:37 +0100 (CET) Received: from Internal Mail-Server by MTLPINE1 (envelope-from talshn@nvidia.com) with SMTP; 28 Dec 2020 14:33:35 +0200 Received: from nvidia.com (l-wincomp04-vm.mtl.labs.mlnx [10.237.1.5]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 0BSCXWnf001295; Mon, 28 Dec 2020 14:33:34 +0200 From: Tal Shnaiderman To: dev@dpdk.org Cc: thomas@monjalon.net, matan@nvidia.com, rasland@nvidia.com, ophirmu@nvidia.com Date: Mon, 28 Dec 2020 14:32:53 +0200 Message-Id: <20201228123302.3608-27-talshn@nvidia.com> X-Mailer: git-send-email 2.16.1.windows.4 In-Reply-To: <20201228123302.3608-1-talshn@nvidia.com> References: <20201217173037.11396-2-talshn@nvidia.com> <20201228123302.3608-1-talshn@nvidia.com> Subject: [dpdk-dev] [PATCH v2 26/35] net/mlx5/windows: create flow action dest TIR object 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Ophir Munk This commit implements mlx5_flow_os_create_flow_action_dest_devx_tir() API as the Linux rdma-core equivalent. Missing rdma-core parameters are added to file mlx5_win_defs.h. The action TIR id and type (MLX5_FLOW_CONTEXT_DEST_TYPE_TIR) are saved in the action struct. The action struct will be added to array of actions and will be used later by the flow creation API. Signed-off-by: Ophir Munk Acked-by: Matan Azrad --- drivers/common/mlx5/windows/mlx5_win_defs.h | 17 +++++++++++++++++ drivers/net/mlx5/windows/mlx5_flow_os.c | 22 +++++++++++++++------- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/drivers/common/mlx5/windows/mlx5_win_defs.h b/drivers/common/mlx5/windows/mlx5_win_defs.h index 231c3220a3..8a1c2c5af9 100644 --- a/drivers/common/mlx5/windows/mlx5_win_defs.h +++ b/drivers/common/mlx5/windows/mlx5_win_defs.h @@ -189,6 +189,17 @@ struct mlx5_matcher { uint64_t match_buf[]; }; +/* + * Windows mlx5_action. This struct is the + * equivalent of rdma-core struct mlx5dv_dr_action. + */ +struct mlx5_action { + int type; + struct { + uint32_t id; + } dest_tir; +}; + struct mlx5_err_cqe { uint8_t rsvd0[32]; uint32_t srqn; @@ -233,4 +244,10 @@ enum { MLX5_FLOW_CONTEXT_DEST_TYPE_TIR = 0x2, MLX5_FLOW_CONTEXT_DEST_TYPE_QP = 0x3, }; + +enum { + MLX5_MATCH_OUTER_HEADERS = 1 << 0, + MLX5_MATCH_MISC_PARAMETERS = 1 << 1, + MLX5_MATCH_INNER_HEADERS = 1 << 2, +}; #endif /* __MLX5_WIN_DEFS_H__ */ diff --git a/drivers/net/mlx5/windows/mlx5_flow_os.c b/drivers/net/mlx5/windows/mlx5_flow_os.c index 0ade518910..0c0fba3720 100644 --- a/drivers/net/mlx5/windows/mlx5_flow_os.c +++ b/drivers/net/mlx5/windows/mlx5_flow_os.c @@ -134,10 +134,19 @@ int mlx5_flow_os_create_flow_action_dest_devx_tir(struct mlx5_devx_obj *tir, void **action) { - RTE_SET_USED(tir); - *action = NULL; - rte_errno = ENOTSUP; - return -rte_errno; + struct mlx5_action *mlx5_action = + mlx5_malloc(MLX5_MEM_ZERO, + sizeof(struct mlx5_action), + 0, SOCKET_ID_ANY); + + if (!mlx5_action) { + rte_errno = ENOMEM; + return -rte_errno; + } + mlx5_action->type = MLX5_FLOW_CONTEXT_DEST_TYPE_TIR; + mlx5_action->dest_tir.id = tir->id; + *action = mlx5_action; + return 0; } /** @@ -152,9 +161,8 @@ mlx5_flow_os_create_flow_action_dest_devx_tir(struct mlx5_devx_obj *tir, int mlx5_flow_os_destroy_flow_action(void *action) { - RTE_SET_USED(action); - rte_errno = ENOTSUP; - return -rte_errno; + mlx5_free(action); + return 0; } /** -- 2.16.1.windows.4