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 A7209A0560; Tue, 18 Oct 2022 05:14:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 17E0342B83; Tue, 18 Oct 2022 05:13:17 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2099.outbound.protection.outlook.com [40.107.220.99]) by mails.dpdk.org (Postfix) with ESMTP id C29E842B7C for ; Tue, 18 Oct 2022 05:13:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AjTEZvV2VymmsdS9Ontzm/86I//53hnOPlbucLufUaFFsPUht+qLKy6AhCJ/sUcX513hE9OVAlkJtbA+sPKmfZ/Kz2m9iwPIXIF/IIIS2cnu3g3R6PM1wBSjIyQvGIz70jrjaBWGWxPOVbChkehYsiENEUODjPbiNziYDaAa0ybDCCUUZ2dVWlXqqFdxH9rY7sMl26cfOytMftPnkvYe9SgjQ5zTLR8znQJlq0C0iE6uxRYfEy1SL7BZhHumLQZkZS02z7EI3eocHKb1nzT7bVUIqOVHuqZZCS07wB8+n9rfhMnWNBPer+vJ2o0tjuUPMk9J4xl5plu7bdBoxM9Ndw== 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=fv+NCtmtlvlzTxw9Jq58ncGOQtlKuJ2qMcKinA9t92w=; b=jaVz5d81P9GMKlB8N1JA2F1wBhPiUN/w9DgGjjeVdytJcQ85Nj73DMZ9vxN9fpUJNZ6sTaVohMpW+bewcUT73K7K+nCsjhIHBZsNfkpKOIb8Lqmpm6Nl7o/dTjTmD9p+Z+z5AHdVsDgTLB0l97iO+Djs5ObtJlrzdxmUKR88ZQx/L4d8obDznzZpQ3gU6JkeEEoD84mw/+VZUjOFrgE3esHakcC1H1g8P373blqfv+Va1g6A8R0SBamXeBphFyoQTAdy6KG0COpeux0nWhc+h5h3GKH8kSW/WBkCapgbAY49KVTCwLw2jajat1iZtu4snTL1ocKjg3cLJBB0cYc1gQ== 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=fv+NCtmtlvlzTxw9Jq58ncGOQtlKuJ2qMcKinA9t92w=; b=FHvk2492b22VGFvlvOdKvjVO3K+YbzhtOgczbTCukw9X7hjViSKvcG6IdHStGYlI4TOM9AgOYkzrCHj3e8cv9o36vD4RuvNMJrgr8Ieq/DNppJL+VwuW0b3NasY5hujGHgYp4i1DB/mXshrT12AI+KLHNNb9iKWs1W4qNRGxq1Q= 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 DM6PR13MB3865.namprd13.prod.outlook.com (2603:10b6:5:1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.20; Tue, 18 Oct 2022 03:13:13 +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; Tue, 18 Oct 2022 03:13:13 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH v3 12/25] net/nfp: add the offload support of SCTP item Date: Tue, 18 Oct 2022 11:12:19 +0800 Message-Id: <1666062752-33689-13-git-send-email-chaoyong.he@corigine.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1666062752-33689-1-git-send-email-chaoyong.he@corigine.com> References: <1666062752-33689-1-git-send-email-chaoyong.he@corigine.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SI1PR02CA0010.apcprd02.prod.outlook.com (2603:1096:4:1f7::17) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB3865:EE_ X-MS-Office365-Filtering-Correlation-Id: 5274e506-255d-4732-e1db-08dab0b6b140 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: U0ZDjRH0VhTGT6UmBcMno9QLrqf+ysow2Vi03PvodUCKwu/HY+HYdVsEamwCbv9QAswMwzLBkzvG9QNQp88zYnrd3R8ouAGP1O49rDCSBCbo0LUjFahfSK+KzdKyoannPthWvZ5tpneLeaklDcDFaMZjeJAQOFvynGLbaUlxQQfi+TsW550QfbwhNBTW9BB5JXk5aAELxbF4BQ8GwruzuCnVDsuyEL2q5UjDYPIDsrZ2Xb+AsUHZo7WcpLrDJ59FkjpSMnCImBGutUUN/yUmoEc7NX90IoybE4f+rR0acxJ7VVisd8o51qAJ5jRfAPkdQdni57CW4cxkcXXpONpAM3GwJHkxttEovZFY3PW94PK4/9NQoCSuhi09x+bRSTY3aKmQNZgVwyBuwWx2JRlWdMW9CplHMTSrKjc0CicGhcOXBwGVj4aM8DoM/uGEn2KiSK5epZy0t/dhzp2RRhhJ0PhiWDuVb8pIoWgCs97US4bUE78PXXwuXweENx/zKGVROpmm8h69xIqYQDS53KuT1jGIeKxoyBBXz6Bwu+KEaUO1EfZmxhWY1yYnfJVkrTZ3/zhkI5GJU2nPQyTAx3j8Ar7WXhexJAfliFK/dpFEDYc7q9/85jDbF8aCvSpDkbI5hc7RLtVw1Fm4RRWs/NvesXlP4F737SiE3Tw3Xw++vvqVkFbJMD4uhMtu0SmeQcnH2tQ2BhRYySLWqWSPC/V7y17ebynF3A2bK9sX5HIo2mmfH9slQjvh0fPw0K+DJEmeRY0VX8Go638CVVr7qpSzKw== 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)(39830400003)(376002)(366004)(136003)(346002)(396003)(451199015)(66476007)(6916009)(36756003)(2906002)(8676002)(86362001)(38100700002)(38350700002)(44832011)(186003)(41300700001)(66946007)(66556008)(8936002)(6512007)(26005)(52116002)(107886003)(6506007)(5660300002)(316002)(4326008)(2616005)(83380400001)(6486002)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UU9YNWxtRnN2bUlickZDYzRwZ0IzV3FTdlF2bHBVOTJTNGhmVG51czRNYXg0?= =?utf-8?B?LzZybGM5ZFJYcXFyNXVxUUFNcWU5ZGkwWkJKc3BERnFwZ2hYS1IxNGVDcURR?= =?utf-8?B?WTFBSXdPc1JrWG9uM21RcjMrcm5iU1RESmhnd3IwSnpmTHJjbWpXVEJ0OVNo?= =?utf-8?B?OTBoTmtOMmFHR21LcytMYnBkd3VSZmRETERyeUNzUHdqRDBqSHlKeldmQi9Z?= =?utf-8?B?clVlamNBby96STlaUXpGKzVCeDhUSFZ4R2R2elhwbmxnZmtUWkt0OVNkbk5r?= =?utf-8?B?S05UQlAva0ZvWnI1eTkxVkFLV0NTVVlrSzdZNjhOeTVkSmN1VWZCams3ZW1j?= =?utf-8?B?UTNmRU9UN2dYQ1UxRURzdHJMbG5BekFua1FTQU16MHlDaEFLZjhrT3oycml3?= =?utf-8?B?OU5GbUU4MzVpMkEzKzJ0VXZWbGc0bTNlQWhqbXJEVldIdFA0b3RiWVBQT0tC?= =?utf-8?B?RzZ5SHh1bHFWa3E4cjc2MFBuUGcwVFRzMFh1d1lVd3FoOE02cmgveWY5aUpt?= =?utf-8?B?ejN1WFFmdDRISlJjdTVSU2VBaDRzNUUvVGV0cHhKSUN1VnpZeEZNcU43SG9M?= =?utf-8?B?czZzTnFRaTEwQXBwQit2RFM2WTU1ZUh1M1ZaUkRneHFsM0NvWk9BMzdUV08y?= =?utf-8?B?WnoxRXU1aUlLcTErTHFFMSsvWENIMWJnMjlGRVdRemNsYW1HNUd0NWNCcWhm?= =?utf-8?B?UlZmL3VpQkMwRVE2eUpLeDF3MTJVM0RxZkZrWnFyczJZVW5MQm5jQmZyN3hy?= =?utf-8?B?MlZCYVlZYWFYenZmL1IwRGh0NEY0YlJGRk16UFBDcjk3NlJ5UDlsTFltZyt4?= =?utf-8?B?VlMzUGJDd2pselV4SFppbGVpWnU5azJSUFh1cTE5VjRWd0hiRWxyTVVMZCto?= =?utf-8?B?bWxvWXRoSU5iYTZpdGpoY0Jhbjd2eDBXRzVhN3B2L0p6Uk9DV3Y4ZzRyRit3?= =?utf-8?B?NEoxSGJWeDZPRW5aZ292QlFqWnJVVWVXcGtuMkFnTENDaHRTTkxtRUVhWUdD?= =?utf-8?B?YTI0dlpSZU1RY1FMRWs4SFkxcm1XRlJsa0ozK3NNQWtHU1RseHAxR0pJZm00?= =?utf-8?B?TTRVUUtWSTJTSHBHQTZwWHdxU3ExMGZ4UmpOWGhOYjBGWGU1ZUxtWGdEMnhZ?= =?utf-8?B?VUFYRnh3ZXRrSGxNOGFJUnBHS1U4K1oyRnZzSUxIT1B0M0NyUmdGcExsbVNh?= =?utf-8?B?T1lXQ2FqWGhOMElHODVpVUpqOHRRamQ4ZGZkTkswbnEwSlFPakNDZHNsOWxW?= =?utf-8?B?WCs5bzhUQ3FRU1NCdjk2ZXo4cFZ0ZXFIUi91MnlEK1hteWl0Q0VyVVBLdSt2?= =?utf-8?B?aE4yeHhrSFo5dmd3MXNKa1QzMFFXcVE0VnBDdk1tM1dvZkEyY0F3Vm5CRmZY?= =?utf-8?B?djhWZ3FpYlh2WnFSZEpuN3pzcjZ2dWluMVFnSkFPUXVUY3RTbUFVT3FSWXZJ?= =?utf-8?B?OXNTSmtGUVUwUlpFTmdnUDNEakVpSFJtNnR5eXdBaEpmR0xlRXduajFhc3R1?= =?utf-8?B?eG16V1pHWWFnWHc5citvUVpiRmhBTnhiNFZxRVI2ZDNRLytocmhJaURmTURW?= =?utf-8?B?L3pnV1YvSlF4T255eE5Cemp5SnRtcDQxSHBtLy82bTQ4NHNhNjBiR3U1cGpU?= =?utf-8?B?aytGdVdVZWQ0VE9TaE1NOW1VbFVxTERsMU5qRXRrajF3RnJpU1FzanNxbXVU?= =?utf-8?B?eTNNN296cTBvY2Fyb1pjTTd0d2krZlM4bDM4NFZmZGZkK3NtcGxBTmNCamho?= =?utf-8?B?NzgzK0xXR2JYaC9aVjZCd0xqN1FSNmdsemVQeEM5QUxkV0lxZVBNRG1qRFVN?= =?utf-8?B?Qmt1V3BOTlgyUitoSTNaNnprcmpYMzJMc3hzcTE4aXhNeXlGTXYreWtQVllO?= =?utf-8?B?NC9sNyt1SjZqb3hHSHEzM0NISGVGbEExdXBUTXEyQi9sc2o3S3V4ZUZ3a2JL?= =?utf-8?B?dGVkSlZEbzNCVHF4akJKMG1naXIxK2RCZDRZSksxdVR4VGhPVmRGR2VEYXRi?= =?utf-8?B?WGxSRmo2ZWJNWDA5Z1NsRGFSOW9uYjhYVzM0ejBtOVF0NDdDZjBKVnVIUXJj?= =?utf-8?B?TE5oYmlhSTRUNDJ4Y2h6ZUxIZFJpOTlGdk83bVNzbGdVTWFiWHVrVUZrSXAw?= =?utf-8?B?YlFMWmlGc0k4Qk9QVit2R1V6eGNkSC9XYk9HL2V2RS83MjhqV0N2QVByL1BK?= =?utf-8?B?K1E9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5274e506-255d-4732-e1db-08dab0b6b140 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2022 03:13:13.3526 (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: j3OI/ly676ly+QnpPgnmW7GIIo6U77Yg+0GWf5LlCJGHxTLi2nYsQ0y503X8jNYEVSv4a7Wss4S+B9a4zoWXlF+Ly5H9BTCR8kB/oUHKDwM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB3865 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 + doc/guides/rel_notes/release_22_11.rst | 1 + drivers/net/nfp/nfp_flow.c | 63 ++++++++++++++++++++++++++++++++-- 3 files changed, 63 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index f6ba2eb..f8f2577 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -32,6 +32,7 @@ ipv4 = Y ipv6 = Y ipv6_frag_ext = Y port_id = Y +sctp = Y tcp = Y udp = Y vlan = Y diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 7972725..2c21eed 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -171,6 +171,7 @@ New Features * IPv6 * TCP * UDP + * SCTP Add the support of rte_flow actions as follow: diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c index dc917fc..bae53cd 100644 --- a/drivers/net/nfp/nfp_flow.c +++ b/drivers/net/nfp/nfp_flow.c @@ -554,6 +554,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; @@ -896,6 +901,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] = { @@ -933,7 +979,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, @@ -950,7 +997,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), @@ -990,6 +1038,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