From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AD1CE45492; Wed, 19 Jun 2024 11:21:02 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 069A142DBD; Wed, 19 Jun 2024 11:20:35 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2097.outbound.protection.outlook.com [40.107.92.97]) by mails.dpdk.org (Postfix) with ESMTP id 5610D4161A for ; Wed, 19 Jun 2024 11:20:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Avv0nXLwqjvnQdEni4AoP9FS1oKDHj4n3xO25vKTAzxfJqQ1iDr3MnoULdAzbfe758bm3J1OAyb+I/SP7q6B43dJ7P06FrzXSupOOKXf8pqT+3S8fP5HYv4WuGZPWF7YpPSrGUssnuXgNfLdCG54cbGdVJrrRfoFHKK4jJV6mlTvrNQ9AULgFuPcdSuZCYEpNRcrVSn+MHomXbxVDNttHaoBKZL8UASBMIG+XlPPP9OB/oJieFVqyoK6+mzW44jP4D/eOLrOA4m7NCze2eV4fmeRCVfm4RFrWZTKnksi3Oqr9uPxj1FvdvmL9bp+3t4C90mu18PplHwLL3vFhaldtg== 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=vt6zT4/iOuFXaSohvySTvNHe91ZUkI9VRJG4XE/qnc4=; b=R5zVM/73V1Gj/2+d2zc9UwV5Xm6IRl3EDcxLMJv49r3iYfZuTvuT7nLHk9BjSqyuFZP73Ofhv5fNsD4T+6PSIAbmThXF7aJc7Q68l28xLQf1xocGy6znSLMVyWohBMA4ciLMveC8tUckMdosUvQPx4krlcV9Fio5PtD3MElFpRUln8p/V1HsV9DA1KV1FQWcOahP3OCs1XWZd6D5PB0KWOaFKrCrUVvgnQ74c+uNGdjqXNwXmcOP47FJV4F4XpQizpT0CZ7sUVX6sLOtsON7G3CosS4cXI5wy5/ArmLgRfSwopNGuqjetiyT/gFTM4XfQYrim+lxus/1hOHjCaV3jw== 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=vt6zT4/iOuFXaSohvySTvNHe91ZUkI9VRJG4XE/qnc4=; b=t6y7BjC8Hv5blVAuykRk9Q+iInjYFo/zIP9VdrtSXoKxtJtnUr3ZG9+mBZDahAtOI920Fq6GhPIk6U3uePqxqRz6Khk8sUuUu18eJ3pevgIgJ6Cet6P61ywsu/4fo837KiAf5jnsHwgCQz6ol4M3GFS9FqgJK5XyNTJq8NBOyPY= 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 BY1PR13MB7041.namprd13.prod.outlook.com (2603:10b6:a03:5a8::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.31; Wed, 19 Jun 2024 09:20:11 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833%4]) with mapi id 15.20.7677.030; Wed, 19 Jun 2024 09:20:11 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu , Peng Zhang Subject: [PATCH 7/7] net/nfp: simplify the flow action calculate logic Date: Wed, 19 Jun 2024 17:19:41 +0800 Message-Id: <20240619091941.3479371-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240619091941.3479371-1-chaoyong.he@corigine.com> References: <20240619091941.3479371-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: BY5PR13CA0003.namprd13.prod.outlook.com (2603:10b6:a03:180::16) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY1PR13MB7041:EE_ X-MS-Office365-Filtering-Correlation-Id: f4c87224-9fc5-451f-7529-08dc9041052e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230037|1800799021|366013|376011|52116011|38350700011; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uJ9Z2m3jmqcX0NmKc2BENLXiUjFnCgAnl9TOcmdc87maIl1mzh37XuevfYVM?= =?us-ascii?Q?vpcMVdkyQ5qcwoQz6GvpN7uORs8jvnJehDEGc617m4dBsyCxFwTCSfEQypbn?= =?us-ascii?Q?+iNKY0t/2LTE7rrWwMOfeDthZrlwquSnvnaz7Oa9dJjvH07UhC5ERZLAsG22?= =?us-ascii?Q?2nVAO+T8L+ef8AhUGSDPKg8MuLD3C1MOxDm6DiQ9tdua3ZOd1TgbOHeRnrrK?= =?us-ascii?Q?XHN2J9w5Rkpn2dYtbBQlFwR+YHuMzR9Aqjy7NSbWhR5qhUxuBwetoJKjdIEa?= =?us-ascii?Q?V5owTJsdEDnPwdJUTUPsQx6dBa+TPPDLesBnGfV4YcoL9VesH2o6lnqC55uV?= =?us-ascii?Q?n2EmjF6zLuwGCHvA9SKjNmWwXVbglb+JT5tdvz6WGzInCF7LMysURo/5kqVj?= =?us-ascii?Q?6td7v3QO8InXTP/COxZzuITxNV15+G4O3XCbVVzlYfxcd3Ybz9CC00m1cBRB?= =?us-ascii?Q?eIwyajxbTF8/XJtsK0MvIqal/Qn1XSedBycq3WZ1IF3Nme8nHKWoIZmTlP7+?= =?us-ascii?Q?BCUzu6HIWx7vfHFyUidLBltxve1Ybf5XP9gJzeiwQ5IFl4QGeNdvnneMzaPv?= =?us-ascii?Q?xG/x7KOR71cbeDwF6im7kmxbOPUvIXBb7BaI/ktJN/9JMWapDBaEbEFneQxL?= =?us-ascii?Q?TC9VQE2KIk2pqp6z8kmrSQdP3ufAW6KJXswwc4WLKZ0mYqk3i+jUUbZ6f00n?= =?us-ascii?Q?QrNaHf3JAMXzlI9mImaIp6NEml6xa2hQB4Wl4yyBsu4nWRpHS61gV4XH47xu?= =?us-ascii?Q?MHPKVgpWHhCqlYJBE7hYckjmgxtfK7hLJaCDS4FGRm7PNIIg+t7Eie4HX8gd?= =?us-ascii?Q?+yFrs8UPtIx1AuUfcr3WxUG+XaZHoqnJzMHN9kCWg1tzoSjJjpJcNCsLZs++?= =?us-ascii?Q?Qzzp5BgR9ukX3V9asYBEbAsxX5RaAfnwPs0bfjYCEM5WutYJzokbe1CHeMMd?= =?us-ascii?Q?tiIzknYthHtTUhvSzM+NxSWDRaS0DXaBXE0sbEjOmcMCTXhig0Wfmga6141F?= =?us-ascii?Q?jICtylQyTbyvDTogVXp9Vdoy5bqi6nFRV6s6tCGPt3GQWDbkjWfeGTAD3cxO?= =?us-ascii?Q?/eDBSX87oKzsoKjrsJNuIX8NksudONfREbUPNM7fX9dzbBWGPh9/7paapWyx?= =?us-ascii?Q?UikiAkA65kivyqR0L6ulOb2EaOsBy7ZnPh12l7sWvp6aPsxdtAxNNPPGesTy?= =?us-ascii?Q?N4/IA2OsujlUixDp4oHvo0Ywtqyd8P5hb8RBvxNAsO6AxY/KiytirpQIfnNz?= =?us-ascii?Q?k/K6LshfA0M0MWmZsgZnfUdLzbPea7bFzpbMDZdKReyHBto9WAVHYgZojJ68?= =?us-ascii?Q?XbuHSBDlEoCcz2FxIeoCwK26IH8JhethmcPGTn8OwWGr4MbYPkU3nRwphmhs?= =?us-ascii?Q?ddxhiLY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230037)(1800799021)(366013)(376011)(52116011)(38350700011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hlPbCEKLVHWXdO+nPgWvgAX8gFLCVXpFTw7FoEFTP1astUOfWCWcEca9LRff?= =?us-ascii?Q?s1jxCPF29ZE8tsQe0Ltl5WKerYeVFCJpcNaAqL9LQIIhqkvndIOWm16n7UpT?= =?us-ascii?Q?eJOtVj+zZzdvA8BxfvkEeDggWhvuHEbIjSFg1JK2pFEYTwgHXpv3wVHLLVWq?= =?us-ascii?Q?7MVYmJv3qPCtzymjlMra42r4j8MQP+ZzDLkgXIgjjZE84VaxItHkhZQ7TsG6?= =?us-ascii?Q?/jcStYMeFRf8bKEeougGwpiD6db94H/kMs/a5pNaKYIRBIaJc94lWPmPsDRC?= =?us-ascii?Q?dGispJhqr+Dlvaf+p+z+3eJNGM2XK6G101+MneIk3iFXUP2Sb3SqyLXjDpEN?= =?us-ascii?Q?4F6H068r967nXjROoiienrtUU/tLDQX8Dx8cWJGSm+bgXpZ9PMh9XHOfV8L+?= =?us-ascii?Q?Y04k8WcZ0vs73U5gGmJjRXiR+10sCm3rw3su7+eEsdE7sWdIiOvebcJU2Wxo?= =?us-ascii?Q?4YHNAYQinNBOrKwFNUy5/IPOJPTm2Fc9XhTFrO88KJL+SkIJlhnQtPurrFN6?= =?us-ascii?Q?xtKaYzspVKHI+V/nF3QSXawJyXo5snrJgcp7GLz8Y2+qu34Z8PEsK79FJveu?= =?us-ascii?Q?wKPpO1wRVrFDl7rT2GkqF72lRuxt7sXzhcyksVCon26kNaFaYWCbupKhXfOc?= =?us-ascii?Q?gBP3fsWl5ZKOkFpXBRyB1mVE2zjs5aXcRd2H9Rbv9SCEWHMcZVifmM9+/ol0?= =?us-ascii?Q?HpQkA/fszR7oSaO2qONo1pdV/xFViLUMJZJ/5Upo+BMv94wv2nyU3CZdqFcV?= =?us-ascii?Q?ukh7n51yWm13SXeSXrsrI/hChx9psfhHPQWm9crwZSkl6LKTb6FQQGTh1hha?= =?us-ascii?Q?46bVgCtTv3SQGIeUY4Rf/9pPBRj5h+qp+mPafxDzVSaEdDhmGnHeiG/Eir3U?= =?us-ascii?Q?tdgBTKa7u/w7Pn9f0lVtS+769hl8CY8makHUrSIHjTSdXV+to85hX13Mwdcw?= =?us-ascii?Q?OVWirCN32gea2wCMpp5mDmT6m/S5RwjjdrbXEmw9dQXkWslrFHbphg4akqNj?= =?us-ascii?Q?ogysHd2uVs5Kfq+LG6wV6vhstyINPu7W9/IBMH2gLQRBqSvZXAruFN0tI1Je?= =?us-ascii?Q?SjRpIXll74/WL0pe1RVNYA8uC82HtY6om0wg2iTrnA5liVh4jKTpoCFFeOtR?= =?us-ascii?Q?irZ301FTxQtFB9J0ce8yGKHSovc6jWA9a1Uk0ST3RxWmlbtgfydosi8rEQtK?= =?us-ascii?Q?OXUG0fwcAgt2gUVc3y9qYaassBbvZDyK03XuL7EfhWlp5RQAC4sZ1Oxh/yaJ?= =?us-ascii?Q?ilMr592bIIkNFt2TjjlQVIGvnYTN9mw2DSRzMc7Z4Gp1lZn7paRGbPu4IDox?= =?us-ascii?Q?UgYCk3zOtg633A+GtJxd66GqwD/aD9yDUICfbv+CRnnHS4jsZLaET03wLmo6?= =?us-ascii?Q?0WCXIlvhSF7CfVPhB3DBhUM6SrzIY6RnJ7a6/f86UaOWceWjuxQSUd+AFenI?= =?us-ascii?Q?8vTFGqySdzwgkp1RVh53cxCBO6RMY+6MRIzQLFY2fXv3ANQWHNIxdt8J65RP?= =?us-ascii?Q?B+xn9l+eKIp9EIk25VRGrP5uwyqyVLB0crCnZvOOmTkjiaRPG85DzioqnvNp?= =?us-ascii?Q?k3Hg11skuxAOSHM6cGqJGZuHEsT1DL91hbTt2CK9dOBP+KpExCENyR4C9UQq?= =?us-ascii?Q?3g=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4c87224-9fc5-451f-7529-08dc9041052e X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2024 09:20:11.6671 (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: 2af5nYU1AaQiUU+w761w1TBGaxlR0C5mFelqiucaqyTakAMmdnNhWIcWSCcbs/f4H/13c5VePz9Idf6AbmWuGawlenN6BCA+uQ3a7jUD2UA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR13MB7041 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 Simplify the flow action calculate logic. Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower_flow.c | 126 +++++------------------ 1 file changed, 23 insertions(+), 103 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower_flow.c b/drivers/net/nfp/flower/nfp_flower_flow.c index 87a3d5b394..9b144e41d0 100644 --- a/drivers/net/nfp/flower/nfp_flower_flow.c +++ b/drivers/net/nfp/flower/nfp_flower_flow.c @@ -1129,7 +1129,7 @@ struct nfp_action_calculate_param { }; typedef int (*nfp_flow_key_check_action_fn)(struct nfp_action_calculate_param *param); -typedef int (*nfp_flow_key_calculate_action_fn)(struct nfp_action_calculate_param *param); +typedef void (*nfp_flow_key_calculate_action_fn)(struct nfp_action_calculate_param *param); static int nfp_flow_action_check_port(struct nfp_action_calculate_param *param) @@ -1368,78 +1368,63 @@ nfp_flow_key_layers_check_actions(const struct rte_flow_action actions[]) return 0; } -static int +static void nfp_flow_action_calculate_stub(struct nfp_action_calculate_param *param __rte_unused) { - return 0; } -static int +static void nfp_flow_action_calculate_port(struct nfp_action_calculate_param *param) { param->key_ls->act_size += sizeof(struct nfp_fl_act_output); - - return 0; } -static int +static void nfp_flow_action_calculate_mac(struct nfp_action_calculate_param *param) { if (!param->flag->mac_set_flag) { param->key_ls->act_size += sizeof(struct nfp_fl_act_set_eth); param->flag->mac_set_flag = true; } - - return 0; } -static int +static void nfp_flow_action_calculate_pop_vlan(struct nfp_action_calculate_param *param) { param->key_ls->act_size += sizeof(struct nfp_fl_act_pop_vlan); - - return 0; } -static int +static void nfp_flow_action_calculate_push_vlan(struct nfp_action_calculate_param *param) { param->key_ls->act_size += sizeof(struct nfp_fl_act_push_vlan); - - return 0; } -static int +static void nfp_flow_action_calculate_ipv4_addr(struct nfp_action_calculate_param *param) { if (!param->flag->ip_set_flag) { param->key_ls->act_size += sizeof(struct nfp_fl_act_set_ip4_addrs); param->flag->ip_set_flag = true; } - - return 0; } -static int +static void nfp_flow_action_calculate_ipv6_addr(struct nfp_action_calculate_param *param) { param->key_ls->act_size += sizeof(struct nfp_fl_act_set_ipv6_addr); - - return 0; } -static int +static void nfp_flow_action_calculate_tp(struct nfp_action_calculate_param *param) { if (!param->flag->tp_set_flag) { param->key_ls->act_size += sizeof(struct nfp_fl_act_set_tport); param->flag->tp_set_flag = true; } - - return 0; } -static int +static void nfp_flow_action_calculate_ttl(struct nfp_action_calculate_param *param) { if ((param->key_ls->key_layer & NFP_FLOWER_LAYER_IPV4) != 0) { @@ -1453,68 +1438,53 @@ nfp_flow_action_calculate_ttl(struct nfp_action_calculate_param *param) param->flag->tc_hl_flag = true; } } - - return 0; } -static int +static void nfp_flow_action_calculate_ipv4_dscp(struct nfp_action_calculate_param *param) { if (!param->flag->ttl_tos_flag) { param->key_ls->act_size += sizeof(struct nfp_fl_act_set_ip4_ttl_tos); param->flag->ttl_tos_flag = true; } - - return 0; } -static int +static void nfp_flow_action_calculate_ipv6_dscp(struct nfp_action_calculate_param *param) { if (!param->flag->tc_hl_flag) { param->key_ls->act_size += sizeof(struct nfp_fl_act_set_ipv6_tc_hl_fl); param->flag->tc_hl_flag = true; } - - return 0; } -static int +static void nfp_flow_action_calculate_encap(struct nfp_action_calculate_param *param) { param->key_ls->act_size += sizeof(struct nfp_fl_act_pre_tun); param->key_ls->act_size += sizeof(struct nfp_fl_act_set_tun); - - return 0; } -static int +static void nfp_flow_action_calculate_meter(struct nfp_action_calculate_param *param) { - if (param->flag->meter_flag) { - PMD_DRV_LOG(ERR, "Only support one meter action."); - return -ENOTSUP; - } - param->key_ls->act_size += sizeof(struct nfp_fl_act_meter); - param->flag->meter_flag = true; - - return 0; } -static int +static void nfp_flow_action_calculate_mark(struct nfp_action_calculate_param *param) { param->key_ls->act_size += sizeof(struct nfp_fl_act_mark); - - return 0; } -static int -nfp_flow_action_calculate_modify_dispatch(struct nfp_action_calculate_param *param, - enum rte_flow_field_id field) +static void +nfp_flow_action_calculate_modify(struct nfp_action_calculate_param *param) { - switch (field) { + const struct rte_flow_action_modify_field *conf; + + conf = param->action->conf; + + switch (conf->dst.field) { case RTE_FLOW_FIELD_IPV4_SRC: /* FALLTHROUGH */ case RTE_FLOW_FIELD_IPV4_DST: @@ -1546,51 +1516,6 @@ nfp_flow_action_calculate_modify_dispatch(struct nfp_action_calculate_param *par default: break; /* NOTREACHED */ } - - return -ENOTSUP; -} - -static int -nfp_flow_action_calculate_modify(struct nfp_action_calculate_param *param) -{ - uint32_t width; - uint32_t dst_width; - uint32_t src_width; - const struct rte_flow_field_data *dst_data; - const struct rte_flow_field_data *src_data; - const struct rte_flow_action_modify_field *conf; - - conf = param->action->conf; - if (conf == NULL) - return -EINVAL; - - dst_data = &conf->dst; - src_data = &conf->src; - if (!nfp_flow_field_id_dst_support(dst_data->field) || - !nfp_flow_field_id_src_support(src_data->field)) { - PMD_DRV_LOG(ERR, "Not supported field id"); - return -EINVAL; - } - - width = conf->width; - if (width == 0) { - PMD_DRV_LOG(ERR, "No bits are required to modify"); - return -EINVAL; - } - - dst_width = nfp_flow_field_width(dst_data->field, 0); - src_width = nfp_flow_field_width(src_data->field, dst_width); - if (width > dst_width || width > src_width) { - PMD_DRV_LOG(ERR, "Cannot modify more bits than the width of a field"); - return -EINVAL; - } - - if (!nfp_flow_is_validate_field_data(dst_data, width, dst_width)) { - PMD_DRV_LOG(ERR, "The dest field data has problem"); - return -EINVAL; - } - - return nfp_flow_action_calculate_modify_dispatch(param, dst_data->field); } static nfp_flow_key_calculate_action_fn action_fns[] = { @@ -1630,7 +1555,6 @@ static int nfp_flow_key_layers_calculate_actions(const struct rte_flow_action actions[], struct nfp_fl_key_ls *key_ls) { - int ret; struct nfp_action_flag flag = {}; const struct rte_flow_action *action; struct nfp_action_calculate_param param = { @@ -1651,11 +1575,7 @@ nfp_flow_key_layers_calculate_actions(const struct rte_flow_action actions[], } param.action = action; - ret = action_fns[action->type](¶m); - if (ret != 0) { - PMD_DRV_LOG(ERR, "Flow action %d calculate fail", action->type); - return ret; - } + action_fns[action->type](¶m); } return 0; -- 2.39.1