From patchwork Mon Nov 28 06:53:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 120185 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 8587EA0093; Mon, 28 Nov 2022 07:54:55 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9DFF342D27; Mon, 28 Nov 2022 07:54:31 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2118.outbound.protection.outlook.com [40.107.244.118]) by mails.dpdk.org (Postfix) with ESMTP id 1132340A7F for ; Mon, 28 Nov 2022 07:54:29 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nId7CrvYqgGlrSg0p+6/DDw1UMcbEXqjGFmen5y66XgcpCWuztGdt3ij2m/nFrhlhaQjFPqWmCyTwcCmdKnlepPexRN7VJgnQsRO3mpiFIjFjnO3EziEmJwe3//K6P1uVzFDfOLzW+0rCugh67pJDwBjvku+8gb8X4K3Sfydp6PqVqw6p8XSSa7SIjv/2FMLpxzv4EY78d+wicRCBiPy0pCaLU6EAVkTQ9BAeNuT8kLMNd3RPsISgMPmCiFKA1jDw6b5IO33Gx3fdMdJXwYqCSB6vrOTOaOHI0y0YdOFxR64pgASrivJ3r84v+zBbt6cvoBZ1CA7O9B7Bt22CndNLw== 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=bWF2uDJNOVc5hZcZJZHzfUxtuuLZK3FxoNsnJewS4oM=; b=AxN9w+ZSlgnW5S+vKBJQQ0fYDsaZAhDK9DDc26P+HE/RX6X7cHryJuI0ikmeZh2VBCWeo3n3XBIZNmu1EMyerXQaLkkZzLHgK5ZJFojsMCSAqlIvi0/tfPrEB8wpFf04ROOB/tN78uzAxZGpnyTOBQjRVkMTu5Sz4mnTtZEicbilVmDRTBYc2MRQouLujSmu2tOl7n+KVlFsLMOI0ZKM4B50VNZyjGm9g0CQC3KrBM/5eXTwRgAYfKBFlIs+MLy9ddb68WvytDZsNsYIwBZQ1HjqlgCef4cS5TQ1ZjW2a4JvB4lxidI/ynFcChI9DRFv1cEyi8zSEGLfjBVYPRyMhw== 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=bWF2uDJNOVc5hZcZJZHzfUxtuuLZK3FxoNsnJewS4oM=; b=uomg9q7yROZ0OokfaLT0NOx9QVW6k+d6VbdOwy6Ax0LodlQIlmjHJ9VoeJskhTk7c1DukFgsLPHARrNljDMQ1l8rPgph/JiB9/yL3hhvinL9FsukRG3ZIoGNcU1pCsSAlV0geljcd2PMMNJxM4pOLJ5lhXj2cKxS+EGx0Na5g50= 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 CO1PR13MB4952.namprd13.prod.outlook.com (2603:10b6:303:d9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.23; Mon, 28 Nov 2022 06:54:27 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::5122:8c31:51f3:4ee7]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::5122:8c31:51f3:4ee7%4]) with mapi id 15.20.5857.021; Mon, 28 Nov 2022 06:54:27 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Peng Zhang , Chaoyong He Subject: [PATCH 4/8] net/nfp: add support for QinQ strip Date: Mon, 28 Nov 2022 14:53:55 +0800 Message-Id: <20221128065359.12737-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.29.3 In-Reply-To: <20221128065359.12737-1-chaoyong.he@corigine.com> References: <20221128065359.12737-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SG3P274CA0019.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::31) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CO1PR13MB4952:EE_ X-MS-Office365-Filtering-Correlation-Id: ae94095f-e5ef-43a0-dff4-08dad10d645f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5BVZAzTUFJHBuIAoyWXoxFfSc28YnZkc6k3VjGLk0N8xT1oelnubo6sMaKjw7XWjqIhxKeSSI055GtNFRz0rcu5SE24MV0P5cpdZynlHP8Q0cjiNcDUKgEk2KHdsZOKchKGfL/mXbZBfiCal70QKkjL7M9LuAv26WkWDqArRMNjsk9AdQO9HkUXTtV0W/q+A2vvuJWESZ8MYcuXzpM3B1fRE+H/EyHV+j6g1e2QR9QJMo++fmyOQEYP+ACayY0Kp7kvVeUEgKKH8LBlnEeuihK3Op990ffLylJMRc8LyVG7jD6ilb9EGIopYMsPpr5QlpGqGafeClPf1pIOKrHdN8wj8S5ZxA38GTUYCsepszo3qP+xN0jVkcZa/Lwn4Vco/Gj72d24pILB306obApJ9AxqjpZbFyDmhxhWpZzkY6Vu/F9LHfkTfS+Gbsnc861BbOE/SdmCGTH5jWZanepuLQsYSa0j/P6zKkK81WxIVlKVUkaSUjQfeuS8sxHeFMZWXnr2GeP9j2Fq252bTmNqk8jc7FItD+06rGZRYfmHvJxjKo09Cyro0SLtK/EzfHhAMrqPCEcZTn8UlGkKj+Mg3tJBH3vIDjx8gK5kvQGS9WQ/otbO/mXy4T/Q5fS10jw7ZmtKh8PjSBH2mKbf7I8v9HTX9bUN2SDXxN0cnIhMdAQ0HiMmV7KKngkawPt8PodYhF/P0qn74KuHo+kZNkz2f/yvMeuhDBZWAgA1cSmVueFdf5nfPBkGZRGIuhGZms9PR 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)(366004)(346002)(396003)(136003)(376002)(451199015)(38350700002)(6486002)(38100700002)(66556008)(66476007)(66946007)(4326008)(41300700001)(107886003)(6666004)(478600001)(36756003)(8676002)(2906002)(54906003)(316002)(6916009)(8936002)(5660300002)(86362001)(44832011)(2616005)(83380400001)(66574015)(1076003)(186003)(26005)(6512007)(52116002)(6506007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?8u81aL5BFqKXvatWagdiyc6OoOkb?= =?utf-8?q?R2RjXTz3JXHdVQSQNi7HOWgDerCgf0h6V6aBMotA0aqpUKwQkMgvB3rL1ZDhVYuL7?= =?utf-8?q?bFvvzANlFiCSvCtt0le8e6u6ntdJPFNM3MBHgoxXv+n0JV1tCmb5zxC5sSPNWGZRs?= =?utf-8?q?X++jkRtQl4IF94O5WqpjAdBIGi0ZJHlp8V44mVEHw97JY/s/it8YMhebyGcOQiEvt?= =?utf-8?q?RCBw9PZBkuZKtogAPx6Vx7FlLrkaO8w5u4ugzfXncouOvtevVFBc3IfVVL5GgDzui?= =?utf-8?q?dgLYUELeAdd1AQgfewBmdqxIzU6BKG9wEnFQoDAECxwumhAufsrcl212hcAxGhfCN?= =?utf-8?q?Xjz+aUPWzAdGzevqAklbiQkeXn5rRs3JSZUuK4/PrVI28nLFMj0D7GQIat70xTbsz?= =?utf-8?q?9gyYbInTGorDixiOppUrEHcvjvW58TUyXM9Y03X30k8eq96aan/T8hBokq3zkJGMl?= =?utf-8?q?fxYQZrqUprIyevwFKobe09txAABv/3gAFSxP+9FYUrziqdzImuvuNcWSxBCPCWCdw?= =?utf-8?q?vAk9xAV3lQJGKZDVA8qmsbGXuMT0AjJvvxcrMl9LbgrAWr87SOqhOAJlhFUwD2ICe?= =?utf-8?q?H4TBsu7HBOlySlPLU3YSOO+0zYK7hUAGYdzJMGPVYwZFUryjcgY/geHKcFM5UUy1i?= =?utf-8?q?z42EonUduOtWR8aqA3JUv9ONYl9uYvTWfN+miRJTqHsUFdH2tsZR4Zb8+7ROBx6lL?= =?utf-8?q?Z/rurII461uL2nkoTOSNdk5MHeNn6FIMjuAVCKpdYKh8N871aLMfNUEp0J7rK3Tn5?= =?utf-8?q?kWU4snHTSSfVpSF/vAj78rsyrtrHCIGbf7rDi3ZFJT/d5/c/5umywGDIz5/m1szcF?= =?utf-8?q?amLpcx5qbhw0VxRnxD0B7ipE3yrZRvXH9AvFlDlyF17/p+UfIt8hshKUY0Du0tc0+?= =?utf-8?q?XKkS13ZVeGB5D8QDskZz5IUqr5zM4r36W5gXuigzyswihRpPB/Cx+YF9e3wy0cGOZ?= =?utf-8?q?crURB8HN1v7CbNmLzsoKP8gwzNROHxMxIJsItvQgKjSQ7H+j2zNM9NMyO9R7robMG?= =?utf-8?q?tUtrX5dGJjs+42ujpRFfsh54D/Pn1tBslIHwFHpvAkQeC2TjctHRp1fQiMXnRDjqI?= =?utf-8?q?7HXb96zRNELiXmDfVdGvFDYVu0ng+cqSl1PEBPqzfkh3/+BxBzvaPmGv+5PmFpOgj?= =?utf-8?q?whmgUDx/AoVyP0R8eGEcbCU8DgdoZut1MjIaAKyJpiIxU0teQz7htn7F2QH955C3/?= =?utf-8?q?Dtiqbv1pnV9Gp/kP4g4fArXoS/TCXasdMOczx5KjQlDhzG7TiU91nM/gG8SCTic/R?= =?utf-8?q?6zROnOPDG7SqsIu4U1uvuOLQwD0Z5H8w//v3g28zsM3yTldtpwnJap8oA3DqwYfLC?= =?utf-8?q?9rjTFaAHjHdMu+XZCygT1zqI0PkHKrCpiaSDxTFqtOxeWzaFfVEadygKjF4vs8hB6?= =?utf-8?q?H3aWy06yRBpW5J5TAhldn77yeSJ+rOzBj1x2AV9J9Ir6eA9yUyxlP80umPnWodUjq?= =?utf-8?q?M6zbPLqM0KDNX5vQn98PAm52iCigCqia8o1jxN2bu2y5boD0MJMtdZyjEe73lLMPS?= =?utf-8?q?h7IilMxTgTUvJD083JjZd2PsQfYerQ+8Dg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae94095f-e5ef-43a0-dff4-08dad10d645f X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Nov 2022 06:54:27.7161 (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: yDs/tF3ZBbSty9AjS87KYTmUsV8xZdNDr4CnFkG7B8ImF0Tst023s7A6tDYjAwvZRDkybIvUeXKTGJYg9Ai/rlym7dEqhNCUrUSJBmXYWFM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR13MB4952 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 From: Peng Zhang Control the offload of outer layer VLAN strip in QinQ mode through the RTE_ETH_QINQ_STRIP_OFFLOAD mask bit. Signed-off-by: Peng Zhang Reviewed-by: Niklas Söderlund Reviewed-by: Chaoyong He --- doc/guides/nics/features/nfp.ini | 1 + doc/guides/nics/nfp.rst | 1 + drivers/net/nfp/nfp_common.c | 19 ++++++++++++++- drivers/net/nfp/nfp_ctrl.h | 1 + drivers/net/nfp/nfp_rxtx.c | 41 ++++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_rxtx.h | 3 ++- 6 files changed, 64 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index 9e075a680b..b15a1ec52c 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -17,6 +17,7 @@ RSS key update = Y RSS reta update = Y Flow control = Y VLAN offload = Y +QinQ offload = Y L3 checksum offload = Y L4 checksum offload = Y Basic stats = Y diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst index fffff00f1e..2be15b63d3 100644 --- a/doc/guides/nics/nfp.rst +++ b/doc/guides/nics/nfp.rst @@ -293,3 +293,4 @@ Metadata with L2 (1W/4B) Tpid just be stored, now we don't handle it The vlan[0] is the innermost VLAN + The vlan[1] is the QinQ info diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c index f112a70980..d1822f6b71 100644 --- a/drivers/net/nfp/nfp_common.c +++ b/drivers/net/nfp/nfp_common.c @@ -195,7 +195,7 @@ nfp_net_log_device_information(const struct nfp_net_hw *hw) NFD_CFG_MAJOR_VERSION_of(hw->ver), NFD_CFG_MINOR_VERSION_of(hw->ver), hw->max_mtu); - PMD_INIT_LOG(INFO, "CAP: %#x, %s%s%s%s%s%s%s%s%s%s%s%s%s%s", hw->cap, + PMD_INIT_LOG(INFO, "CAP: %#x, %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", hw->cap, hw->cap & NFP_NET_CFG_CTRL_PROMISC ? "PROMISC " : "", hw->cap & NFP_NET_CFG_CTRL_L2BC ? "L2BCFILT " : "", hw->cap & NFP_NET_CFG_CTRL_L2MC ? "L2MCFILT " : "", @@ -203,6 +203,7 @@ nfp_net_log_device_information(const struct nfp_net_hw *hw) hw->cap & NFP_NET_CFG_CTRL_TXCSUM ? "TXCSUM " : "", hw->cap & NFP_NET_CFG_CTRL_RXVLAN ? "RXVLAN " : "", hw->cap & NFP_NET_CFG_CTRL_TXVLAN ? "TXVLAN " : "", + hw->cap & NFP_NET_CFG_CTRL_RXQINQ ? "RXQINQ " : "", hw->cap & NFP_NET_CFG_CTRL_SCATTER ? "SCATTER " : "", hw->cap & NFP_NET_CFG_CTRL_GATHER ? "GATHER " : "", hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR ? "LIVE_ADDR " : "", @@ -401,6 +402,11 @@ nfp_check_offloads(struct rte_eth_dev *dev) ctrl |= NFP_NET_CFG_CTRL_RXVLAN; } + if (rxmode->offloads & RTE_ETH_RX_OFFLOAD_QINQ_STRIP) { + if (hw->cap & NFP_NET_CFG_CTRL_RXQINQ) + ctrl |= NFP_NET_CFG_CTRL_RXQINQ; + } + hw->mtu = dev->data->mtu; if (txmode->offloads & RTE_ETH_TX_OFFLOAD_VLAN_INSERT) @@ -751,6 +757,9 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) if (hw->cap & NFP_NET_CFG_CTRL_RXVLAN) dev_info->rx_offload_capa = RTE_ETH_RX_OFFLOAD_VLAN_STRIP; + if (hw->cap & NFP_NET_CFG_CTRL_RXQINQ) + dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_QINQ_STRIP; + if (hw->cap & NFP_NET_CFG_CTRL_RXCSUM) dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_IPV4_CKSUM | RTE_ETH_RX_OFFLOAD_UDP_CKSUM | @@ -1042,6 +1051,14 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev, int mask) new_ctrl &= ~NFP_NET_CFG_CTRL_RXVLAN; } + /* QinQ stripping setting */ + if (mask & RTE_ETH_QINQ_STRIP_MASK) { + if (dev_conf->rxmode.offloads & RTE_ETH_RX_OFFLOAD_QINQ_STRIP) + new_ctrl |= NFP_NET_CFG_CTRL_RXQINQ; + else + new_ctrl &= ~NFP_NET_CFG_CTRL_RXQINQ; + } + if (new_ctrl == hw->ctrl) return 0; diff --git a/drivers/net/nfp/nfp_ctrl.h b/drivers/net/nfp/nfp_ctrl.h index a90846fddf..106779c080 100644 --- a/drivers/net/nfp/nfp_ctrl.h +++ b/drivers/net/nfp/nfp_ctrl.h @@ -93,6 +93,7 @@ #define NFP_NET_CFG_CTRL_SCATTER (0x1 << 8) /* Scatter DMA */ #define NFP_NET_CFG_CTRL_GATHER (0x1 << 9) /* Gather DMA */ #define NFP_NET_CFG_CTRL_LSO (0x1 << 10) /* LSO/TSO */ +#define NFP_NET_CFG_CTRL_RXQINQ (0x1 << 13) /* Enable QINQ strip */ #define NFP_NET_CFG_CTRL_RINGCFG (0x1 << 16) /* Ring runtime changes */ #define NFP_NET_CFG_CTRL_RSS (0x1 << 17) /* RSS */ #define NFP_NET_CFG_CTRL_IRQMOD (0x1 << 18) /* Interrupt moderation */ diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index fb271e6d96..40f1702bde 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -257,6 +257,46 @@ nfp_net_parse_meta_vlan(const struct nfp_meta_parsed *meta, } } +/* + * nfp_net_parse_meta_qinq() - Set mbuf qinq_strip data based on metadata info + * + * The out VLAN tci are prepended to the packet data. + * Extract and decode it and set the mbuf fields. + * + * If both RTE_MBUF_F_RX_VLAN and NFP_NET_CFG_CTRL_RXQINQ are set, the 2 VLANs + * have been stripped by the hardware and their TCIs are saved in + * mbuf->vlan_tci (inner) and mbuf->vlan_tci_outer (outer). + * If NFP_NET_CFG_CTRL_RXQINQ is set and RTE_MBUF_F_RX_VLAN is unset, only the + * outer VLAN is removed from packet data, but both tci are saved in + * mbuf->vlan_tci (inner) and mbuf->vlan_tci_outer (outer). + * + * qinq set & vlan set : meta->vlan_layer>=2, meta->vlan[0].offload=1, meta->vlan[1].offload=1 + * qinq set & vlan not set: meta->vlan_layer>=2, meta->vlan[1].offload=1,meta->vlan[0].offload=0 + * qinq not set & vlan set: meta->vlan_layer=1, meta->vlan[0].offload=1 + * qinq not set & vlan not set: meta->vlan_layer=0 + */ +static void +nfp_net_parse_meta_qinq(const struct nfp_meta_parsed *meta, + struct nfp_net_rxq *rxq, + struct rte_mbuf *mb) +{ + struct nfp_net_hw *hw = rxq->hw; + + if ((hw->ctrl & NFP_NET_CFG_CTRL_RXQINQ) == 0 || + (hw->cap & NFP_NET_CFG_CTRL_RXQINQ) == 0) + return; + + if (meta->vlan_layer < NFP_META_MAX_VLANS) + return; + + if (meta->vlan[0].offload == 0) + mb->vlan_tci = rte_cpu_to_le_16(meta->vlan[0].tci); + mb->vlan_tci_outer = rte_cpu_to_le_16(meta->vlan[1].tci); + PMD_RX_LOG(DEBUG, "Received outer vlan is %u inter vlan is %u", + mb->vlan_tci_outer, mb->vlan_tci); + mb->ol_flags |= RTE_MBUF_F_RX_QINQ | RTE_MBUF_F_RX_QINQ_STRIPPED; +} + /* * RX path design: * @@ -394,6 +434,7 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) nfp_net_parse_meta(&meta, rxds, rxq, mb); nfp_net_parse_meta_hash(&meta, rxds, rxq, mb); nfp_net_parse_meta_vlan(&meta, rxds, rxq, mb); + nfp_net_parse_meta_qinq(&meta, rxq, mb); /* Checking the checksum flag */ nfp_net_rx_cksum(rxq, rxds, mb); diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h index a24ec9e560..e3e8b00b48 100644 --- a/drivers/net/nfp/nfp_rxtx.h +++ b/drivers/net/nfp/nfp_rxtx.h @@ -43,8 +43,9 @@ * starts at position 0 and only @vlan_layer entries contain valid * information. * - * Currently only 1 layer of vlan is supported, + * Currently only 2 layers of vlan are supported, * vlan[0] - vlan strip info + * vlan[1] - qinq strip info * * @vlan.offload: Flag indicates whether VLAN is offloaded * @vlan.tpid: Vlan TPID