From patchwork Mon Nov 28 06:53:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 120187 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 BA974A0093; Mon, 28 Nov 2022 07:55:08 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E697942D39; Mon, 28 Nov 2022 07:54:35 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2133.outbound.protection.outlook.com [40.107.244.133]) by mails.dpdk.org (Postfix) with ESMTP id ABA2242D2B for ; Mon, 28 Nov 2022 07:54:33 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SSlNK2u4CT42dwL8+RyDOIzQhUoJTEH5ZB7sngB4fWejUAYPaTAHx3froi+SyBlJ00KsTJ8gM1aHI3xXWx2bSG+h32YRn2IapkZw/WM03sp5T+raFt0AZPo4rs7tohc3RuWrLIwt3Ac1RIXn7DtiQmdZWwwhFy68uqWY/4PV+jnmXvixOrQLWbGcjEke4wBHXNqPrjJNQuMB5hEGp8NFQhEOK4DFthW/Q23T9kITl/M3sdf5doMx1oM2yx4GoFOXoIZa3JzyrbAaIJ46bgirNqcqYHSMPFAwRwORaG+Ci4s9HGAHFst+Ho/cJ94yQUuiJszF2+rmdJa90PzMtFDUAA== 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=U3sqSda8tVsvspPXgAA/PP9jGaETjS2IWGYIU8uxP/Q=; b=YO+yI6bLeY5uwNDTQU46vtAlb5mL0Du1sA8YyIHiw7zIr1Q3Uxqt1eTTYpqfDGBj+5hqMbO9Il18POpSDXPihbJ2OuzC+KOBrukr4L5ofreT541UHP7hwdH0YBqb2HIsgZwqSMwshpUeA8jqoYMGXLAG8UUuW7V0e4E7puvh3A9727+b9pup2IfGoSIl7odpi0oys+TDZ7RliI1U45vvqAQpxjcMAC8ZQ28iBARJ8ySV51xDjTOYa/811AOsM7IdTnWJyVSwmWNrz5Yyssa42K0uZZf5OBldC9enNkmSrkHzlmTdaL9n+JxGr/ucowurXKBfTLLovs5GjnpJAErPdw== 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=U3sqSda8tVsvspPXgAA/PP9jGaETjS2IWGYIU8uxP/Q=; b=XEJRpynet+LS2c5VLf00Q43PibOJGrN10eJtKLZxr3+lzaObjNpU8eF/TS8rYvXRnoI7hVKLGMtR7MGX1voaC5Nuv7aCcAdJ28NrKTXow4qaIWk3ipstbR1Yu7krSZVYENHvvZuOLl0KSCSkNHh7E+1o46ou4e6oaTKSlQnHfNo= 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:32 +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:32 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Peng Zhang , Chaoyong He Subject: [PATCH 6/8] net/nfp: add support for VLAN insert with NFD3 Date: Mon, 28 Nov 2022 14:53:57 +0800 Message-Id: <20221128065359.12737-7-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: 67cc0f82-ecf0-48a9-8327-08dad10d66f9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ze+UIgop6Bml6Bj1Rt7hsj2JdccHRXkcL6tu6+pHgQAjnHZcPfBGDKqRGxLjEIjtPvzzhW7DTBLYZzBahkyRuygwLlcO7FZuOUG9AfAZnDXQTIB13T9M38V+YT2FT30JHKfjiwZO7auZgXOiTJQJcTDGtOoj5S+SBO2RMIdB8JyHGSTKmgf3ECRcbrm7A4n5+3jSg4PbO3G2HVl7TwQqzTrKXMQnjMU4pVtPaB6XJZlzu0jQ6RQIs4ux2ut+Vo4GBxe5PgNUbhr/NQf9+2a2LH1NLUy3FUvnLR1TldMrv8urM9uNzt5WpK9SYgMjX3mdXmN8wFhFPrYfSL8eBgP1+Rl4s2JL3ftHzJRvBdh7kIsC8xp4G5wtwl6NytwlhEVES/+4Z/w7F/VPOUb70diZf4cVC9SUmYXvjXtZtoghwFQ4AzHIgQEut6ZgblLQw5ALnE5dkQvPeQV6V8RUtsPVP2orECIZ4iS5oY7rJrsUDaBchx/OmhOjUhPw1r77GkWMHN63TiMrbhAXiAsdXnipmzLie5NcJZOKDy18i5QwuMYo8wNSHwnMcmm0Rh0EJdtmI4cX3tYKlR+SlrEnvP8T6VAzJ9upmAITIrHhRAyCcxl+9lXZzv3YRDia0c8g71wod0H6QLaZuy7wkxpCsRiBtq4bToZVRCx7FBO/y1Y84xyZGN/HnJCll7RPQzvnGMKHhRmJfwecrdpN/nRSsfL05L2qAJRZ/usVoR16oU/soCtgOE/r8jU03TvzonWega3w 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)(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?6PW1Y/xkzZniCv8lmmavLW6s/QxT?= =?utf-8?q?KvIwqNDneKe2+XG48jAs+pClpWcbCud0HarGHs5ss1HLNkgzgy0SnxusBnBuEig3A?= =?utf-8?q?JhGlREbjbaLbmnEiYF7y6BvGs660FPPs2cPmcJbJLaU+42bRnz64OYWYa6mmsaiQG?= =?utf-8?q?qrQlRDcTEqcSqB377RraMC0wCWSDEad3JBX/WRDC46It05YrPVeGk6QJ43uW4wId/?= =?utf-8?q?B1ULuPrDSwQTIoPxzkOduDAYveMq3ZBQYr+XJRs4ZLQo0wSlS6wxHLBMs4jv/0ikX?= =?utf-8?q?+KFY72m9/8+cBSt49vcSQPtdZlRjbM85Quy9FvRJ/zUTTqabOfDN41Z3tkC23YSje?= =?utf-8?q?Alu4nr/7wB4bMu1b4xYX/jC9aQfGvv0vWB2gec4aHUW7oQx+TtJLQ2sausnWOCSxW?= =?utf-8?q?JfMbaHlBHPi8x0pvw4FJRw65Utp+A4t2Gx90GZPv1UPZr2SWSoF27HKCE5OQQQDVH?= =?utf-8?q?G/ScvVNq1zP/Lkg7ZF36QJzzO6kHKv07iAnQaROUkj97O4CX/EDDkjyW3iMcGsAZA?= =?utf-8?q?ojP2tc6a4Vn/1Ny1gxwrb7wF7F8n4XoUkHQMYcBxzFeQRa05S9jw3li2sZfN2R1v/?= =?utf-8?q?9yk1+C2LOLi3tiTIAA6eeCa2XXQRHPzKgNmHYEnEcaXg1KcQMyliy3hUyM+N9cU/a?= =?utf-8?q?agZRTHm0LDzns+ZD2PaOcPQN4o3Ou1f5zd+gXzTkpILXHXefh46qTEn3FfIrLwfYO?= =?utf-8?q?rY0wOg22x8KibkmG0oSMObFNZ+yWkNNjv6q1GUc6uLbToISC7bM8a4rGTchPZun3/?= =?utf-8?q?YZqs5bf4Sbeaj2zoCpzqBqoeNE3LS7aWYxAxHccOeLf7iusiRP8CmEKBIeBs1m8YB?= =?utf-8?q?wUjZCKVjfolvYRWwbr2Q8+C1o2eF3rrp2KpBw9ym0aUc8fErpCd0j0AWaZ6xWIA5H?= =?utf-8?q?yFIG7ZO0An3Bvuhu/yA2gF41ECKoeSRx7p+NT+tVQ/hEjCGa+bV9h6qn2QAckDOnk?= =?utf-8?q?xfeDMF4dCplKXYmwl3UOptcBmEYEIZU0Vf1mOINRQicgJ4tsx3cyPBOy2mkHpwP1V?= =?utf-8?q?YzNFxff5rMeFrJR0JcbBT+k9E/MNX3dJ5RRErZxoGhqlteT/Eol9KYNxSTZSOzQff?= =?utf-8?q?37IPLOPz/LEQlz4cGNrJRII6GoGcYVGN53iSwq7sBotYOk/PppDrxTJ2I3rTMPLjF?= =?utf-8?q?5pSPJ0ZJXArimCZ9GZCgoPJMxEFvnmq5wSgDpH4PCmUDF0gQ/mBlJXest9uh0Bd0q?= =?utf-8?q?VXEnn4egJyPSPKBrPYNOOloOOBNSdpf71ZyPQTVeI4bl4LG5eKv5c9MIgbx8TougI?= =?utf-8?q?Uci0h6RZiadS+2sFt0SZM4a9m1muEf6CdXdo4aw4G8lWnkulKYttz7ODDHl9QuMMu?= =?utf-8?q?eEeSWdOOqc+7d+UKEG7F2bvjjNB1UUVhArK0PIcL1BxRiwSV+5jc6OfZi0E5LOa7x?= =?utf-8?q?95F8za975zEN8gJ4CQ4/1T2ti58aP/agne5dhcTbif9eSdIGSitoY/U2Q7BkPgRJJ?= =?utf-8?q?t2xBxI0xilA3D6iF41TEupav3h0uvh9Y6hRG23RLFpbeeLq6PUzFLX3TtzGFF5TH0?= =?utf-8?q?zQH1H9+QjFYSniHfRwatfyMbPSeaHYVXzg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 67cc0f82-ecf0-48a9-8327-08dad10d66f9 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:32.2661 (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: 6W1wUIJ5gdt/iwJDlyxLnUP9GNfuzO8PNWIU+Owki9csah1YviouI2W9VVJk3UM3uzi0f648571FrqGR8RifmysOxv2158EsqB7SgSzxFG0= 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 As the firmware with NFD3 change, using the metadata sends the VLAN info to the nic to achieve the VLAN offload insert. The VLAN INFO consists of 16bit TPID + 16bit TCI Signed-off-by: Peng Zhang Reviewed-by: Niklas Söderlund Reviewed-by: Chaoyong He --- doc/guides/nics/nfp.rst | 16 ++++++++ drivers/net/nfp/nfp_common.c | 6 ++- drivers/net/nfp/nfp_ctrl.h | 1 + drivers/net/nfp/nfp_rxtx.c | 77 +++++++++++++++++++++++++++++++++--- drivers/net/nfp/nfp_rxtx.h | 21 +++++++++- 5 files changed, 112 insertions(+), 9 deletions(-) diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst index 2be15b63d3..a636fd0fde 100644 --- a/doc/guides/nics/nfp.rst +++ b/doc/guides/nics/nfp.rst @@ -294,3 +294,19 @@ Metadata with L2 (1W/4B) The vlan[0] is the innermost VLAN The vlan[1] is the QinQ info + +TX +~~ + +NFP_NET_META_VLAN +:: + + ----------------------------------------------------------------- + 3 2 1 0 + 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | TPID | PCP |p| vlan outermost VID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ^ ^ + NOTE: | TCI | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c index a62a7386ab..9c740ee9b5 100644 --- a/drivers/net/nfp/nfp_common.c +++ b/drivers/net/nfp/nfp_common.c @@ -417,8 +417,10 @@ nfp_check_offloads(struct rte_eth_dev *dev) hw->mtu = dev->data->mtu; - if (txmode->offloads & RTE_ETH_TX_OFFLOAD_VLAN_INSERT) - ctrl |= NFP_NET_CFG_CTRL_TXVLAN; + if (txmode->offloads & RTE_ETH_TX_OFFLOAD_VLAN_INSERT) { + if (hw->cap & NFP_NET_CFG_CTRL_TXVLAN) + ctrl |= NFP_NET_CFG_CTRL_TXVLAN; + } /* L2 broadcast */ if (hw->cap & NFP_NET_CFG_CTRL_L2BC) diff --git a/drivers/net/nfp/nfp_ctrl.h b/drivers/net/nfp/nfp_ctrl.h index c7ebcf43b3..bffdd8345e 100644 --- a/drivers/net/nfp/nfp_ctrl.h +++ b/drivers/net/nfp/nfp_ctrl.h @@ -29,6 +29,7 @@ /* working with metadata api (NFD version > 3.0) */ #define NFP_NET_META_FIELD_SIZE 4 #define NFP_NET_META_FIELD_MASK ((1 << NFP_NET_META_FIELD_SIZE) - 1) +#define NFP_NET_META_HEADER_SIZE 4 /* Working with metadata vlan api (NFD version >= 2.0) */ #define NFP_NET_META_VLAN_INFO 16 diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index 2bc0eb2625..200886111e 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -833,12 +833,77 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, return 0; } +static void +nfp_net_set_meta_vlan(struct nfp_net_meta_raw *meta_data, + struct rte_mbuf *pkt, + uint8_t layer) +{ + uint16_t vlan_tci; + uint16_t tpid; + + tpid = RTE_ETHER_TYPE_VLAN; + vlan_tci = pkt->vlan_tci; + + meta_data->data[layer] = rte_cpu_to_be_32(tpid << 16 | vlan_tci); +} + +static void +nfp_net_nfd3_set_meta_data(struct nfp_net_meta_raw *meta_data, + struct nfp_net_txq *txq, + struct rte_mbuf *pkt) +{ + uint8_t vlan_layer = 0; + struct nfp_net_hw *hw; + uint32_t meta_info; + uint8_t layer = 0; + char *meta; + + hw = txq->hw; + + if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) != 0 && + (hw->ctrl & NFP_NET_CFG_CTRL_TXVLAN) != 0) { + if (meta_data->length == 0) + meta_data->length = NFP_NET_META_HEADER_SIZE; + meta_data->length += NFP_NET_META_FIELD_SIZE; + meta_data->header |= NFP_NET_META_VLAN; + } + + if (meta_data->length == 0) + return; + + meta_info = meta_data->header; + meta_data->header = rte_cpu_to_be_32(meta_data->header); + meta = rte_pktmbuf_prepend(pkt, meta_data->length); + memcpy(meta, &meta_data->header, sizeof(meta_data->header)); + meta += NFP_NET_META_HEADER_SIZE; + + for (; meta_info != 0; meta_info >>= NFP_NET_META_FIELD_SIZE, layer++, + meta += NFP_NET_META_FIELD_SIZE) { + switch (meta_info & NFP_NET_META_FIELD_MASK) { + case NFP_NET_META_VLAN: + if (vlan_layer > 0) { + PMD_DRV_LOG(ERR, "At most 1 layers of vlan is supported"); + return; + } + nfp_net_set_meta_vlan(meta_data, pkt, layer); + vlan_layer++; + break; + default: + PMD_DRV_LOG(ERR, "The metadata type not supported"); + return; + } + + memcpy(meta, &meta_data->data[layer], sizeof(meta_data->data[layer])); + } +} + uint16_t nfp_net_nfd3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) { struct nfp_net_txq *txq; struct nfp_net_hw *hw; struct nfp_net_nfd3_tx_desc *txds, txd; + struct nfp_net_meta_raw meta_data; struct rte_mbuf *pkt; uint64_t dma_addr; int pkt_size, dma_size; @@ -868,6 +933,7 @@ nfp_net_nfd3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk txq->qidx, nb_pkts); /* Sending packets */ while ((i < nb_pkts) && free_descs) { + memset(&meta_data, 0, sizeof(meta_data)); /* Grabbing the mbuf linked to the current descriptor */ lmbuf = &txq->txbufs[txq->wr_p].mbuf; /* Warming the cache for releasing the mbuf later on */ @@ -875,6 +941,8 @@ nfp_net_nfd3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk pkt = *(tx_pkts + i); + nfp_net_nfd3_set_meta_data(&meta_data, txq, pkt); + if (unlikely(pkt->nb_segs > 1 && !(hw->cap & NFP_NET_CFG_CTRL_GATHER))) { PMD_INIT_LOG(INFO, "NFP_NET_CFG_CTRL_GATHER not set"); @@ -893,12 +961,6 @@ nfp_net_nfd3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk nfp_net_nfd3_tx_tso(txq, &txd, pkt); nfp_net_nfd3_tx_cksum(txq, &txd, pkt); - if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) && - (hw->cap & NFP_NET_CFG_CTRL_TXVLAN)) { - txd.flags |= PCIE_DESC_TX_VLAN; - txd.vlan = pkt->vlan_tci; - } - /* * mbuf data_len is the data in one segment and pkt_len data * in the whole packet. When the packet is just one segment, @@ -948,6 +1010,9 @@ nfp_net_nfd3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk else txds->offset_eop = 0; + /* Set the meta_len */ + txds->offset_eop |= meta_data.length; + pkt = pkt->next; /* Referencing next free TX descriptor */ txds = &txq->txds[txq->wr_p]; diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h index e3e8b00b48..d16d557fd3 100644 --- a/drivers/net/nfp/nfp_rxtx.h +++ b/drivers/net/nfp/nfp_rxtx.h @@ -27,6 +27,25 @@ /* Maximum number of supported VLANs in parsed form packet metadata. */ #define NFP_META_MAX_VLANS 2 +/* Maximum number of NFP packet metadata fields. */ +#define NFP_META_MAX_FIELDS 8 + +/* + * struct nfp_net_meta_raw - Raw memory representation of packet metadata + * + * Describe the raw metadata format, useful when preparing metadata for a + * transmission mbuf. + * + * @header: NFD3 Contains the 8 4-bit type fields + * @data: Array of each fields data member + * @length: Keep track of number of valid fields in @header and data. Not part + * of the raw metadata. + */ +struct nfp_net_meta_raw { + uint32_t header; + uint32_t data[NFP_META_MAX_FIELDS]; + uint8_t length; +}; /* * struct nfp_meta_parsed - Record metadata parsed from packet @@ -121,7 +140,7 @@ struct nfp_net_nfd3_tx_desc { uint8_t dma_addr_hi; /* High bits of host buf address */ __le16 dma_len; /* Length to DMA for this desc */ uint8_t offset_eop; /* Offset in buf where pkt starts + - * highest bit is eop flag. + * highest bit is eop flag, low 7bit is meta_len. */ __le32 dma_addr_lo; /* Low 32bit of host buf addr */