From patchwork Thu Oct 19 06:54:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132970 X-Patchwork-Delegate: ferruh.yigit@amd.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 DA711431A6; Thu, 19 Oct 2023 08:54:31 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6772240263; Thu, 19 Oct 2023 08:54:31 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2127.outbound.protection.outlook.com [40.107.243.127]) by mails.dpdk.org (Postfix) with ESMTP id 527B54021F for ; Thu, 19 Oct 2023 08:54:30 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y413EIDuZAPCqkfMryuz347+bvzTrqWeaWbduymzwNCuv3dEK7NmL4rezBP/jDquT0INaMbC/3VBGjjYm+oTd1Q/sc8zAHjIdrBLJd4hM37rehip0GapCKf/asEsYo1aXrcAr8wFnSMWXclcapX/mmRgM02DWvTWO7cRFJEAOqB06l1VDjPp2ffPra6ROxh+xSFwOzsd04G6oTiQdjZqx0ShEIad3T7hSOR8VrdpHqF7fzOF0VXITEHSTIOOht/n+vJKFhndsPEnSqtF89nI3j8d7AXHz3WKO92P0QulDLwtWXj7b4KSItlXW75SrIB7T//ca8X4mZY1V5v+8A//ng== 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=TEwvkN1Ki8DDawZZ2RZu25nRZMFvxA+TO1tXD4vSBS4=; b=fXav1YFh84GHez5akt+0ZlpYqamm3sj+2Yr7aEPZ6WvcQskrOipkHthPW/Mkh7dREqKJfLOzG2zrrmqUAW+K5lxHD8ZOGKzwGeyPWvIgPqGF6y39ypPux6zDsGex50tYJ362Ae2ZZddkMa2GSMY1BRpjUZBst3ObermL6zdL/4CirVLVwJQ6IsQdTM1weM0ZvbC+mV/A6y/RL5zSx7RZD0ip+zTe4tnttNhLq38ejUvyoybErDOpjyQXlf8WqUK4GbeeiGk1yJ0SgzI/mhW+n50SKnrdsx93s16qLCxA0pv8Tk1AlxW2XcZ89Qq0FNGpDga6A+1u2xMFrwVjyUrj7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TEwvkN1Ki8DDawZZ2RZu25nRZMFvxA+TO1tXD4vSBS4=; b=Gee4uA0ycnPTWBV1KmfQ9Z2ZFfqk6MOWOXZqICJRk6/UUBYBa4NNgMbvwQ456/bfxfd+lMzRKKdAUdjodOU26/npV78gP8vihhxGQHJ4niYg/WZIyNTeS6R4FY44yjALBsXivIFdUZlObChg1zIsy3R8RbGStkSv91B9hnyE2rY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by BY1PR13MB6288.namprd13.prod.outlook.com (2603:10b6:a03:52e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.21; Thu, 19 Oct 2023 06:54:27 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Thu, 19 Oct 2023 06:54:27 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He Subject: [PATCH] net/nfp: support represented port action Date: Thu, 19 Oct 2023 14:54:03 +0800 Message-Id: <20231019065403.2078523-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 X-ClientProxiedBy: PH0PR07CA0070.namprd07.prod.outlook.com (2603:10b6:510:f::15) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY1PR13MB6288:EE_ X-MS-Office365-Filtering-Correlation-Id: 11871ab0-7491-4748-44c2-08dbd0703c3f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: D2CILn+7pegC009SaoVRYzhBo/Zf3KpcHjGstZRmg/boNN8AyIbMLY1GYbVBjg+Mhvtg12vZ+fEsUAiPGDEsr6LcenUGWIPW6IB0wmYNcqVP9x9W6kLIMofqptlh3gzLJkXQ75m7Ry61/s8onp0oipKK3bpWUwzSd52n6jjuPfcDpkLh17tP8xzglnBClEDT8Wja8jwQjCQLo/QCBpS6IL39KLVOVc1CAxnoGV6b0TqDjOmqhjY5QAe8eVRVYJRRcObn0h+2ExpRe9hWnbE+Rkv1MVHiLSiHhCkozBdUX6mZtSSvRrsjGEIZTYhbrUsfMOpaYyOthQyCtrUUWdIxoT0C4p7d4kQCZGkShDvlbWHEuzqWrP2r3wOZeXyu0G+KiaAPegIYIZf6uIkDFtcpdxkDsIM/jIE4a3KMOTGFdfsJoRDnWZoeLnxj+r/4DY6HBpHJSvlSWUoInpeJlFnEOraLG3cydQdbWn48dAsFXKgB9gqHeOw5hH3kXjc0XUGyOLQ8JJFxZKNVPyTIEL2wLZCU0mtnTpHjc0LTZLsVA3Y6EBNXexpugqNJj5LPXrodTGf9loE4MAoQkxC2SRJsyF8Slj/PKCpPI0rMsHukypJN+lOUoeMmrc3vXryupsYY8xhvLp7xA5gARxwiZVLdKiJeZkP6lh+urCP9mrb3XAo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(39830400003)(136003)(366004)(346002)(376002)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(2906002)(38350700005)(6512007)(6666004)(5660300002)(4326008)(8936002)(44832011)(41300700001)(316002)(8676002)(6916009)(66556008)(66476007)(66946007)(6486002)(478600001)(52116002)(38100700002)(6506007)(107886003)(86362001)(83380400001)(36756003)(26005)(1076003)(2616005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mu6U2pnKshd3V44zROllgUHIuoOPKJ/vgbcxfeIAD6KSHFb1xnG0miAY3mi03XicNu9A+pp5dP9fidF1vFynkMWW3AEfoKB78CrTY3RPDrpMo1NV2iNEm3Vr3wa/Y3Tz+HbA9ta0gjCDTrMJ/6ZMr0HAuaZXSYW6L2KOItFcUzHUH8e/VILZcCmco7DpYR2hEfvpjH8WsjWolxV3gqizz5hnZGknST2GMG5llw04rJJN2Dz1YeeLZ9MmYIhGP9Y+iGsD9SWcViY11cDUGwkpGSycsHSHb/h21l/9ko8lB4KFpQ120ds8uBqWdnHQlr5T55UF4130/H7FNsb8VIBTZkXBAaJrqaxoIwg6WJi+oTOpojhXwkPu+DF9bqZDCbWsXahO97uW14iwK3Wk1gWnUzIaDhuj/d6kti/55KyVrc/9lKMNJcS3AjiPqiUlHk2BZmpRG46tZEFWr+MXsOvFr2CxQWfEAXl1SoI25nDtUBYscR5t9/fEiWRP11LzUZw+Hs0UnoxQSYobyRpMCqzBq2HYN+6r0TB0qniPJ4bATdgNuj3NrofEV7BEDfks3IQumaE9Yr5Ji/86QKbUeEzqycDagPV0Rr5Ovb44CLO+JP0jOzT0RWYlcQ+CjEQLefZX1/3mn4xuBJYYAOe+2znn/4M/q+8wfkJm6utvil2Vl4VuMlQh4MHyFdWcqwWACCTYnqVeXtM+AaTOAdEZmVUJFYoNFTX7e/IHzQXOxpMzvCSTVbUNaFrbCn0hAUvCilpB6vzrwvoxrqIqswva/q4zP7sR9bCK4a9g7LGF1FdKwThpdes1IvswxS+3qeAZDHioD9O0yjrsil5oZRFcXHDLUyaP3G4v6FHLFDGMq+dGANIYkh15K/NGrXylfc3bX6gMHlEAV7nD3Ak60Zuigze/yq/CANxCgRUnAnb2ObfKBrQ6C3C4TZgmDE98jn0snQAMmMrPZ5Bsed6dbAUvwnebL0meIi2O8o+7QsuafUhGnvg15P0r5aMJkAwKxX9qB4Hz5vNGNBnE/DZLGcc5tbI1aiyBbl8ygS4FrD9zzMQs5tWMt+wXOyWLa+7L97dhJaOHdn8kSEEv2PvpAJxK1vGqTi9udynJ8zgkeH+wgrcNmAmRkmQBEs4zfrIYuzG/kWgW3vYanW/dyORn8oboJ60zauOx9Ftpl25xjxHH00Tq+TVoIkdAHgrImTL1l22latgyE6/AvDyg4q7ysMR8L0K43zlVGA/v1teVOVn5+s5P9kPYSV+VHSeG14d5GbIYImpqMF/p9RaiP7cNfQyWGO8hou0S6DlAvCtCzUvcFV9PSxgLRsekeYdPzjKVlaVpo8hLqEA0ZsVfMh0R8naSS5/dk+FPd+AbEX+2+yq2W2TyYVmsvJkYfb5ReONNpNZ2sZIfPme+8gGBFwz9rr7kNicJtFIi02kdUEB2mAg8ts0f0Cti3SryXkzJixWniZ2Gf2ldTJmNhd7H+LSs7Bqwm6EKcYDaN8mFaxXaYUVB9Rzj6nx83W7bxD7dLpQ4mabhFREFyfZ62xMh0pB18aaHLh13ZF+LjPD3rd7NIO+zmLhPJ5LPIopu/oW/OsJ7+aQfgxWxxbUJQHZmWhK48yFhaVxPaw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 11871ab0-7491-4748-44c2-08dbd0703c3f X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2023 06:54:27.1648 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /ZdTmKh7Y4+QNWkzsb9suHwi825j+KPiq55aDPNi66t/nAiB+J7hcSlfyYgiRh20L+5aEwBaLiRXz0jGwoycVkKW/pwMa5jh+4wqIKIcJGM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR13MB6288 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 Add the corresponding logics to support the offload of represented port action. Signed-off-by: Chaoyong He --- doc/guides/nics/features/nfp.ini | 1 + drivers/net/nfp/nfp_flow.c | 51 +++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index b53af7b60a..73efd41e43 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -54,6 +54,7 @@ of_set_vlan_pcp = Y of_set_vlan_vid = Y raw_decap = Y raw_encap = Y +represented_port = Y port_id = Y set_ipv4_dscp = Y set_ipv4_dst = Y diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c index 1bf31146fc..f832b52d89 100644 --- a/drivers/net/nfp/nfp_flow.c +++ b/drivers/net/nfp/nfp_flow.c @@ -1007,6 +1007,10 @@ nfp_flow_key_layers_calculate_actions(const struct rte_flow_action actions[], PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_PORT_ID detected"); key_ls->act_size += sizeof(struct nfp_fl_act_output); break; + case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT detected"); + key_ls->act_size += sizeof(struct nfp_fl_act_output); + break; case RTE_FLOW_ACTION_TYPE_SET_MAC_SRC: PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_SET_MAC_SRC detected"); if (!mac_set_flag) { @@ -2188,6 +2192,38 @@ nfp_flow_action_output(char *act_data, return 0; } +static int +nfp_flow_action_output_stage(char *act_data, + const struct rte_flow_action *action, + struct nfp_fl_rule_metadata *nfp_flow_meta, + uint32_t output_cnt) +{ + size_t act_size; + struct rte_eth_dev *ethdev; + struct nfp_fl_act_output *output; + struct nfp_flower_representor *representor; + const struct rte_flow_action_ethdev *action_ethdev; + + action_ethdev = action->conf; + if (action_ethdev == NULL || action_ethdev->port_id >= RTE_MAX_ETHPORTS) + return -ERANGE; + + ethdev = &rte_eth_devices[action_ethdev->port_id]; + representor = ethdev->data->dev_private; + act_size = sizeof(struct nfp_fl_act_output); + + output = (struct nfp_fl_act_output *)act_data; + output->head.jump_id = NFP_FL_ACTION_OPCODE_OUTPUT; + output->head.len_lw = act_size >> NFP_FL_LW_SIZ; + output->port = rte_cpu_to_be_32(representor->port_id); + if (output_cnt == 0) + output->flags = rte_cpu_to_be_16(NFP_FL_OUT_FLAGS_LAST); + + nfp_flow_meta->shortcut = rte_cpu_to_be_32(representor->port_id); + + return 0; +} + static void nfp_flow_action_set_mac(char *act_data, const struct rte_flow_action *action, @@ -3458,7 +3494,8 @@ nfp_flow_count_output(const struct rte_flow_action actions[]) const struct rte_flow_action *action; for (action = actions; action->type != RTE_FLOW_ACTION_TYPE_END; ++action) { - if (action->type == RTE_FLOW_ACTION_TYPE_PORT_ID) + if (action->type == RTE_FLOW_ACTION_TYPE_PORT_ID || + action->type == RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT) count++; } @@ -3506,6 +3543,18 @@ nfp_flow_compile_action(struct nfp_flower_representor *representor, case RTE_FLOW_ACTION_TYPE_JUMP: PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_JUMP"); break; + case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: + PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT"); + count--; + ret = nfp_flow_action_output_stage(position, action, nfp_flow_meta, count); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Failed when process" + " RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT"); + return ret; + } + + position += sizeof(struct nfp_fl_act_output); + break; case RTE_FLOW_ACTION_TYPE_PORT_ID: PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_PORT_ID"); count--;