From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 6B66E43258;
	Wed,  1 Nov 2023 05:45:13 +0100 (CET)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id E8F314111B;
	Wed,  1 Nov 2023 05:45:00 +0100 (CET)
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on2057.outbound.protection.outlook.com [40.107.212.57])
 by mails.dpdk.org (Postfix) with ESMTP id DECC540E54
 for <dev@dpdk.org>; Wed,  1 Nov 2023 05:44:58 +0100 (CET)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=YK6AEC7lPfyEM3HcOTxoUp1OTfepI19L+ifcWj2d7+vNZ/zErN5SALN7iMdVLi2kb7ND1IThM217YXu77a+MF6e0I+AF1Iy/BORdJ75is9VjjNGhE0t/vD5jtJbAPMWEdV0fi7K5a87oklB9gFHqF0rB/wtC5CGcNyaCK2nlpmW6rIdNeb6hcXnZiWwO+iFny9B5XIq6xh5qIydmgFSigMre90Uts83o0cEqG2VXOhcb2GQqUQYR7VNZdrCPYIuwiaSTnDrnWDJfBnMwyXP1RYBQp4G4WnxZWyGhcDYxLfQWStPC7K3li8fvi3c/AjOHq5j/wHLKs6TBdsFMrlkyKQ==
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=ve79FXCyU8ozq0WSA2lSFnQ9gqOwnR1UHWzA4KNANUc=;
 b=U/nq6/FU3zSD51DyiGXOgT7YLq9o+fqBNnI0WFQd9qY7mbZVBC3uESMU7+p7TQaHVCK+cbJkop9Qj4kX0+Pk/DmSA0gwG38Pz/3QmM5HFw85fCJpVrv2L3Z+jC5Rcy5NNijF9ZMMqdWMQX0k3fgFHWWFOhqg2bmXSVx/GmC/4V/oE4ugB4GtDbSQg/ClzQJd6geqtJFDyclJ4ICSgmMh4SKDAo1hDm5iVje9TGpE0dyAirbEL0eVT/ST2/8HTFiI4U9UVF660Qq9uPhK33uzkassAh8OUZBLORr++Fscxb0N4ZsT3vlISNj+PIgGTxFhlQIr5hhPYZIhpy9p6o93bw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 216.228.117.160) 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=ve79FXCyU8ozq0WSA2lSFnQ9gqOwnR1UHWzA4KNANUc=;
 b=Si2eJuuj1aG1ZNYThqUIBX4swJMORfoZUTIJ2MaO8jwAmcf1aqSYA8+qM5yuVJXBt95/j2gSam3vmo5qw5e7xUJMzrdVEgWl4nFv3jxmq8+aI6aKC+20ZljnX4lUEmaJPVpqFKPYjk3b718xSIlTwAdI/OJS0IOg+2jr+WKtMY3zCVcLIjiznMOlegQmHBbKlFpe41HBUwrEZAI1qsAfOdtU6tbElgkCji4FbeIY/34vExqh7Vh+mCVP+NIb7Z+cfCGWNU9A6Mts3l9TrAxQM72uqH32q/Ps1Sw4hcyacRUOF0LRtlVET3RkHmQNVXzTtxl5W+9JH1e3ChrutQK/Wg==
Received: from CY5P221CA0040.NAMP221.PROD.OUTLOOK.COM (2603:10b6:930:4::11) by
 IA1PR12MB6139.namprd12.prod.outlook.com (2603:10b6:208:3e9::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.28; Wed, 1 Nov
 2023 04:44:55 +0000
Received: from CY4PEPF0000FCC1.namprd03.prod.outlook.com
 (2603:10b6:930:4:cafe::ec) by CY5P221CA0040.outlook.office365.com
 (2603:10b6:930:4::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.29 via Frontend
 Transport; Wed, 1 Nov 2023 04:44:55 +0000
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160)
 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.160 as permitted sender) receiver=protection.outlook.com;
 client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C
Received: from mail.nvidia.com (216.228.117.160) by
 CY4PEPF0000FCC1.mail.protection.outlook.com (10.167.242.103) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.6954.19 via Frontend Transport; Wed, 1 Nov 2023 04:44:55 +0000
Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com
 (10.129.200.66) 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 21:44:43 -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 21:44:40 -0700
From: Rongwei Liu <rongweil@nvidia.com>
To: <dev@dpdk.org>, <matan@nvidia.com>, <viacheslavo@nvidia.com>,
 <orika@nvidia.com>, <suanmingm@nvidia.com>, <thomas@monjalon.net>
