From patchwork Tue Oct 17 00:44:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suanming Mou X-Patchwork-Id: 132684 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 0863943184; Tue, 17 Oct 2023 02:44:54 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 40A4140DFD; Tue, 17 Oct 2023 02:44:49 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2043.outbound.protection.outlook.com [40.107.220.43]) by mails.dpdk.org (Postfix) with ESMTP id C69124067D for ; Tue, 17 Oct 2023 02:44:47 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AXXga32B6JQXukQXXF/sINJ3DgVnSpQjlnm0R+1Jtrp+jiSY32jHveU3qEBu0bh3nGCJSfkdFi7QY8vRzQoxpvaBJ/oy645qWmCkAG3cvGMv5JSP3DnhcB0vmNZn3BqmvaUxE7cpf9iOQ2oRgGNKlrtXi3rE40kOEA+8VTRrjz1Z3/b3nJ5Ny6JiME8Rv1Bi5nPCBWkHDALW203MmWnV7DQhpjOrKpIPxasvndz6pEvOEqSGPMfEDpELHS7wGJQToPG7IfKh/m+PAot8SUBY+h5esXOhfN7+I2Akkf+5Dolm9DjzZM0xoYiLyuUd8k/dCMkKGoSpgAAXxycx2CRpIA== 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=Qxyi30jHoNSr9FHFQJO+g5thzF4NoSM5oCO0gN5yVHA=; b=hmWX9mbR/vIqyjcOpLHIFLQ+waTY4rXoXBIcUDD8QbNi7exZWGTF3KACvvfUdBjJSh+CvVGwTkcq3MpOZCGA+gTS71vltUk7bJoJnVThNdAauYctba8jllCxLHPsgFul2RIZelg88WU6uTvQhjt78vovEqPENfDLgOWzyqTXITo1AXQGA5jqME+EOSjqWzWtzVO6kW7vpVp+H23NSwt6+P99Cjgn5EiY7GtRqaOtLhTS+Cb2dhOkwrk9LfOl7B8PX6+XYc2h/CYEoQdUUgWrvGrL/9eHJePS9Lxyr8E/KjwAX9vh5GJarMVSsGbMw9dz0ybnXyVlYpYDERo75BEY0A== 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 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=Qxyi30jHoNSr9FHFQJO+g5thzF4NoSM5oCO0gN5yVHA=; b=h5830QHHj0xZ2Jcf/esO6EA8n/NRuN/OAFCySfQLk45P/GwHpxVsncp+C6lGgrNeS6/pAqLVbXlkjMVJhRfFDTOxXXySAP+4qFvalL1PxmNvt+oHhthgD13CsJYDfz9fCo4qmpvQBHxiNvVhRx9dhlFQtabjw4bPkJR6B4NmuTGTjnRemdrtKfa9I4f94Nw0jq8c3zNr41uqoJ1lDZYtY9BfLNkSonvcnF9ucURUgEkt8dB/oZZ2kPb2jik6lSMQ93fRzi/rnApH7/xzuME1EArCRZuUOwTfErOwAr/1Mtj/M+AIltHbt1oslEcL5OfeVYZysheZVWINcmM6gVelSA== Received: from MN2PR07CA0021.namprd07.prod.outlook.com (2603:10b6:208:1a0::31) by DS0PR12MB6462.namprd12.prod.outlook.com (2603:10b6:8:c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.34; Tue, 17 Oct 2023 00:44:45 +0000 Received: from MN1PEPF0000F0DE.namprd04.prod.outlook.com (2603:10b6:208:1a0:cafe::c8) by MN2PR07CA0021.outlook.office365.com (2603:10b6:208:1a0::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.36 via Frontend Transport; Tue, 17 Oct 2023 00:44:45 +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 MN1PEPF0000F0DE.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.22 via Frontend Transport; Tue, 17 Oct 2023 00:44:45 +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; Mon, 16 Oct 2023 17:44:29 -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; Mon, 16 Oct 2023 17:44:26 -0700 From: Suanming Mou To: , Matan Azrad , Viacheslav Ovsiienko CC: , Subject: [PATCH 2/3] net/mlx5: add port representor destination to mirror Date: Tue, 17 Oct 2023 08:44:00 +0800 Message-ID: <20231017004401.698745-3-suanmingm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231017004401.698745-1-suanmingm@nvidia.com> References: <20231017004401.698745-1-suanmingm@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0DE:EE_|DS0PR12MB6462:EE_ X-MS-Office365-Filtering-Correlation-Id: e326ba4a-c24b-4c71-4bbe-08dbceaa427e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PmLFPLzw7lTiEcYeO3Y3dqM0ww8kUIbvzkOGRHWwFC/008AKEVtJi9iK4/KayJZPiqbVuRFcy1p/t+KZgZJekx9cMJZ+o1MeoHXV580O/fO1uX8VMhIuzJHxbq0S8nRP3e4ihQHZNlDWjemJdqaZc4AcU7d8l2+V6HkXpVIkFoedcWZpBYo8RXvtQf1M1jE4HPT847YBbqADtFOkaXa0XABGqJp0/ZtppN/6XBIqKw13j2bIG6FR6nl8sIc+tS1NdzKYk+vtVBwb8rOd0VTzpZJdoCDwVesqqkvNRF4pYV82ORLRTOh1LmNTn/7c0s8viWb+OWUTFnIGFWPfcJ9S7r02SvSGM1Yc+NB5O85L6+r/CEjmJuZYUTdzAVb8D6/H9SU6u5LpSGMcSoXQqiYSW/LyF5n8H4CTzS0JtgAfyX2ukc8y03knP8uS4K1uRWj+sg02fAFat+/rJxBr+xzu3b5jCUDKs0wFewvGRfE0KnEAAV4Y1W3i7T7MLyjH55R20qKc5n5+4K11lkwhEnNbQK0KbUHFeqV+kug905UvuHxOkxzPu9f9corre2LCOQegM73kl60pLqluH8L1/2+Bkfz0hM121g1uJPTaHP3IkLVkD1VNK2Kw2aSgy8yoQCNpbfg+chSqTSS8hNBPrLG+y2YExiZrHRaC3YM653XyK/NvpJCcE1jasIW79E/cbAP90q+hRnw9tVjZ4ZBi5Cy9qsTER/k7yyxMWH46enFZ0K4= 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)(376002)(136003)(39860400002)(346002)(396003)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(82310400011)(40470700004)(46966006)(36840700001)(55016003)(40460700003)(40480700001)(6666004)(70586007)(478600001)(70206006)(110136005)(54906003)(6636002)(356005)(47076005)(83380400001)(36860700001)(7696005)(1076003)(82740400003)(336012)(86362001)(316002)(426003)(6286002)(26005)(16526019)(2616005)(36756003)(41300700001)(7636003)(5660300002)(4326008)(8936002)(8676002)(2906002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 00:44:45.6361 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e326ba4a-c24b-4c71-4bbe-08dbceaa427e 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: MN1PEPF0000F0DE.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6462 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 In order to clone the traffic from FDB to NIC TIR, user can set port representor action as mirror clone destination. In that case cloned traffic will be moved to E-Switch manager root table, and goes to software TIR. This commit adds the port representor support to mirror action. Signed-off-by: Suanming Mou --- drivers/net/mlx5/mlx5_flow_hw.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index 9feb40ddb3..46af492ac5 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -9735,6 +9735,7 @@ mlx5_mirror_destroy_clone(struct rte_eth_dev *dev, flow_hw_jump_release(dev, clone->action_ctx); break; case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: + case RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR: case RTE_FLOW_ACTION_TYPE_RAW_ENCAP: case RTE_FLOW_ACTION_TYPE_RAW_DECAP: case RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP: @@ -9779,6 +9780,7 @@ mlx5_mirror_terminal_action(const struct rte_flow_action *action) case RTE_FLOW_ACTION_TYPE_RSS: case RTE_FLOW_ACTION_TYPE_QUEUE: case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: + case RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR: return true; default: break; @@ -9792,19 +9794,30 @@ mlx5_mirror_validate_sample_action(struct rte_eth_dev *dev, const struct rte_flow_action *action) { struct mlx5_priv *priv = dev->data->dev_private; + const struct rte_flow_action_ethdev *port = NULL; + bool is_proxy = MLX5_HW_PORT_IS_PROXY(priv); + if (!action) + return false; switch(action->type) { case RTE_FLOW_ACTION_TYPE_QUEUE: case RTE_FLOW_ACTION_TYPE_RSS: if (flow_attr->transfer) return false; break; + case RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR: + if (!is_proxy || !flow_attr->transfer) + return false; + port = action->conf; + if (!port || port->port_id != MLX5_REPRESENTED_PORT_ESW_MGR) + return false; + break; case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: case RTE_FLOW_ACTION_TYPE_RAW_ENCAP: case RTE_FLOW_ACTION_TYPE_RAW_DECAP: case RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP: case RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP: - if (!priv->sh->esw_mode && !flow_attr->transfer) + if (!is_proxy || !flow_attr->transfer) return false; if (action[0].type == RTE_FLOW_ACTION_TYPE_RAW_DECAP && action[1].type != RTE_FLOW_ACTION_TYPE_RAW_ENCAP) @@ -9962,6 +9975,7 @@ hw_mirror_format_clone(struct rte_eth_dev *dev, struct mlx5dr_action_dest_attr *dest_attr, uint8_t *reformat_buf, struct rte_flow_error *error) { + struct mlx5_priv *priv = dev->data->dev_private; int ret; uint32_t i; bool decap_seen = false; @@ -9988,6 +10002,9 @@ hw_mirror_format_clone(struct rte_eth_dev *dev, if (ret) return ret; break; + case RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR: + dest_attr->dest = priv->hw_def_miss; + break; case RTE_FLOW_ACTION_TYPE_RAW_DECAP: decap_seen = true; break;