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 98B4CA0A02; Thu, 20 Oct 2022 04:22:21 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id ECBF542CA7; Thu, 20 Oct 2022 04:21:22 +0200 (CEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2135.outbound.protection.outlook.com [40.107.101.135]) by mails.dpdk.org (Postfix) with ESMTP id 31EB942C92 for ; Thu, 20 Oct 2022 04:21:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LHvc6NceC8n6ixYL8yAFYl9TYHvU5MNtbTEABeHUchFRhML6yrgt0wpEjhrx6GId3aIT+DCGIJ0DAAQaYc3q3McEmIaHRA29A5vG9l255qwYnTsZeUPhZtWJxyaXUtTZu20vtrRlh1pS6al3XrLMG8C0kMrxz+9QdbOMTjY5p/fy4Sw85YhXl9UG76q69VD10R6tOCeAi47C/BN+IKQJsYrjEL1JiFZ8RHI+4hw9qe4wk+9TvViSuGD1X2EXJhdrD4nxKpPvlLNRf1L3PirkRo+0ihm0NWvEwi37kZO1f55wiQgNfX/UdAILOPg0V0emZYT851rzYg0MidU+ZvHMyQ== 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=WO7Y4xBCxdmOyb3R8PwxofslgJkcoC1eCHw13TnTT9E=; b=O9O7gDxTuN/+GGSF1BBKoG/gHXp1Wib5HE+Jy6ZcRhqIjVvbJi5S7uguiwzZlu9DSDrfHS9fTX+rl1ef/2Azg3/ew5Wqs9dGN2zXzePrhwk0HXjQ0zSu+TeOv23vJ4CNCbAma+wCkSqbLZ2WDuTrYIiCeuGCOJMeZsXaLe+abhHDbMW6vLD/XERduWmaBa5BuROB60XFi434zKWEXlrGTGpY8ovHHAs+jA1HTZ+hqFDnDC6pyfQt74i9AXxN2JQcQJJ4xFYwfmWlAucy5l5090t4JsSVoCaku0X92DJJbBbZ/3N+V/n5EFhXP4wbtXnWUBBrUrKBh+mUQ6WHyb6uWQ== 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=WO7Y4xBCxdmOyb3R8PwxofslgJkcoC1eCHw13TnTT9E=; b=jcK+qCm5JrRwt+ZnpTvnFfcwSrg7n/eSFCdmJgx+A2RRScbX+o8KbEmH9iAaHestCvCEdCMBZGBUtMwM4vyeuaQwwf6fVUm8u1sfcwJnOC7vfosPMwfsJ83LRHc4JsbA0iie5a4IIcKhAmPn9vepmy/N247RJLhawGJyMpTS/0w= 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 DM4PR13MB5906.namprd13.prod.outlook.com (2603:10b6:8:4c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.16; Thu, 20 Oct 2022 02:21:18 +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; Thu, 20 Oct 2022 02:21:18 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH v5 12/25] net/nfp: support SCTP flow item Date: Thu, 20 Oct 2022 10:19:38 +0800 Message-Id: <1666232391-29152-13-git-send-email-chaoyong.he@corigine.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1666232391-29152-1-git-send-email-chaoyong.he@corigine.com> References: <1666092434-10357-1-git-send-email-chaoyong.he@corigine.com> <1666232391-29152-1-git-send-email-chaoyong.he@corigine.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SI2PR02CA0048.apcprd02.prod.outlook.com (2603:1096:4:196::23) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM4PR13MB5906:EE_ X-MS-Office365-Filtering-Correlation-Id: 44224be6-5dac-4ff0-40a4-08dab241c58e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dShp9B3Ha+dIYYVEL7pagpKVfq2uy/Rrk0xlt+TDiKYhwKT0rSapGBxez7YbuBPmtSSIx/7uoPWy19Fprh2CqNgvd3ICZrhZeMm+hftLZJw/sUFVQoyc/kahoG/UQRc7gglzhPY4YfCu72o1c87t8qU/sCn8TOS2c7ag6wRSdHi3Jsj4d2/6RL+FJDHi4nYJ58YnU7jabY4t3sa3nmaQwV0iwtz3JZdX5MGIpJ8ltLLlptOnEh7Ien0JERxZv2kq37HWvxrRDa6GFICqyfelGamEHvQODLayAU2AiPX0yAA+0XqihPSveCFzgk+vfTMyepZHqJuFiG97/OE3E7cXVIUUFbDEoa9tTxlNmwezDyuLcJiyYo/teoUt+ZManMjdc+z6dlmTM8Wr1PDCqvVsyfGWxM2R1JLvgchYom8ZPOArHd05pVmZB5UB9VWIc4oqHIvenp5yWcKvnVk5Z8/oIZy0lOMuDsGkDD20c5fyg8CxMmDr6iM0jkk0xNUzBMHLm4udy+E/YcfPGhqOAvPjX2c21GD/jPUxf7iOQNfsVSkEmom7klfXIej5S25E770AFTPQrV1KtAk4aXhOBHJHTyL4yCdQ1YuzZJs/sX9eggNU3GGbTwpbricAMYl4WbtkbO7+DySl+eJy6kNm4ulu0IqEi1zu8HNqvmJT9ZLlXqLWohiePn+LIy++KDSoXqEuUQHCwEXW0tL39JX7rchv6iVaPHzt3IoscuGBbf+pVNO0JgXFgO+icdeSJ35ZmJn0Nd5RuA/t0k7z5Z4nVlseUwoB6F85juOabq+hr0dTfdV8UXnfCDfgZAU1295PpfpM 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)(136003)(376002)(39840400004)(346002)(396003)(366004)(451199015)(38100700002)(478600001)(38350700002)(316002)(6916009)(2906002)(186003)(66476007)(52116002)(66556008)(6666004)(66946007)(107886003)(4326008)(6506007)(2616005)(41300700001)(5660300002)(36756003)(8676002)(6486002)(8936002)(26005)(44832011)(86362001)(83380400001)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZFZRSzJXdlBCaDgycFNmWWZSOWdweWpFVkhHYlFiSytHa01RS3dnc1RnNGZh?= =?utf-8?B?dE92WGpyQVFDRHh0Z2ljSk1SQXk0ZHdkWkc4ejhRaGlZY1dNWUt0V2s5NG1y?= =?utf-8?B?RFliYmlnLzIyWFNZS0hiNWdxR014UFlSMFN0bXQrN3Yya1VNVE5MbWIwdGc0?= =?utf-8?B?NXRvUW1zRDExYTBDMXdkemdTTWN6VDd1VDBEdi84NFlNVGFYU2FYc3NIT1d3?= =?utf-8?B?d0FtY3dQNVBTa1dMZlJVNytKaUZMMUx6QlQxWXJLK2p4V1RQd3puRTcwVkV6?= =?utf-8?B?SU5aYWVIWUwzSm5vQkhTMkF0Vk1hWGd1YUFNZWwwZjF1cklOcHhuV2NQU2du?= =?utf-8?B?Ym1Ua3dJNDMvU0VUWkNCZEtBL0RxNmYwamNGMlVvVzZvNlpNbjN0b1UwUEVQ?= =?utf-8?B?UlNnZ2JJTit4L1ZJL0RJdDVuN0NaczF3SVl1UCsydlhtSWdXOCtUbTMrVVdx?= =?utf-8?B?b0xkcjY4S2N3VzNVUUE4WVRYZkpqYnFxaHA1ampKK3VIZ2JMd0N4WVJFYlEz?= =?utf-8?B?QlJDMWlHS2JtbUU5NnFDSDM5RDB6aVRINy95aFB4dkhINndxREhOakxRTDky?= =?utf-8?B?OTlkWi8zaHgxMm1BVUYvYXJ6cmFMVFZOVHVuUkl2M3hZSjNhbThoK1FORXE2?= =?utf-8?B?N2FlU2NiZ21tRnNMQTZDYmRuYTdEamdnME91U2RINUd2V1RsaXNXdWF1RVRY?= =?utf-8?B?ZGp4R2JzSW90QUx1OGw1ZU4vWTdEZWxjR0NwaUpEcHNTQWluT1VtRXM3eTJ2?= =?utf-8?B?RU1Bbm5rYTdVWmorMjlNQzNVQkFjaUh1V2tCUjBVM1h5eXhnRVUzbDVzTDI5?= =?utf-8?B?bVhhRnJyV3VkVERxdTFneC92a2FBMkR0QTFpQjhIM0hPcEpyQWlZV0ZhZlRp?= =?utf-8?B?aDgxRXhaem1uTnJFdUJyQVdxamNVdWFSM0xGUG5ncGd4SW0xTjdyUHRYSWtp?= =?utf-8?B?elRHSXdRL2dkVkY4ZmhOOWJ3dEF0VkpGRGNEK1pGU1Jydnh6NnhFTGlUcW05?= =?utf-8?B?TDh1ajBnbjk5SGtjVndTR1FQNHRvTk03cks0bGhuUmVIZllJR2lkYUFidlZU?= =?utf-8?B?WUNxUFFqNHhrbW84d2ZzWTZHeFg1ZHlBbmVTcmlLdElqNzcvU2lJcVVOTFNX?= =?utf-8?B?WDNmVWg3RVNvY3pRaVpMVU5oS0FnMlNvdGFqRU95YnVOMXphL2gzT21yNWxL?= =?utf-8?B?YzhTSGg0WXNmV3FENVVHcXlIbk1sQ0dZd2VtdURpeDEwTUx4aTNSMHdHY2RQ?= =?utf-8?B?WEthYXdCZWVBZGJJQTJGd291Z2R3YXVEN3ZFZVYrc2NMYklldkRQK0p3L0Ft?= =?utf-8?B?dWFvUkdoRmk4MEQ1blBFcktHUmNxVEdlV0kvbkZDbjkzVW04SStSSlNrbmJy?= =?utf-8?B?WGYzTkUzV1pFcXcxYzhwOExIU1VSTEpHWU4xQmhXV1NTZVNFVUpIUzJ2ZWhH?= =?utf-8?B?UGV6UFhob1BNbzlaZmorMitLazJoQ2llS2tSUm85c1B4K0J6MjM0R2t3Ukd3?= =?utf-8?B?MkJ6TFR6aDh5Z1lhM0dSNitoSmtKZ1p2YnhFazB3ZGRxajhLTmFQM0hnNU9u?= =?utf-8?B?N3pUTW5vWWVUelR1cktrcGh5VDJjdVVoK2hiUmpDZXR2a1B1Wno2SGk3Ryt3?= =?utf-8?B?RzgyeFNNN3loT1FqdFhxMUkwcWdvbUl2OFhTZEN2WDNWTm0wc0k0a0IyY2Fs?= =?utf-8?B?VVRTeWxNZjBwdEovR0JIczZJVnNFSlBzbFRoWW9UcnZIbG0vZkhCekU2dndi?= =?utf-8?B?WlRURTlwc2NWOExaRHlDZkJKQ2UyVk5YRS9TcTNaK0tjR05MMDQvNlBMSlhR?= =?utf-8?B?QUNPOXNmUlhVWDhpYkpnS2FlZDk2bFFjYUtxNERzMEI4cDlDVjYvRDNiR09r?= =?utf-8?B?NzRDTWVJbTAwYWljaFRONWJCQWM4SXpCVmEveTFTWE1tRlNJUVJsVlc2UjEw?= =?utf-8?B?dXNlTXJLUHEwMWFGemZ2NVpXUnRDYy9hSVZSd2xTbnNmM1JpL0dNWWZYMTQw?= =?utf-8?B?cDROaCs2Y3JNZ3hRVldSZW1XSEVMR2drbE50L2VVaFZnRTFRcUFzWnRFSS9E?= =?utf-8?B?TFU1NUVMYmcwb3IvNGxDWDhJMmptdU1oYmwvdjRKSm1kZDgwaXJNaTNhamQz?= =?utf-8?B?VGtib3hHUklQaVE3cXM5Y0ZVbEJCaVh0SWkzN3ZqWUVXQ0Qrem9MU1ZYSDBz?= =?utf-8?B?dlE9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44224be6-5dac-4ff0-40a4-08dab241c58e X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2022 02:21:18.6537 (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: vNIfF/Tqv3MvqI3DFOYHIqLkt+bWIq81Gz2dNzc+5t/GJnSLAwKEAaA8359fv4rIHA8VM8ATWaOFzJ4flvnBAuxgq4ZwUNwT+scqsoBIVPs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR13MB5906 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 SCTP item. Signed-off-by: Chaoyong He Reviewed-by: Niklas Söderlund --- doc/guides/nics/features/nfp.ini | 1 + drivers/net/nfp/nfp_flow.c | 63 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index 0af740a..27575d1 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -31,6 +31,7 @@ eth = Y ipv4 = Y ipv6 = Y port_id = Y +sctp = Y tcp = Y udp = Y vlan = Y diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c index 5dcdbc6..35456a5 100644 --- a/drivers/net/nfp/nfp_flow.c +++ b/drivers/net/nfp/nfp_flow.c @@ -542,6 +542,11 @@ struct nfp_mask_id_entry { key_ls->key_layer |= NFP_FLOWER_LAYER_TP; key_ls->key_size += sizeof(struct nfp_flower_tp_ports); break; + case RTE_FLOW_ITEM_TYPE_SCTP: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ITEM_TYPE_SCTP detected"); + key_ls->key_layer |= NFP_FLOWER_LAYER_TP; + key_ls->key_size += sizeof(struct nfp_flower_tp_ports); + break; default: PMD_DRV_LOG(ERR, "Item type %d not supported.", item->type); return -ENOTSUP; @@ -884,6 +889,47 @@ struct nfp_mask_id_entry { return 0; } +static int +nfp_flow_merge_sctp(struct rte_flow *nfp_flow, + char **mbuf_off, + const struct rte_flow_item *item, + const struct nfp_flow_item_proc *proc, + bool is_mask) +{ + char *ports_off; + struct nfp_flower_tp_ports *ports; + struct nfp_flower_meta_tci *meta_tci; + const struct rte_flow_item_sctp *spec; + const struct rte_flow_item_sctp *mask; + + spec = item->spec; + if (spec == NULL) { + PMD_DRV_LOG(DEBUG, "nfp flow merge sctp: no item->spec!"); + return 0; + } + + meta_tci = (struct nfp_flower_meta_tci *)nfp_flow->payload.unmasked_data; + if (meta_tci->nfp_flow_key_layer & NFP_FLOWER_LAYER_IPV4) { + ports_off = *mbuf_off - sizeof(struct nfp_flower_ipv4) - + sizeof(struct nfp_flower_tp_ports); + } else { /* IPv6 */ + ports_off = *mbuf_off - sizeof(struct nfp_flower_ipv6) - + sizeof(struct nfp_flower_tp_ports); + } + ports = (struct nfp_flower_tp_ports *)ports_off; + + mask = item->mask ? item->mask : proc->mask_default; + if (is_mask) { + ports->port_src = mask->hdr.src_port; + ports->port_dst = mask->hdr.dst_port; + } else { + ports->port_src = spec->hdr.src_port; + ports->port_dst = spec->hdr.dst_port; + } + + return 0; +} + /* Graph of supported items and associated process function */ static const struct nfp_flow_item_proc nfp_flow_item_proc_list[] = { [RTE_FLOW_ITEM_TYPE_END] = { @@ -921,7 +967,8 @@ struct nfp_mask_id_entry { }, [RTE_FLOW_ITEM_TYPE_IPV4] = { .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_UDP), + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_SCTP), .mask_support = &(const struct rte_flow_item_ipv4){ .hdr = { .type_of_service = 0xff, @@ -938,7 +985,8 @@ struct nfp_mask_id_entry { }, [RTE_FLOW_ITEM_TYPE_IPV6] = { .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_UDP), + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_SCTP), .mask_support = &(const struct rte_flow_item_ipv6){ .hdr = { .vtc_flow = RTE_BE32(0x0ff00000), @@ -978,6 +1026,17 @@ struct nfp_mask_id_entry { .mask_sz = sizeof(struct rte_flow_item_udp), .merge = nfp_flow_merge_udp, }, + [RTE_FLOW_ITEM_TYPE_SCTP] = { + .mask_support = &(const struct rte_flow_item_sctp){ + .hdr = { + .src_port = RTE_BE16(0xffff), + .dst_port = RTE_BE16(0xffff), + }, + }, + .mask_default = &rte_flow_item_sctp_mask, + .mask_sz = sizeof(struct rte_flow_item_sctp), + .merge = nfp_flow_merge_sctp, + }, }; static int -- 1.8.3.1