From patchwork Fri Feb 9 08:52:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Hu X-Patchwork-Id: 136573 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 56E3D43AC2; Fri, 9 Feb 2024 09:53:21 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C9FE2402AF; Fri, 9 Feb 2024 09:53:20 +0100 (CET) Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11022011.outbound.protection.outlook.com [52.101.51.11]) by mails.dpdk.org (Postfix) with ESMTP id 029B440293 for ; Fri, 9 Feb 2024 09:53:18 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BNto4CndnYMBim2mwvR6FWsLTLQrWUcruQvIk4gxoJw1eCgGktrMNF70cJRgE7oiBUoY4W2l0YubzWf1vqCS1+SHYBmIo8WhSRQLIpWRvOSTCxwQYrHaM060tfKRHXmLHl6RPs9qfW25ECtQxzHNMYbD1y7JLvqqVWfOcx0ZvMiWy/XQymaX6ba/+q2jcjZ7YH6YEF/6/SJnEtpk6IYH/rp/hbA2jjEr1agWHh9Bzev7Zex07p2F8eqyamKlTZ6CnCc9qUrz8Ff+78OHsVvGWuQuHUaTfHcphRDqS8wg+oeGse2Jn8ks8Qzzns68s1jLBSwnSWNaZll2EkKTPE7j6Q== 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=aIx80BFsN7b0rmmCb+JiLk4lBTpphBSai6uQDuIh5qY=; b=HUcmE62X319w1n+6KU35VvBGwx3XtCdp1M6HD+YCnZMfLNyqGgwSHCy7mVj7e9FBhF/Har9clv7GRJm0NbqAlQCJYJrLMNzybkILOvt0Pns4uSEayGvTmCq9f23gUYjhmf6PqgyAQ0HLwkohvcwqF+040yRhQFD1JDQXdIwH/2kx9XtOjhYyOxZaL92WuWWBWrEjrv4B1f8Jf8id7fvzUiQTwqgND8naj3fL5qqfQqhT5dcwL3AEhcAyZyzaMn0OSlpONW4c8ucir21+zOzkOG4uNVke+g6UcYI9cq4G46Sh+KuwTs7G9tKSmPQAcrcTz5z5MkqfAGr+/S2aHYU8BQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aIx80BFsN7b0rmmCb+JiLk4lBTpphBSai6uQDuIh5qY=; b=Kw464+duG4zbTPCBjhf57nSMUIM22w1d+dkez0Yi78YLDBC2NoUDE/FSzBBWw4voW5KRG2jwZaigTocIxB2R3zkt0DsR6ux6VvNZAUaO3eungrQvzrApaAmCQtIs9W6/AM91YjwUZRd6Xjm19SMKrMTtMrpHFnQIuMD+LltheLs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; Received: from MN0PR21MB3727.namprd21.prod.outlook.com (2603:10b6:208:3ce::5) by DS7PR21MB3077.namprd21.prod.outlook.com (2603:10b6:8:71::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.4; Fri, 9 Feb 2024 08:53:15 +0000 Received: from MN0PR21MB3727.namprd21.prod.outlook.com ([fe80::dc6e:83e2:ed7f:a844]) by MN0PR21MB3727.namprd21.prod.outlook.com ([fe80::dc6e:83e2:ed7f:a844%6]) with mapi id 15.20.7292.001; Fri, 9 Feb 2024 08:53:14 +0000 From: Wei Hu To: ferruh.yigit@amd.com, andrew.rybchenko@oktetlabs.ru, Thomas Monjalon , Long Li Cc: dev@dpdk.org, Wei Hu Subject: [PATCH 1/1] net/mana: add vlan tagging support Date: Fri, 9 Feb 2024 08:52:11 +0000 Message-Id: <20240209085211.2643148-1-weh@microsoft.com> X-Mailer: git-send-email 2.25.1 X-ClientProxiedBy: PH8PR21CA0010.namprd21.prod.outlook.com (2603:10b6:510:2ce::10) To MN0PR21MB3727.namprd21.prod.outlook.com (2603:10b6:208:3ce::5) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN0PR21MB3727:EE_|DS7PR21MB3077:EE_ X-MS-Office365-Filtering-Correlation-Id: 4a3d0990-9b82-4fb6-51f5-08dc294c8cfb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ySayCxNRpFoYEa4n3edkoWmcaznBaBlpLuAPW5c+2jFZEa7AMOPC/zgCutW6F/EaikLL7uO0t8JK7FtNJtguAwB/xlhWs6JbgZMrBjiNnuKnSgPV/TrCbDp7taawyUArtTl620pbZWUpYTR+wxWscmosfZhvxHdtRAGXXT9HO8AJddAIwWe73ImaIuC2UI2xqol4QI5m894rNDTdlNqiiyAPeg5y4+V1idsjbZZWAYsWhH/IPM8AmL4RUaKpDIB3qKSr9rFCJ/BG31BYD5ZEMCIbeeHg71dDmutHTyNuWAgFcmOigMXHUfhJc/p3bVJWS9+56JKDKWWNgVJBrFD8zvTi5zrIXNZE/CPa/XeeMh36+G5NEiNXa7QaOYPgXqZt2mKrDQWpVlIpJI97xlhuQpwaYVtJUDmzjLOZj+FdmaNmVXoUoqcOTFj8xhfrpWRnx71op30EsM5lq5iYpaNEaXOb71xprWZ2hIlvCNYRYuHeqm66bntGMzs2IefO1QU7pOZTmWA0ppTDAVI7D0M+J/MLPozwV6c+QWoerYIFc/I4+1B1cDDsNRyAgXDJP6Bnmmplvlb17UoZtN7DG7O/Gary8mIfgSM9gBlGhEl8kbzax1L3srY8rCmXSYQ6QK/r X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN0PR21MB3727.namprd21.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(136003)(39860400002)(376002)(346002)(366004)(230922051799003)(64100799003)(1800799012)(186009)(451199024)(66556008)(82960400001)(82950400001)(38100700002)(66476007)(2616005)(83380400001)(41300700001)(52116002)(6506007)(6666004)(6486002)(478600001)(6512007)(26005)(107886003)(10290500003)(1076003)(110136005)(66946007)(86362001)(38350700005)(36756003)(316002)(8676002)(8936002)(5660300002)(6636002)(2906002)(4326008); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eUDBq0Ja/ymNTwufyjjCdRM2Vz5OGFtPawgi87h2oC4a6efCZczHYbn/JW7eqLu6Nyft9YdVWizNiLUxkIPvpEw4el5SkIUzqrWv0g5U2spnPPil6cRlrOtC89rpJlJW8NZ9HXtcYWG9KSqv/VZeWi8S8bs3QMy5FSnPgPLJIDi7eGIFJXVRe3RheSys8CBq2WJjfU7ICPGOZFiQQqopUYKN8jlL1UD6NPyQtHHeY2MLfPp9lXIT+2+CzjNKUinP+qyx2m4dQUYV5qYNjn9P/saFmcql0GUfEHFfTUYeH8Ydg4fykTkJSJlun0AvWPsRFzwYV9TCtwVgnxoTe1FDC/hiCKYz+O8CzQUY82LXgV0t0GePZh59FZzs+gA/re6R2SrLNXJpnzwftiYCDv+cFCcBSX45ROhX163mLo7bK0KbFpjvWGCouoIyv3GmwkZXi/3jzB4gzUSw4OvpdTdtjQMHHN34PQR18nHIoGQSNuFjxq0k1LwQ/eaQ9eUvsUcVHDU3Sb0L5eYpmpeIMucJDxLk4YsY68ebNy3tyHbqNWVGmLMtAcidC9jofqbfGb7m79kjEfU2mFhtKoTZAizXp4hae27jNs+6agFdB/aKYYyvrwScL9x50OZGamI8Au0543+VwTwQqcUw87lcK2qD10dySJHlJPvHtns7YbWuUDGfUiroWEoBltPwV/HVf50URiVYGF1JGX2rF3BnbAyHKYB5Sl686VmGyN93FYCmmtreRmTz1oUi65n0NcupeR07S8wHRGR0bsT+/XBd/WGKOKkAljrl/N8ofQhg9OV5Egy+rjzspxiApSY/54k8h7mZI9JDpV3IzPt0cirSoLz5T5emR3OilOtCaMsONKJ7F2SP0aUYldLnvUUeOL6of/J6BrCJJE6Mbcl9lh5ZhN5T/ZUvx4xer6OHZsgPeomRNksnenKLx9aY9kKQ3/+4yEGyqpntehzOj0UZHOVbQcDwm5VxhCivpeLgCOTdw+MITN2h5To8D6bl/uk6lpk8Sm+KryXML2WtR3J1WxeSeL6A6/NEgvk8yEJcMcba3mV6WWSoFhDOnUgicpdn4KVlf8VxNckBe6n0B6JJx896Pc7ZlGQrS0H2u9XEs2YdrOfoj3cwVmsjTawDXHmDjbQWazG8Lwu4wlmY96lj9U7fwHZQNj1veva4JeqqMo0ndaPx4CBoCxz8Yil0GIZ/c3aLC1K6/CS7b9Zu+AglztK1+w8Kzk6jRVHS7kZInCkcDe4zr9eSUezrPpE0dhNIqAbKRkLcGPFdYzUtOpwYMJsF+Du6o2TYs3p0qJ5PCgzouMAWNya16/TzgtTVmiRLE3+z5+wunjFXmC1ezN6kUO69Go6QoynhWfKt7WJ/V/y4+5ucC69bqwIHqrmDI+k8jXyQuP8n+nY0sbt1XeV5iMPZsIcvKFhfhyzqsB6IuWOpBa9Hyw5HZM+yNSoIM8r36db4lL0/+GEeYjFDFI92Lh4Y9cNRAUm/eR9j52jSNWYnb6PzopC766aNMoQpRjxeyFKFg1xlRrjMhbne6Ste/Ey6cvHsf3gFGVp+8tSlr2oHq6aKShXxd1wR2zxh2Xf7+2Bf0bEj X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4a3d0990-9b82-4fb6-51f5-08dc294c8cfb X-MS-Exchange-CrossTenant-AuthSource: MN0PR21MB3727.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Feb 2024 08:53:14.2584 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: h/T3wA6cNeTtO2IeF/wGqjL4lrcgbwQxsVdkhErtxvG3kL775vPsAa4Y017HYtZgnWO8RaeqNeh7Jjl35FCbDg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR21MB3077 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 For tx path, use LONG_PACKET_FORMAT if vlan tag is present. For rx, extract vlan id from oob, put into mbuf and set the vlan flags in mbuf. Also add myself to the maintainers list for vmbus, mana and netvsc. Signed-off-by: Wei Hu --- MAINTAINERS | 3 +++ drivers/net/mana/mana.h | 2 ++ drivers/net/mana/rx.c | 6 ++++++ drivers/net/mana/tx.c | 30 +++++++++++++++++++++++++++--- 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 5fb3a73f84..9983d013a6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -608,6 +608,7 @@ F: app/test/test_vdev.c VMBUS bus driver M: Long Li +M: Wei Hu F: drivers/bus/vmbus/ @@ -867,6 +868,7 @@ F: doc/guides/nics/features/mlx5.ini Microsoft mana M: Long Li +M: Wei Hu F: drivers/net/mana/ F: doc/guides/nics/mana.rst F: doc/guides/nics/features/mana.ini @@ -878,6 +880,7 @@ F: doc/guides/nics/vdev_netvsc.rst Microsoft Hyper-V netvsc M: Long Li +M: Wei Hu F: drivers/net/netvsc/ F: doc/guides/nics/netvsc.rst F: doc/guides/nics/features/netvsc.ini diff --git a/drivers/net/mana/mana.h b/drivers/net/mana/mana.h index 4c56e6f746..2b65a19878 100644 --- a/drivers/net/mana/mana.h +++ b/drivers/net/mana/mana.h @@ -21,10 +21,12 @@ struct mana_shared_data { #define MANA_MAX_MAC_ADDR 1 #define MANA_DEV_RX_OFFLOAD_SUPPORT ( \ + RTE_ETH_RX_OFFLOAD_VLAN_STRIP | \ RTE_ETH_RX_OFFLOAD_CHECKSUM | \ RTE_ETH_RX_OFFLOAD_RSS_HASH) #define MANA_DEV_TX_OFFLOAD_SUPPORT ( \ + RTE_ETH_TX_OFFLOAD_VLAN_INSERT | \ RTE_ETH_TX_OFFLOAD_MULTI_SEGS | \ RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | \ RTE_ETH_TX_OFFLOAD_TCP_CKSUM | \ diff --git a/drivers/net/mana/rx.c b/drivers/net/mana/rx.c index acad5e26cd..506f073708 100644 --- a/drivers/net/mana/rx.c +++ b/drivers/net/mana/rx.c @@ -517,6 +517,12 @@ mana_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) mbuf->hash.rss = oob->packet_info[pkt_idx].packet_hash; } + if (oob->rx_vlan_tag_present) { + mbuf->ol_flags |= + RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; + mbuf->vlan_tci = oob->rx_vlan_id; + } + pkts[pkt_received++] = mbuf; rxq->stats.packets++; rxq->stats.bytes += mbuf->data_len; diff --git a/drivers/net/mana/tx.c b/drivers/net/mana/tx.c index 58c4a1d976..f075fcb0f5 100644 --- a/drivers/net/mana/tx.c +++ b/drivers/net/mana/tx.c @@ -180,6 +180,15 @@ get_vsq_frame_num(uint32_t vsq) return v.vsq_frame; } +#define VLAN_PRIO_MASK 0xe000 /* Priority Code Point */ +#define VLAN_PRIO_SHIFT 13 +#define VLAN_CFI_MASK 0x1000 /* Canonical Format Indicator / Drop Eligible Indicator */ +#define VLAN_VID_MASK 0x0fff /* VLAN Identifier */ + +#define mana_mbuf_vlan_tag_get_id(m) ((m)->vlan_tci & VLAN_VID_MASK) +#define mana_mbuf_vlan_tag_get_cfi(m) (!!((m)->vlan_tci & VLAN_CFI_MASK)) +#define mana_mbuf_vlan_tag_get_prio(m) (((m)->vlan_tci & VLAN_PRIO_MASK) >> VLAN_PRIO_SHIFT) + uint16_t mana_tx_burst(void *dpdk_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) { @@ -254,7 +263,18 @@ mana_tx_burst(void *dpdk_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) } /* Fill in the oob */ - tx_oob.short_oob.packet_format = SHORT_PACKET_FORMAT; + if (m_pkt->ol_flags & RTE_MBUF_F_TX_VLAN) { + tx_oob.short_oob.packet_format = LONG_PACKET_FORMAT; + tx_oob.long_oob.inject_vlan_prior_tag = 1; + tx_oob.long_oob.priority_code_point = + mana_mbuf_vlan_tag_get_prio(m_pkt); + tx_oob.long_oob.drop_eligible_indicator = + mana_mbuf_vlan_tag_get_cfi(m_pkt); + tx_oob.long_oob.vlan_identifier = + mana_mbuf_vlan_tag_get_id(m_pkt); + } else { + tx_oob.short_oob.packet_format = SHORT_PACKET_FORMAT; + } tx_oob.short_oob.tx_is_outer_ipv4 = m_pkt->ol_flags & RTE_MBUF_F_TX_IPV4 ? 1 : 0; tx_oob.short_oob.tx_is_outer_ipv6 = @@ -409,8 +429,12 @@ mana_tx_burst(void *dpdk_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) work_req.sgl = sgl.gdma_sgl; work_req.num_sgl_elements = m_pkt->nb_segs; - work_req.inline_oob_size_in_bytes = - sizeof(struct transmit_short_oob_v2); + if (tx_oob.short_oob.packet_format == SHORT_PACKET_FORMAT) + work_req.inline_oob_size_in_bytes = + sizeof(struct transmit_short_oob_v2); + else + work_req.inline_oob_size_in_bytes = + sizeof(struct transmit_oob_v2); work_req.inline_oob_data = &tx_oob; work_req.flags = 0; work_req.client_data_unit = NOT_USING_CLIENT_DATA_UNIT;