From patchwork Tue Oct 31 12:25:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregory Etelson X-Patchwork-Id: 133658 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 558E643252; Tue, 31 Oct 2023 13:26:52 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 38A8140DDB; Tue, 31 Oct 2023 13:26:17 +0100 (CET) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2089.outbound.protection.outlook.com [40.107.220.89]) by mails.dpdk.org (Postfix) with ESMTP id D7AC7410E3 for ; Tue, 31 Oct 2023 13:26:15 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ecp7bQDn+d6fHMzstTAQu8WMroRWF/3ef6xbg+tQkeixsQs43Km4+WocJVmAtZood4e2Wgf/IOL7cbqW4/AfvGSam9Rl23zCHC6OW68/eaJgZ9C3xAkH2jX6chlUvhUw0QCuBWLyrRbQBhueiZL4qBgBgEnWv/rVL8NC6C2VCK7nRB9hVkN1lKlskTzpe/9RMIZDziHbCz9VGZb9GvirL6ExzHuoNo4h4XFFId7nhATWh/Noxa4nKMN0767AWHeG1xdmJTQeKzJ0izZkKSGsa6V56XFBBrba545JlfF5yvOXh6XXPJ2HvyWzYlU7R52mLlQUtolnod3x3G6dF4HRuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=D0FH8a9CyviaqAyWMFP8igj/NO06p9+bY7HeX9M6+QQ=; b=HZ6I+vXAIP3/FgKfjMUyzLVDvV8HAmIa+ajOtp47IgAtobQGuzu63mHZPbknL6OZqRk5Kq+/dpkJ2erj+zbp6Mj8TpVGDEZpS8XHJnWmFh8IgdY2KWUYtI263Y6x0X2WEgsqAJTdgda07r3Zqbq0dIBwwaDUkatmzla6nb4T27xyjMXxQCgJmQ5CnDaZVVQFt0nWzsE8cqr49XH7a0AnJrbkXwv8esAyB6ei6mc1axo7ZtyA9ENSP+ZMyirIZb0BD2mWDrhYqdWrZixpDAkxp+zoNTyQb9NX95X3v9FjM9NiDmMhzJSXz/UiaDFN/7vW4qZujFGVjQKn4dkfVp36Vg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D0FH8a9CyviaqAyWMFP8igj/NO06p9+bY7HeX9M6+QQ=; b=iFzDyUXonLaX8TuZeWTEPqMhLp2qxz0lBsgdqhJP1RAAQ6xI1OHGxQYez5M3LMq65KvcvrnSegeow7m1jG7xeHcvc6k6J5g5ycYH83NsXXgswvnmg3XIWmTa4ohq4Tpw+OEDfeDwzfkDoIJwDAI1nhJhK1dBl71uYKMaJvf8IKzwQWnYcqbYjWeEJ6KxuL9i7iU8hOHiuPHabO7isQr5QaeHYqd2LJj6DlxSGnHOozHlVDlY9gQW6yqEj/DbEaY2dIeq2fSlPU7EGGwHFmAJLjC3f/LLCBuvI+z4FKwi3PX1ypeFzTNgZGCy5BM5anSl76c54Ae8MxYBzwxuFEZOdw== Received: from MN2PR22CA0005.namprd22.prod.outlook.com (2603:10b6:208:238::10) by CH2PR12MB5019.namprd12.prod.outlook.com (2603:10b6:610:6a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19; Tue, 31 Oct 2023 12:26:13 +0000 Received: from MN1PEPF0000ECDA.namprd02.prod.outlook.com (2603:10b6:208:238:cafe::c2) by MN2PR22CA0005.outlook.office365.com (2603:10b6:208:238::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.29 via Frontend Transport; Tue, 31 Oct 2023 12:26:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by MN1PEPF0000ECDA.mail.protection.outlook.com (10.167.242.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19 via Frontend Transport; Tue, 31 Oct 2023 12:26:13 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 31 Oct 2023 05:25:59 -0700 Received: from nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 31 Oct 2023 05:25:56 -0700 From: Gregory Etelson To: CC: , , , "Alex Vesker" , Erez Shitrit , Matan Azrad , Viacheslav Ovsiienko , Ori Kam , Suanming Mou Subject: [PATCH 08/10] net/mlx5/hws: allow jump to TIR over FDB Date: Tue, 31 Oct 2023 14:25:10 +0200 Message-ID: <20231031122512.434686-9-getelson@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231031122512.434686-1-getelson@nvidia.com> References: <20231031122512.434686-1-getelson@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECDA:EE_|CH2PR12MB5019:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ca42693-2351-4ebc-c303-08dbda0c9262 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: afjjb/5GoekouJwjW8Juhonm2PXQiG92M2heEL4GI2zOQFOD2GwUoSC6QWaYy3kBtPuLgxuJlV9uMv2ozlS7r3L8AiTjLSPw25Lnw7ekYluHASXd3mWmx1SKr2UGVgZ0kF8tcXdJixWaG4RiRF2PHrWZ8vZ91hmuVd5ovCLm8uHuLJ1RHj4sfi+e5kNeBrX2y3uk4o9OjPFx1be15A50YhzGrPJjir7GjwNi0zC1S+jXYXEZoCjQYhywNR8f/sBSqsATuL6aoEXLYG0SPjKHiQleaLL39S8nHtfM6SUbcOQT+aMxQHR/Sv3Couokp3W5Hf4h0NObqghxIUxQNlzNclJZOmIrI7plnxW9tdcY6mTrYrs9HaeAjVj5vCIH5rfgPxJIIfGuXR8LTVV5axmCuZwafUdSgVOk0g4axVShy52rlZj8qsW9zlrCJ7bZYQmY/34yz8dBnaROA9zbwWjDHAYoOYHL64BK1iK/UkJ9p5z0Gld4wqGiGjulHPGdExTodvVe1BPRZ4i91vfJ2VOPKy3QtAojjR+lSRJ2GWTErVAY1O0qYwki94c3mLzaxZhagw+STV4pbmom6F63DpT0VlkuoMxQxFqesNq1IuW8+qRRZDl4gZuVkoN6+rJ4nncgU14DKzIGHnyNtFx2AhV4m9lNGOh03dRQ+Lj1Uz/GnVszuqCbkSGD9NQtazjK9eErDZ8mkBfvbOdb3gW+5yvn14tFJkCl6qeCpWk/55V0jR3bzY0dsyfYKHI5G2WL6Win X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230031)(4636009)(39860400002)(396003)(136003)(376002)(346002)(230922051799003)(451199024)(64100799003)(82310400011)(186009)(1800799009)(40470700004)(46966006)(36840700001)(41300700001)(5660300002)(70586007)(70206006)(54906003)(316002)(6916009)(8676002)(4326008)(8936002)(55016003)(40480700001)(40460700003)(82740400003)(7636003)(356005)(47076005)(83380400001)(478600001)(2906002)(16526019)(6286002)(26005)(36756003)(426003)(7696005)(107886003)(1076003)(86362001)(2616005)(336012)(36860700001)(6666004); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2023 12:26:13.1434 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0ca42693-2351-4ebc-c303-08dbda0c9262 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000ECDA.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB5019 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Alex Vesker Current TIR action is allowed to be used only for NIC RX, this will allow TIR action over FDB for RX traffic in case of TX traffic packets will be dropped. Signed-off-by: Alex Vesker Reviewed-by: Erez Shitrit Acked-by: Matan Azrad --- drivers/common/mlx5/mlx5_prm.h | 2 ++ drivers/net/mlx5/hws/mlx5dr_action.c | 27 ++++++++++++++++++++++----- drivers/net/mlx5/hws/mlx5dr_cmd.c | 4 ++++ drivers/net/mlx5/hws/mlx5dr_cmd.h | 1 + 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index 40e461cb82..bb2b990d5b 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -2418,6 +2418,8 @@ struct mlx5_ifc_wqe_based_flow_table_cap_bits { u8 reserved_at_180[0x10]; u8 ste_format_gen_wqe[0x10]; u8 linear_match_definer_reg_c3[0x20]; + u8 fdb_jump_to_tir_stc[0x1]; + u8 reserved_at_1c1[0x1f]; }; union mlx5_ifc_hca_cap_union_bits { diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/mlx5dr_action.c index 1a6296a728..05b6e97576 100644 --- a/drivers/net/mlx5/hws/mlx5dr_action.c +++ b/drivers/net/mlx5/hws/mlx5dr_action.c @@ -445,6 +445,7 @@ mlx5dr_action_fixup_stc_attr(struct mlx5dr_context *ctx, break; case MLX5_IFC_STC_ACTION_TYPE_CRYPTO_IPSEC_ENCRYPTION: + /* Encrypt is allowed on RX side, requires mask in case of FDB */ if (fw_tbl_type == FS_FT_FDB_RX) { fixup_stc_attr->action_type = MLX5_IFC_STC_ACTION_TYPE_NOP; fixup_stc_attr->action_offset = stc_attr->action_offset; @@ -454,6 +455,7 @@ mlx5dr_action_fixup_stc_attr(struct mlx5dr_context *ctx, break; case MLX5_IFC_STC_ACTION_TYPE_CRYPTO_IPSEC_DECRYPTION: + /* Decrypt is allowed on TX side, requires mask in case of FDB */ if (fw_tbl_type == FS_FT_FDB_TX) { fixup_stc_attr->action_type = MLX5_IFC_STC_ACTION_TYPE_NOP; fixup_stc_attr->action_offset = stc_attr->action_offset; @@ -463,12 +465,10 @@ mlx5dr_action_fixup_stc_attr(struct mlx5dr_context *ctx, break; case MLX5_IFC_STC_ACTION_TYPE_TRAILER: - if (table_type != MLX5DR_TABLE_TYPE_FDB) - break; - + /* Trailer has FDB limitations on RX and TX based on operation */ val = stc_attr->reformat_trailer.op; - if ((val == MLX5DR_ACTION_TRAILER_OP_INSERT && !is_mirror) || - (val == MLX5DR_ACTION_TRAILER_OP_REMOVE && is_mirror)) { + if ((val == MLX5DR_ACTION_TRAILER_OP_INSERT && fw_tbl_type == FS_FT_FDB_RX) || + (val == MLX5DR_ACTION_TRAILER_OP_REMOVE && fw_tbl_type == FS_FT_FDB_TX)) { fixup_stc_attr->action_type = MLX5_IFC_STC_ACTION_TYPE_NOP; fixup_stc_attr->action_offset = stc_attr->action_offset; fixup_stc_attr->stc_offset = stc_attr->stc_offset; @@ -476,6 +476,16 @@ mlx5dr_action_fixup_stc_attr(struct mlx5dr_context *ctx, } break; + case MLX5_IFC_STC_ACTION_TYPE_JUMP_TO_TIR: + /* TIR is allowed on RX side, requires mask in case of FDB */ + if (fw_tbl_type == FS_FT_FDB_TX) { + fixup_stc_attr->action_type = MLX5_IFC_STC_ACTION_TYPE_DROP; + fixup_stc_attr->action_offset = MLX5DR_ACTION_OFFSET_HIT; + fixup_stc_attr->stc_offset = stc_attr->stc_offset; + use_fixup = true; + } + break; + default: break; } @@ -976,6 +986,13 @@ mlx5dr_action_create_dest_tir(struct mlx5dr_context *ctx, return NULL; } + if ((flags & MLX5DR_ACTION_FLAG_ROOT_FDB) || + (flags & MLX5DR_ACTION_FLAG_HWS_FDB && !ctx->caps->fdb_tir_stc)) { + DR_LOG(ERR, "TIR action not support on FDB"); + rte_errno = ENOTSUP; + return NULL; + } + if (!is_local) { DR_LOG(ERR, "TIR should be created on local ibv_device, flags: 0x%x", flags); diff --git a/drivers/net/mlx5/hws/mlx5dr_cmd.c b/drivers/net/mlx5/hws/mlx5dr_cmd.c index 0ba4774f08..135d31dca1 100644 --- a/drivers/net/mlx5/hws/mlx5dr_cmd.c +++ b/drivers/net/mlx5/hws/mlx5dr_cmd.c @@ -1275,6 +1275,10 @@ int mlx5dr_cmd_query_caps(struct ibv_context *ctx, caps->supp_ste_format_gen_wqe = MLX5_GET(query_hca_cap_out, out, capability.wqe_based_flow_table_cap. ste_format_gen_wqe); + + caps->fdb_tir_stc = MLX5_GET(query_hca_cap_out, out, + capability.wqe_based_flow_table_cap. + fdb_jump_to_tir_stc); } if (caps->eswitch_manager) { diff --git a/drivers/net/mlx5/hws/mlx5dr_cmd.h b/drivers/net/mlx5/hws/mlx5dr_cmd.h index c082157538..cb27212a5b 100644 --- a/drivers/net/mlx5/hws/mlx5dr_cmd.h +++ b/drivers/net/mlx5/hws/mlx5dr_cmd.h @@ -241,6 +241,7 @@ struct mlx5dr_cmd_query_caps { uint8_t log_header_modify_argument_granularity; uint8_t log_header_modify_argument_max_alloc; uint8_t sq_ts_format; + uint8_t fdb_tir_stc; uint64_t definer_format_sup; uint32_t trivial_match_definer; uint32_t vhca_id;