CC: Alex Vesker <valex@nvidia.com>, Erez Shitrit <erezsh@nvidia.com>
Subject: [PATCH v4 03/13] net/mlx5/hws: allow jump to TIR over FDB
Date: Wed, 1 Nov 2023 06:44:09 +0200
Message-ID: <20231101044419.732726-4-rongweil@nvidia.com>
X-Mailer: git-send-email 2.27.0
In-Reply-To: <20231101044419.732726-1-rongweil@nvidia.com>
References: <20231031105131.441078-1-rongweil@nvidia.com>
 <20231101044419.732726-1-rongweil@nvidia.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
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: CY4PEPF0000FCC1:EE_|IA1PR12MB6139:EE_
X-MS-Office365-Filtering-Correlation-Id: bd92ba3e-803a-49d4-533c-08dbda954b68
X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: fQZA12hT7seppp6fSEIi4LAkUzAVXERTEC196Ef6ytru0PDwESmF+emSciFyha+aX8lPf58oE8s+8NLCr7LbyEiH2+fdbNXPCsaSCrpRNapBhg3wRNsrywU4z7E9RUtneJkdncNkn/SjLjr6Aqi1PugHZUBCJLluRNoNoUe8QiReUpzQmqlriZ/hH3YWHR8cFvdjLeFygcVIEeo1icQqfer6pNcRy1qrVLRwET1KjBZl3ieb42/DhNVLtI4wFfTcsw641utttyFkVAoWd0uGpXhLrDBP5bDv2ekqH2M/iCtXcVqMC4dn9oOmsBy18DV0SnxzQ8+udkUIznBWPmmNOOjrhqcdlZn/S08rkJE+OoqZNV4+AWy9UAzsQKMz9Yvfr5eE5qZjSbldpGDd1Na26M9EJsLoWF11nI8IUKAMZI5A3VwbEUyIrWQpR4ON9zvAqO6Bf3IIn54rbj9thgfHQE4CmpTcnwPpb95BpA8YdC0wq0ysgIE9etdL4DHyrkfAya6PsuJaCyjsTo4b6CL0RuN4rVFtzZDzpBHUf8phC9yqv2w5pVGUO9DDpqoIrIum2/cRCSnjSYXR0D1lVdU1sKoq/c6S7cgbmm/aiXmxVvL87o9+ccn7R9IYWZ33mdZ/s4/4oFPi7DMRSYbNEyJnZXLqTR4DXBHQocwd7gpzeMWhhL689rvtB0vpCbOf69inWmsCLmdUo7qYbmBsk6l+riHjrAgbK+ka3GJ9PbeoxYR9SxwmqJKDgL+euvBkeuET
X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE;
 SFS:(13230031)(4636009)(376002)(39860400002)(346002)(136003)(396003)(230922051799003)(82310400011)(186009)(64100799003)(1800799009)(451199024)(36840700001)(40470700004)(46966006)(40480700001)(55016003)(2616005)(26005)(16526019)(6286002)(1076003)(2906002)(40460700003)(7636003)(86362001)(36756003)(82740400003)(356005)(336012)(83380400001)(426003)(5660300002)(36860700001)(478600001)(7696005)(6666004)(47076005)(8936002)(54906003)(4326008)(70586007)(316002)(70206006)(8676002)(107886003)(110136005)(41300700001);
 DIR:OUT; SFP:1101; 
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2023 04:44:55.1761 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bd92ba3e-803a-49d4-533c-08dbda954b68
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.160];
 Helo=[mail.nvidia.com]
X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000FCC1.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6139
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

From: Alex Vesker <valex@nvidia.com>

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 <valex@nvidia.com>
Reviewed-by: Erez Shitrit <erezsh@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
 drivers/common/mlx5/mlx5_prm.h       |  2 ++
 drivers/net/mlx5/hws/mlx5dr_action.c | 17 ++++++++++++++++-
 drivers/net/mlx5/hws/mlx5dr_cmd.c    |  4 ++++
 drivers/net/mlx5/hws/mlx5dr_cmd.h    |  1 +
 4 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h
index 2b499666f8..5259031a04 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 f794d6cd78..1bace23c58 100644
--- a/drivers/net/mlx5/hws/mlx5dr_action.c
+++ b/drivers/net/mlx5/hws/mlx5dr_action.c
@@ -389,7 +389,15 @@ mlx5dr_action_fixup_stc_attr(struct mlx5dr_context *ctx,
 		}
 		use_fixup = true;
 		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;
 	}
@@ -859,6 +867,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 f24651041c..a07378bc42 100644
--- a/drivers/net/mlx5/hws/mlx5dr_cmd.c
+++ b/drivers/net/mlx5/hws/mlx5dr_cmd.c
@@ -1259,6 +1259,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 03db62e2e2..2b44f0e1f2 100644
--- a/drivers/net/mlx5/hws/mlx5dr_cmd.h
+++ b/drivers/net/mlx5/hws/mlx5dr_cmd.h
@@ -236,6 +236,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;
-- 
2.27.0