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 317EBA0560; Tue, 18 Oct 2022 13:29:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1981E42B86; Tue, 18 Oct 2022 13:28:02 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2100.outbound.protection.outlook.com [40.107.236.100]) by mails.dpdk.org (Postfix) with ESMTP id DD04342B80 for ; Tue, 18 Oct 2022 13:27:59 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kwR2LfSlmcka28zpPTm5gOO895tTg7Bl+3/A8hwn5NmXEBP361+PZGLRgM3T0QgjyJ+WJnWvhb+DIdcxhzVSlfQ7IqJzNr5+rgf9YsMljbacoz7mJzclJYcsSLR/7mDe5xZJcKjMPpOdnX8OXROLPqInvtYEFr6tLgqT2KBnajWX7rgtvncSFtqCZbimqBhT36/95XTbGpOKMyXAUDUgRb4qklIHKQGUWA8Afud1YFDGpQLkQKaVItVKLBSnkCsYITeokplwRnhIBJzPxmoYkobuzt26kf3hH55u1Ty3pi/dVq1xfOJZ2rR6ahM01iAC1yNk7nFfXA9Hgho/cb7EWA== 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=GFc0FCxSZS8CzGi7fycv7sOvZKYP840uwSnDXh4h+90=; b=HsGSwB4QOTa4kWM8Rc4vzplM4Zj/Tyc3qLaznWkCMxUvC4ITg43UJnUZaLn57VPIOQNJh00sIh6jbzi23q6EFV7a+U/KmR0pXr+EZv1Ikao/tGc0oqj17WTeg5CvrFmrf0tgJH5CDuTNigIbSMjuKPAQq94US5g8IkP5vC84ZjTCSPNb6iQACatGL+0/YnhgY/7gV4qpW8RiWsgZtLa/fS3wqatm7+fep0iAlliXCc9XdR7d41/mlPn2V6uBoVa61o15eF7qsG+pSHBJADitGaUP+96FG6mKJ0ZI95cd1R9Lkxcfqtt2wUKEd3RAOomqTRDmZ7DxSjLmX4y//Q6l/A== 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=GFc0FCxSZS8CzGi7fycv7sOvZKYP840uwSnDXh4h+90=; b=lRiio69mSRD5LbBD4PMTQxlOdeohUuwpmRgD7gRZN7wO18pp1T9ymPfcPuD4iFagEEz7IBfcGfB43xVZE6zutV9Lwi9BdOFxGd+w+ZSE+bw/+/EHeL8pGwPclapTW0/tNwebAraiK4MyRkKySf0/NzAYuGjKJ9eHLKDJmBWr5xg= 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 CO3PR13MB5686.namprd13.prod.outlook.com (2603:10b6:303:179::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.16; Tue, 18 Oct 2022 11:27:58 +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 11:27:58 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH v4 12/25] net/nfp: support SCTP flow item Date: Tue, 18 Oct 2022 19:27:01 +0800 Message-Id: <1666092434-10357-13-git-send-email-chaoyong.he@corigine.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1666092434-10357-1-git-send-email-chaoyong.he@corigine.com> References: <1666092434-10357-1-git-send-email-chaoyong.he@corigine.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SG2PR02CA0052.apcprd02.prod.outlook.com (2603:1096:4:54::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_|CO3PR13MB5686:EE_ X-MS-Office365-Filtering-Correlation-Id: 880cf12f-53da-4ff4-154d-08dab0fbcef1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8GXcT97Ij/yPLlghX3kfqMwtbZxPv5gI/Vhe4kZZx73qzRVhdmd0wbPXnUy/FRewdl0wy8kCMHDSHqiZ0lJaJ7lE9THpG2ZED8pQcnipCdtpg8+bWwKxRiEeAvD83cZY53VB2jdbucLMs0WKgLhztis+x52qQNwbTmoCvmzfveFJY+3iuVKXy2fEnetHaJyQwnOYeKl8b1AjjJ+7+ELn4UJywtAocrGxxH/7Sl0wn1QgZBgzFI9pTmbmo2z9ybu8shdYzi+VS+OzY4Ib3uLdA6wvn0wqkeCKMC2/z0CdYWxO77pcHrXuxDneFXZGvhRcubxxFqskOZoE1h3z0P9FnaaSNBvbHXaVnhsRM28nPyOMttt0v15pt2X3zsn0FCR8sQupsQsTjTqy7gF9hlpxsP0AZGExf2y5vzgRcJnW0hxUgvZBD9EVQufSn1KtmkE8NLAZ6Ocy0kforuh4LAbCiDljwkR1qlQcrsHM5BTBO+bj9NAFNfAGMs+MyQZF+MxmLeGwTPuRP2Mp2rqElxp1WlQK/XOnZiB7D9StqtwOUZ9TjSXeN6ar/1TkApbdGjbsJ3teOKDnqxqNACfKTUkIXpwjYVdakSOD0ImN/rfWiGViT8anYZbX0UcRZyV/Mc+ObKMT8o4Mqr8G384D+bcbA+D1buX9zCd5Ty1/YbBvQtH/RD0i59sUXWw2C+Xy3o2tL1f6ZsWG2UnrhOeKVLfSllZCvgS5GXD8YlnPEKECY9tHkPLGS2Q0J6+SzAIS9YBKtMukD4A1krUMg64m/RllVOxLCKBJzErj04Lg1nQjDnelRKkjpDP7LBgkoe3Ol/ls 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)(39840400004)(396003)(136003)(376002)(451199015)(38350700002)(38100700002)(2906002)(41300700001)(316002)(66946007)(66556008)(66476007)(83380400001)(4326008)(8676002)(6916009)(86362001)(44832011)(2616005)(8936002)(186003)(36756003)(5660300002)(6506007)(107886003)(6666004)(6486002)(478600001)(26005)(6512007)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MzRCSHVlempGSHJNaEgwVm1NcDR4c09STlV3d1ZtNkR6K1dmdDBkMGNNaFh0?= =?utf-8?B?RlU2bFRMT1pSZ1pQU0wzSVA2cmVSaXlNdmhjRElVZE1KWnBxdlVpWEtEYmJC?= =?utf-8?B?UGE2ZjRzeFpyQ051emZ2bVFFbXpxTUhjQVQvTEFJZ211ZUtid3NuZWpJc3gr?= =?utf-8?B?TGF1QTl4NGNuZGVGblZwalByeGdYWjUzUi92N2dYamV6VXk2Rjd0bGx6eHNT?= =?utf-8?B?NHVoY3FNcm1JekMvNlFlNzlSWElJejJkcmMyZ09vTmp3UlFQc3l6aWY4NGw5?= =?utf-8?B?M2lob1lxQ0Z1aWM5K1U1bDBXbWVQd0l6ZmVCQTlrMUUzd0lBREdJWCt2NTM0?= =?utf-8?B?SWdXUkVZeEllK1dpaVJhUDE3OXd4M2RqcXlkVmlMTzJvaXlwbHRZUFk1cEla?= =?utf-8?B?RnhUZko3NXJVSlNBbE9LYStBRTlyb3B3cnU5UmVRM2d5Mk1qWEwrNlhxdFk3?= =?utf-8?B?QjgwTzNyT3pxblk2RkVIazh1ZlUyWFdCdFlJWTU0Q0ZJLzgzYlA1WXkrUXJY?= =?utf-8?B?YzFiU0JVcFM3VENRUXUzN2VHT1lYc0l4cnNYQVRGYzRWUndLTDNGdjRCZmZz?= =?utf-8?B?OFZrcCtENkdZUEhObEppclRzNTB4TnpIQUVRK3FITWRCWkdkV1cxOFdOL3hv?= =?utf-8?B?MVJIMUFlVHkzOW83ejBidVRUbGtGSmcxZUJXVm1BSUhGYWd1MWNlUkpSd3c1?= =?utf-8?B?ZGhJQnFMNU93ZGp6YzdteHZmbFVBTGVmUFh0bU5aVnA3N2E5NzFLbFhOM1RR?= =?utf-8?B?ejhXd1hOUWMvQWlmR3p2UmR4ZFN0WVNZQjQybWp1elJjNmxjS014cE92Ymdh?= =?utf-8?B?VjcxbElEZktDUU9abExBeUZXYzZTMTEzblBSc2lRdnpXeTNObUJObmJBRU1u?= =?utf-8?B?dHZYN3Q2ejlld1lSRFFqK3JxcDFVcXNCZXRZVTZ5cVdkb2VjTGdGODFuMWVV?= =?utf-8?B?UEczWk51K0Vtb09mQldSbHlwKzBKU3YwaEl5Q2c2VzdGcDNiRnlFZ0pxTWVq?= =?utf-8?B?RzNTNEE0aUxwbDJFYUkvV0lFNWpEZXU3WWZqZzQrL2lDdEFOK0J4SVFiNW9N?= =?utf-8?B?YmVSYnd3dGVvdzFsUm9wRjBLNEo2THU1T0JGRy9jL0lONE9abU1BMmxaYURB?= =?utf-8?B?N1lSK3I5b3NTdnN2djBsZzNFczF4MnFJbHAvRGE0anlUVXdNMHFTUUszQkJj?= =?utf-8?B?bVdYdmt5NE9SL3lEbGNKYlBmRk9TV010dUx2MzVFd2g2KzFBaWNXSUUrTnpj?= =?utf-8?B?M0pCcURYbzZGeEJEbUJjaVUrazFWek5lRUY2LzBqZUVjcXRBd2tJbHFVRHB2?= =?utf-8?B?SmRnWmxwRjUrTUtTYmp6eWJsVCtjNm5Rc2oyWjFGT1BLQy9mZFBZQTlxQ0Q1?= =?utf-8?B?MlZKdXZ6ZGt5WFZ3a3hLV0FxSFBPM0hiQzRLY05FM0NWY1A2V3dNYU4zc2dI?= =?utf-8?B?b0lLRUZLM0dpSDRrMmU3L3c3K2lDTTMrcHEzWHh1SkloekFRV3BXdWVwdm5R?= =?utf-8?B?WjBya0w1RFJZYzZUeUVjeWxGaVpiYUd4OXBlN0FVN3lnVWtBRDd1ODFrWFc0?= =?utf-8?B?aWhvR3FRcFUwTFRBZU0zVkRXMjlWbVhhMUtkR01rM3NhSnc4VzUvdEdkdW1K?= =?utf-8?B?dFFDS0JJcDNFMEhPYlM0QUtnMWJoNm8xQ2JQT3VIbDlwdkN3VUwwM1JMWmRx?= =?utf-8?B?dGEyWVBLUzh4MkFrQ2VDbWIyVHRDKzJrbisxTHp0dkZ5cEdFVXY2RnluVzNO?= =?utf-8?B?TWtNK1poTnZhYkd2a29kWStoOE1xYVA3M0JUWmZTWGIzSUE1MDdES3NNWjhY?= =?utf-8?B?dlFjdTRyampmcTN5NUFhUDUxRlY5RDVkZDg1M3pMdTQ1WmJJTmNYaldUTDIw?= =?utf-8?B?a0xpQy94c0lhdHVvWWh6and0MEQ5QTNYcnU3cWlMcHpUUmpQbU1hOUxOZzdL?= =?utf-8?B?S0ZUTmFIazIwZ1FZakpSUHdmUzRTOWh1MDFNcDBXWnM0SFFBbVYrUkx4ZllF?= =?utf-8?B?QzBmQk9iaDY0LzhTd3dSVGY2WVViWWpXeWwwbFc0K2dvaWVKM3F3YWhhcERN?= =?utf-8?B?ZmozM2N2YUtlbXM1VXNjbUxtVG9pS2NPNzZvTzgxZmZSMm1VclpyVUR0L29p?= =?utf-8?B?YVpncGpGZ2t0UlkrL0JobldXeWhsWERsU0V4N3l6Q3N4T0FndUtaM25TK1lR?= =?utf-8?B?U0E9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 880cf12f-53da-4ff4-154d-08dab0fbcef1 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2022 11:27:58.4969 (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: faSA2Vi5RT0F8l09H6JZ5yBdKnGbVVS9uAJxswcKRYjOGcBOIjrQZ2RClIyhYhzTIh+ZYWlVpLp/0OzwgBeDROrXYlE1JwuOAt/wGDmm6V4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO3PR13MB5686 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 3f3aaa9..79a175b 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/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c index afc7099..6b0d9ae 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