From patchwork Tue Oct 18 03:12:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 118297 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 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> 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?q?QOX5lmFsvmIbrFCc4pgB3WqSvQvl?= =?utf-8?q?pU92S4hfTnus4Max4/6rlc9dRXqqr5uqQAMqe9di0ZBJspDFqpghXKR14eCqDQY1A?= =?utf-8?q?IwOsRkXon3mQr3+rnbSTDJhgwr0JzfLrcmjWTBt9Sh90hNkN2aGGmKs+LbpdwuRfd?= =?utf-8?q?DLDryCsPwjD0jHyJzWfB/YrUejcAo/zI9ZQzF+5Bx8THVxGdvzXpnlgfkTZKt9Sdn?= =?utf-8?q?NkKNTBP/kFoZr5y91VAKWCSUYkK7Y68Ny5dJcuUfBjk7emcQ3fEOT7gXCU1EDstrL?= =?utf-8?q?lnAzAnkQSAMz0yChAKf8kOz2riw9NFmE835i2A3+2tUvVlg4m3eAhjmrDVWHtP4ot?= =?utf-8?q?bYPPOKBG6yHxulqVkq8r760PnPg0TTs0XuwYUwqh8M6rh/yf9iJmz3uXQft4HJRcu?= =?utf-8?q?5RSeAh4s5E/TetpxJICuVzYxFMqN7HoLs6sNqQi10AppB+vDS6Y55eHu3VZRDgxql?= =?utf-8?q?3CoZOA37TWO2Zz1Eu5iIKq1+LqE1+/XCH1bg29FEWQzclamG5Gt5cBqhfRVf/uiBC?= =?utf-8?q?0EQ6yJKx1w12U3DqfFkZqrs2YUnLBncBfr7xr2VBaYYaaXzvf/R0Dht4F4bRFFMzP?= =?utf-8?q?PCr976RyP9lLYmg+xVS3PbCwjlzUxHZileiZu9k2RPXuq19V4VwHbElrMULd+hmlo?= =?utf-8?q?YthINba6itjhcBan7vx0WG5a7pv/JzROCWv8g4rF+w4J1HbVx6OEnZgovBQjZrUUe?= =?utf-8?q?Wpkn2AgLCChtSNLmEEaYGCa24vZReMQcQLEk8HY1rmWFRlkJ3+sMAkGSTlxp1GJIf?= =?utf-8?q?m4M4UQKVI2SHpGA6pXwqSq10fxRjNXhNb0FXe5eLmXgD2xYUAXFxwetkHlM8aIRpG?= =?utf-8?q?KU8+Z2FvsILHOPt3CrRgFpLlmSaOYWCajXhN0IG85iUJj8tQjd8dfdNK0nq0JQOjC?= =?utf-8?q?Cdsl9lVX+9o8TCqQSSBv96ez8pVteqHR/u2yD+XmyitCErUPKu+vhN2xxkHZ9vgw1?= =?utf-8?q?sJkT30QWqQ4VpCvMm3WofA2cAwVnBFfXv8VgqibXvZqRdJn7zsr6vuin1QgJAOQuT?= =?utf-8?q?ctSmAUOqRYvI9sSJkFQU0RZENggP3DjEiHRm6tyywAhJfGLeEwnj1astuxmzWZGYa?= =?utf-8?q?gXw9r+oQZbFhANxb4VqER6d3Q/+hrhIiDfMDV/zgWV/JQxOnyxNBzjyJtmp41Hpm/?= =?utf-8?q?/6m484sa60bGu5pjTk+FuWUed4TOShMM9mUlUqLDl1NjEtkj1wFriSQsjsqmuTy3M?= =?utf-8?q?7ozq0ocaroZcM7twi+fS8l384Vfdfd+smplANcBjhh783+LWGbXh/ZV6BwLj7QR6g?= =?utf-8?q?lzePxC9ALdWIqePMDmjDUMBkuWpNNX2R+hI3Z6zkrjX32Lsxsq18ixMyyFMv+ykPV?= =?utf-8?q?YN4/l7+uJ6joxGHq33CHHeFlA1upTMq2B/lsj7KuxeFwkbKtedJVDo3BTqxjBJ0mg?= =?utf-8?q?ir1+dBd4YJK1uTxThOVdFGeDatbXlRFj6ebMX09gSlDaR9onb8XW34z0m9Qt47Cf0?= =?utf-8?q?JVuHQrcLNhbiaI4T42xchzeLHdRi99FvO7mSslgUMabXukUFkIp0bQLZiFsI8BOPV?= =?utf-8?q?+vGUzxcdH/WbOG/evE/728jWCvAPr/PJ+Q=3D=3D?= 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