From patchwork Sat Oct 22 08:24:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 118964 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 3A219A0032; Sat, 22 Oct 2022 10:26:51 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9484A42BAF; Sat, 22 Oct 2022 10:25:30 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2115.outbound.protection.outlook.com [40.107.93.115]) by mails.dpdk.org (Postfix) with ESMTP id 946514282F for ; Sat, 22 Oct 2022 10:25:24 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BrQOPK+RWuW6mMxPNMu02+jf0m8fwW0whKpgZCVsZgMGJhstn2UG0/XAXlh+X69lkKoNJqKZ/J/nrGON9K/sOkmNLsVzSppTSqXm3S56R9oj3Rt57xuJp2YDhyD5Hby38pVdQhhyZE4EKbyIOyxUbn4IDYadO0tZp6EDePbtRwHinMUp7HC2CYPFGyW6trpV9xZnyttqjKkfRwsJQxndHVSt8feH3SkE9WkJZoRGHFeBYI8/gZebfTp5IvsENcatmN4GRR7bazHWIQ+MMZ+/kpyySLSm3tu1ZuqeQzPxB66/vXcOJ45S7RAUdW11pKlBDpECq1leI8OWOWZmbRRHcA== 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=M8h4mfglUw7AvbHR/APNWwrqPOaqYZs0Vow8sH1psGA=; b=EsW0PD5SPEnS9PBT0yPOzBnT4QIKchdDSs28UI0Vi08+lvk18Kp39zn5ZTJMfPt7EPb3bJEQGKLMdVXGzVEFMjBpf2mlvYPBEsiEbGnT/EsI3EeXiVkhr70o0xsngidiMQ9mh0jutReYA/9tm46CYe9K1JBGRWCkUmvdOSwvEA3UTb98FO/aN/HzwZHghp3xqSSd2pfWFknE1y6eYpZsuTq0iW+QvjS7W2nDLobtxK0extYg48w6gogrY2hnF1h/6BKQ4TDTBd67J2iF0YUYcAUJKcltEonf34qRLnitm/irAZ5zbr5ZS0qrNkygJ/mp04Pn1gJnUqp3/7Pk8f7+yg== 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=M8h4mfglUw7AvbHR/APNWwrqPOaqYZs0Vow8sH1psGA=; b=dB7SU+RIJTjBKiNY2ID+PKpC9BJokhxk1U//S/d1BUidzSSCPD9wK+/aFezttl+xdo5D57+mKrmUYOaLUPgKJz6zq4JV6j6HQTs03ks/Z2Irq/3e/Jh1/GboMOQC0+2NK9lPlGfzz6dCU1o29s4LALPZhJ1gFxALz4DoqI4X3/w= 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 PH7PR13MB5454.namprd13.prod.outlook.com (2603:10b6:510:130::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.8; Sat, 22 Oct 2022 08:25:23 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7c26:1a0b:2825:6f4b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7c26:1a0b:2825:6f4b%4]) with mapi id 15.20.5723.014; Sat, 22 Oct 2022 08:25:23 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH v2 17/25] net/nfp: support IPv4 NVGRE encap flow action Date: Sat, 22 Oct 2022 16:24:21 +0800 Message-Id: <1666427069-10553-18-git-send-email-chaoyong.he@corigine.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1666427069-10553-1-git-send-email-chaoyong.he@corigine.com> References: <1666063359-34283-1-git-send-email-chaoyong.he@corigine.com> <1666427069-10553-1-git-send-email-chaoyong.he@corigine.com> X-ClientProxiedBy: SG2PR02CA0056.apcprd02.prod.outlook.com (2603:1096:4:54::20) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH7PR13MB5454:EE_ X-MS-Office365-Filtering-Correlation-Id: 9bbc30ec-c24f-40bd-67db-08dab406f6d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XEXo9hANhuRkkxK2r9CK0IKU9zgAYYbbZZo71pLa6C4CWdSVq8n2igK3qFOhOH0621Ua3Wm01OlQ2mQxXF5LFUQddXTOBeSOqrlwfkhrNxRsvp6QrykBTu/5NyFBu9L54V25TNm9/VPtjUv4X5DYUaHMU4VUuOC0Homh3jO/srXjBEg3pGFcMuSWzmX2pIHOzSqKz45n6ve9GmBBxr9l5FX3OnuExyqUVDuGIsP9W+Ig5GUOjK+CevyeI9Tcs09j9WeqFJERpUgepQL/hi+Hl5/F3w2E0aOahHrDWCFvsZTLB56dMXzPJzRFMcQWTGF+EWoxHPDQudW5r7x57YlDRG711k9Cv5xWZOjsg/DqE0dVJmd9mWqT6Ak/pcm7mpmHU/9tIXgdW255YpBmwoQvilluaIob7ZTy4Q+yhZB+5nqrgtgYCmbLxkkhi0wOaSuWL5UGWFtbKD3qAW84q3K7yGTQqo8nBbQdlmzqEupqlTr0ZTpZyLZisqppPTy/r7Wa024hVWddOb9Op608FnEG5bAhbMKWNYMWfnEKIvqjLfLnritqkG9fkYhMpZgwgS0PHX5mGGkvH4UsHZPNjL//1+4Cc4B7N+kKJ9Fqkfm4xwGfGIxUo8p/EY3uLgAFxoGLOPsxsvyt++x+b/AEuyeiYd+1y4orvIj+adPFJTOjv8hIR1OX5jkk5R+iod9rfS9tuY1k0A2yXsooh6iOs/SWxYyyVzriTPmL7CzdhXbb5UXKXK1917nMiKsqdGa2cZ6/tOovUNaaA0zzSDayr5CfI+QtOnrG6Tc9rxillMHH74anMtpl6XsVF5NjBeDXTTba 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:(13230022)(4636009)(346002)(366004)(396003)(376002)(39840400004)(136003)(451199015)(186003)(6916009)(316002)(2616005)(38350700002)(86362001)(44832011)(38100700002)(66556008)(5660300002)(41300700001)(107886003)(478600001)(6506007)(6486002)(8676002)(26005)(6512007)(8936002)(4326008)(2906002)(52116002)(66946007)(66476007)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?DhLeZrBTcDw83RpmLrhyfvCk2iQx?= =?utf-8?q?aVQNYyRFipEuPuuGHySYB+k1/+pAAaccRRiQKLWYeckjTL05hAwikiNIpGES/ubVy?= =?utf-8?q?Nb8k+sS1eoKqjMyf7iI4jGQ80wRHZAaqmIf+aPzhOm4lMdm4DeyrQVI/iOp5M3vCb?= =?utf-8?q?IYVYrTC3L+Q7LCquebCmqMjopRM8n2WKfCpXdVGnUWObY5xRuxNF+dM708LQrneXQ?= =?utf-8?q?SMWp9dHvzSmeSP10YOjT7X8EArsIXGFUa3gjab+8FRriOt9b15juwrvy12bQOi6Kp?= =?utf-8?q?KbB6+j10AZlWkCchTHSEcViwWQWrpNz/ecaN6in335UsIicccK0F+Kyieykr8X3Lc?= =?utf-8?q?5vdp0dVE3KVzVQ9CO2XvgIzhl2ugSOnF4AHHBjybmayF4TRMoWCwQs+sYrXmfUl4h?= =?utf-8?q?B3OarUGQgp+HXrXN+D8lpvsyXcR62rlMF0kFKd+YXVecwjIrPpHtvhBkuJHHQsQwB?= =?utf-8?q?Y7g41ZVthX3JXSuq0//sGWpHxbQIcMgv/KdK235igJgTy1Ttlh/eFz0z3CJp8YjLQ?= =?utf-8?q?eqYBTHfay6o67U+/a/ipKk/jOyxFnGI0T3twotwSuOSlsQGZIlgENnR3DnehyVbo2?= =?utf-8?q?sTxFRJt0TiLay2LG2bJJZCbE2LStkMKBwk4HZUls/2Tj+bz7oAbKERKP/bNduBMkc?= =?utf-8?q?Ggc0zlmdqV+TEWi8tmpq8gCrZAPt4QDA1hAfknsAXLIgkcPIKu5se1kQwU2Gljr7t?= =?utf-8?q?bsx5gf9/Mc7nncO1P5p4h6g90Zp8NkqqBWKgokWUQbqj+X/qvS4t1vphk/naxBaLI?= =?utf-8?q?ZIIFWWPGPYJ8vKfOwlnj04gbgovprswT11f8k3cfoDPRzrz6Z7EvX0WrTDBoQJykD?= =?utf-8?q?iCdu14Jomt6SgmiZVy1nmPoCrcwVhYYhn5its2eQ0y4ydN8Uxq3Ya4oIgjb2P7TwH?= =?utf-8?q?5N9PsXArJ8LJR0VM6xgGnYpLAt17aMIHSLaAclc94jHw6witVccP7Ahv461jyrHk8?= =?utf-8?q?4oNIsHzEzgomOx69ldq/0ikhoazuaLq0VzhN//HVD/djEFfBSxSU9qMPeNiaXuwC9?= =?utf-8?q?9RjP9sO/Rxe6BgEWqaVJw8z11aBeLh4eM1BZ1h4PsaG8VOPzIV0jvg9KsQxaa6Mvn?= =?utf-8?q?Ljgb5hlwMkYLfMKmtCBqJQKfbPvY1IqE/3efV8OXqBCzFCar+pRNayEhCKE1VjLtd?= =?utf-8?q?j5Q67OyZhHa+gHttmTUljrfLD/taEeUBW1Ht9Sr6qi1BsKnspzAt7oGTxG7nOFcVG?= =?utf-8?q?/6cB3NALtrlvwr6zvl1YQTbk1UgZjqRKhLYhw+A4hMDj42TVEJK0THvcUwAivn2Pk?= =?utf-8?q?+8aSv0TqRdSbFpgjfSjMB4oO6VbEEPGOIDiRsA+vm0mb8bUwqVI5krQRlFTbHE55f?= =?utf-8?q?yq6X3xoyYOzpztem0JF010mvWMIZhY0dPRwjhDR5n08sJL1X6FRxfwTiWTNUXVE6x?= =?utf-8?q?Uj3s55xhGLFL+5XSS4wlyWrbZRxUBU6h+EuX6/H4oqULAN1gXD78s1g8CQoyX0285?= =?utf-8?q?BETEvwN9i6F6s9IO76XMcKGwAwf6qx8WYVySWp8aLWVRwtMGNfMQctGfvWCGnjt4T?= =?utf-8?q?DES03qIGqiABAiQ0RUBjPwepEr0Cy94i/A=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9bbc30ec-c24f-40bd-67db-08dab406f6d9 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2022 08:25:23.3418 (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: DbMgR+A43DIJb2tIMZiKYZ8WPWABPUvazoU/9eL2RkEXKCCciQ4DynfdX+mzMfp/HKPZgKvuvvSuRVbHnF59fTv2aBb483DDKY0C5C+4sic= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR13MB5454 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 offload support of encap action of IPv4 NVGRE tunnel. Signed-off-by: Chaoyong He Reviewed-by: Niklas Söderlund --- doc/guides/nics/features/nfp.ini | 1 + drivers/net/nfp/nfp_flow.c | 43 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index c017be1..f6b658b 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -41,6 +41,7 @@ vxlan = Y [rte_flow actions] count = Y drop = Y +nvgre_encap = Y of_pop_vlan = Y of_push_vlan = Y of_set_vlan_pcp = Y diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c index c7daa14..00b4c6d 100644 --- a/drivers/net/nfp/nfp_flow.c +++ b/drivers/net/nfp/nfp_flow.c @@ -47,6 +47,10 @@ struct vxlan_data { sizeof(struct rte_ipv6_hdr) + \ sizeof(struct rte_udp_hdr) + \ sizeof(struct rte_flow_item_geneve)) +#define NVGRE_V4_LEN (sizeof(struct rte_ether_hdr) + \ + sizeof(struct rte_ipv4_hdr) + \ + sizeof(struct rte_flow_item_gre) + \ + sizeof(rte_be32_t)) /* gre key */ /* Process structure associated with a flow item */ struct nfp_flow_item_proc { @@ -2828,6 +2832,41 @@ struct nfp_pre_tun_entry { } static int +nfp_flow_action_nvgre_encap_v4(struct nfp_app_fw_flower *app_fw_flower, + char *act_data, + char *actions, + const struct rte_flow_action_raw_encap *raw_encap, + struct nfp_fl_rule_metadata *nfp_flow_meta, + struct nfp_fl_tun *tun) +{ + const struct rte_ether_hdr *eth; + const struct rte_flow_item_ipv4 *ipv4; + const struct rte_flow_item_gre *gre; + struct nfp_fl_act_pre_tun *pre_tun; + struct nfp_fl_act_set_tun *set_tun; + size_t act_pre_size = sizeof(struct nfp_fl_act_pre_tun); + size_t act_set_size = sizeof(struct nfp_fl_act_set_tun); + + eth = (const struct rte_ether_hdr *)raw_encap->data; + ipv4 = (const struct rte_flow_item_ipv4 *)(eth + 1); + gre = (const struct rte_flow_item_gre *)(ipv4 + 1); + + pre_tun = (struct nfp_fl_act_pre_tun *)actions; + memset(pre_tun, 0, act_pre_size); + nfp_flow_pre_tun_v4_process(pre_tun, ipv4->hdr.dst_addr); + + set_tun = (struct nfp_fl_act_set_tun *)(act_data + act_pre_size); + memset(set_tun, 0, act_set_size); + nfp_flow_set_tun_process(set_tun, NFP_FL_TUN_GRE, 0, + ipv4->hdr.time_to_live, ipv4->hdr.type_of_service); + set_tun->tun_proto = gre->protocol; + + /* Send the tunnel neighbor cmsg to fw */ + return nfp_flower_add_tun_neigh_v4_encap(app_fw_flower, nfp_flow_meta, + tun, eth, ipv4); +} + +static int nfp_flow_action_raw_encap(struct nfp_app_fw_flower *app_fw_flower, char *act_data, char *actions, @@ -2865,6 +2904,10 @@ struct nfp_pre_tun_entry { ret = nfp_flow_action_geneve_encap_v6(app_fw_flower, act_data, actions, raw_encap, nfp_flow_meta, tun); break; + case NVGRE_V4_LEN: + ret = nfp_flow_action_nvgre_encap_v4(app_fw_flower, act_data, + actions, raw_encap, nfp_flow_meta, tun); + break; default: PMD_DRV_LOG(ERR, "Not an valid raw encap action conf."); ret = -EINVAL;