From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC9EDC05027 for ; Fri, 17 Feb 2023 15:17:55 +0000 (UTC) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0F17D40EE3; Fri, 17 Feb 2023 16:17:55 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2087.outbound.protection.outlook.com [40.107.7.87]) by mails.dpdk.org (Postfix) with ESMTP id 2CB3740EE1 for ; Fri, 17 Feb 2023 16:17:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+X4g7Y6bsrYriWFiW5Cinv1SF4bnq1+1wxqExLsCcT0=; b=4zsSiwxi4Bzh9ilZUWzH4jY8YalGLGe8CAUchDdxXBoWWIQgvaObB01ipPgzpMkj+/VEFhpezNFVcrMRuA4Vapo1NMlSEwMN3+vruiMwOREDQo+Bu5C3Ssx28+fIPzSJ6fQNhrnfarRHVVCnHK+/I3SfnH6BVpyfbcwq2zml7sc= Received: from AS9PR05CA0127.eurprd05.prod.outlook.com (2603:10a6:20b:497::34) by AS4PR08MB8022.eurprd08.prod.outlook.com (2603:10a6:20b:585::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.12; Fri, 17 Feb 2023 15:17:50 +0000 Received: from AM7EUR03FT012.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:497:cafe::fd) by AS9PR05CA0127.outlook.office365.com (2603:10a6:20b:497::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.15 via Frontend Transport; Fri, 17 Feb 2023 15:17:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT012.mail.protection.outlook.com (100.127.141.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.17 via Frontend Transport; Fri, 17 Feb 2023 15:17:49 +0000 Received: ("Tessian outbound 333ca28169fa:v132"); Fri, 17 Feb 2023 15:17:49 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: c0bf4fd137289d02 X-CR-MTA-TID: 64aa7808 Received: from ad5aaccfddfe.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 2F281925-6D5A-4F3B-9C8A-A17158C67E89.1; Fri, 17 Feb 2023 15:17:38 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ad5aaccfddfe.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 17 Feb 2023 15:17:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AFO4UdFRD/Yfvk8+8JpwL1R9VSrNXPX6kPYngNxyqah7OJULYRwVXhdsjT92fn8tDiv4/C7KznP1Ivo9IiUOD+YzSA1trKdmyZbdSNGNyxPA5r4rqT0gCcA/do6M1ZypcxhMAlhkMXO3p+iIWdbXkeO1XM8EDD/wz4PsOrbxRos8oTUvCchM0oWjfKFIqsQBSTv6dWoqvkQG96gkvd7PdQJGQ0InOc+CdbJ6r8rpC4vnbGG+7btTIn+GzzJKNRubPN2KmEdaqtM4g/zkhXk+Pr7jd7/DQF7tsEmqJS9M4fWw9ifWo78BKCnfWTjJOObj9SsrLOpbnNZ6+m/60FktjA== 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=+X4g7Y6bsrYriWFiW5Cinv1SF4bnq1+1wxqExLsCcT0=; b=kcUEq74VXirGuleDEuv9e4s3/G+2sKGiQAsl+UkKziY30xwiFBm8KQIy5CwF+WghfMkx+uUBexq/IiNP0Z5WqxmnZ8L4oUrgAVcMikFkYiAMy410DH0mUK4cUx4ZFp+tJ/LS93Mxxj7bTHkR9/gLRmJc3mNKTDow1/lsxl+5XYaGaFLLUPz8r8e3u+epuYA3MzA18TEGdiTI252Khtf4oAT8qQYGskGNx9pjL1P9pt95BA029EiM32DEroYl3sGw1Mh29l0lOS1fuwZq9MpZdeM6TuZnMKcSLIJeMnArDK1bethMA+UZXudgAmx0fSe0oqIme7GsGfEzE7EoitJtuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+X4g7Y6bsrYriWFiW5Cinv1SF4bnq1+1wxqExLsCcT0=; b=4zsSiwxi4Bzh9ilZUWzH4jY8YalGLGe8CAUchDdxXBoWWIQgvaObB01ipPgzpMkj+/VEFhpezNFVcrMRuA4Vapo1NMlSEwMN3+vruiMwOREDQo+Bu5C3Ssx28+fIPzSJ6fQNhrnfarRHVVCnHK+/I3SfnH6BVpyfbcwq2zml7sc= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by AM7PR08MB5413.eurprd08.prod.outlook.com (2603:10a6:20b:10a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.15; Fri, 17 Feb 2023 15:17:35 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::910e:e35f:b1eb:ae9]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::910e:e35f:b1eb:ae9%4]) with mapi id 15.20.6111.013; Fri, 17 Feb 2023 15:17:34 +0000 From: Honnappa Nagarahalli To: Junfeng Guo , "qi.z.zhang@intel.com" , "jingjing.wu@intel.com" , "ferruh.yigit@amd.com" , "beilei.xing@intel.com" CC: "dev@dpdk.org" , "xiaoyun.li@intel.com" , "helin.zhang@intel.com" , Rushil Gupta , Jordan Kimbrough , Jeroen de Borst , nd , Honnappa Nagarahalli , nd Subject: RE: [RFC v3 06/10] net/gve: support basic Rx data path for DQO Thread-Topic: [RFC v3 06/10] net/gve: support basic Rx data path for DQO Thread-Index: AQHZQqMBhIICOMo700WjZKbOD5H7vK7TQAdQ Date: Fri, 17 Feb 2023 15:17:34 +0000 Message-ID: References: <20230130062642.3337239-1-junfeng.guo@intel.com> <20230217073228.340815-1-junfeng.guo@intel.com> <20230217073228.340815-7-junfeng.guo@intel.com> In-Reply-To: <20230217073228.340815-7-junfeng.guo@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: F5C8E79BFB4D644D9F11E7F3261752E0.0 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: DBAPR08MB5814:EE_|AM7PR08MB5413:EE_|AM7EUR03FT012:EE_|AS4PR08MB8022:EE_ X-MS-Office365-Filtering-Correlation-Id: 359703a4-63fc-41e1-9168-08db10fa21db x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: saw+3WLXU7EOLAvKGwEtzGQ2qPUWuja3i7N7CGwXCtalBBT0JaXP7MrMsTzoKUcBtX/RyUDWNMoPljecBw20nd+J609I1vqt5kYswFikVYiLnajafPvXXgnwRs0hpspX+dsLIYdn+Dk+XjgDqQy6br2Mdl1s8FS8hxJny/2lxv1bp0+KOv3CZY0XK505AkUnsqkGD4mXoQ8EeK+ENzXTHThR42Rj6N8mT+maWnJDfbn3t90ZVC2xK0Fjz5hE2daP8uxjrbuboVppboFyuPRZqUk5MD4RlgPMGXQd5LLgLfoMl2zbHqml8nlfjxsP6TZ51sdcFSqJlUMP8zZ3EO/NglpgCnRKOGOGESy4FKFte8T3cH643W/2ywUYzY1OzvBSWbHDs1tR4qy6yKW6zmGQ/8N8mrQLRl815ql7BhdnGEWQe+4i4zm2WNDB96QhEbDT1DCeom0WRvKGMIKqNGt3lCJJW3+sCq4FuhjwcDBusu9R0PcwrTGxCWP4D5ELapvZiYSmjY5X4HNtT6Sc/n80d/iOhBz6+vW4GML8n2C4HpyfelpvsvMySY02QIsk1iH/fQXr1KkAQ7BAYS7Ix9Ue+AOWJnJToU/DMzMekMLqjOf9C7nsVx8e9qWxngnGgvtgqi7ikIXXU4pcRDvt4V3MBi9W1euRqnKEhKe2+JJ16bHM353dvUEtwKni6O78UquR+n4GUG3ixrJZnIY6kZnqMA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(396003)(346002)(39850400004)(366004)(136003)(376002)(451199018)(86362001)(38070700005)(2906002)(122000001)(38100700002)(71200400001)(7696005)(110136005)(53546011)(9686003)(6506007)(54906003)(186003)(26005)(478600001)(55016003)(33656002)(4326008)(66476007)(66946007)(8676002)(66446008)(66556008)(316002)(64756008)(83380400001)(76116006)(41300700001)(52536014)(8936002)(5660300002)(7416002); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5413 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT012.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3361daee-b1a2-496e-0c65-08db10fa18a5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Z7U+9Tcv0apontD0JJGXrnFUx5NF/bKFP6zd5GGFrJg8ah5Io2ttMYP5MkES+p8b/OIkO+JJ8IzHLxCNXTwC5jcvljjsGnH09OUQDRmdrR/LFt+vsee4ghp1E7yYLxZTi7VTMAes0Z4tTCIR6ekUujBTxtrnYtepDSQDLAOws50OqdURbc6AxylByHF8qZgxwW4qJFq3wK273apawy9W35sypF8zMRUFxwj4KeA5RVVoJaJ51UDVKIAK732vqKOGfj7qfc+GXfvkN/rSLVRpRY7he6SqovvlsOrywTQqGoAIGdmYpBpE/3Ca5Kf4tZ0mgtutHjms0jLH50bG7RM6iiZF1p4U/WfZMlMyVKE8mVxXP6WFb+Jg3RJWB7bYQdrrgL6U6XHLbRvSw3aOuQhb768vIvcsXmrkselhsFFleqoGH1CktMJl3zAEwmtaLYgj0ZTprC+WqkOW1nRW5/e8cVBfj4h21A5Lse1UeA7exHan7btam2zlmgRYsfLinNHMK7EifYdbkcENgF/fw2RE6IEAJFe6o7UDAnfPOk8Hig1jJZ5lwumPEG9B6QH8SzZ6YfL0PbWj2zgbt78HjAEM7R3eubSVGh9/8OdbJIYFA1ZDbbuhMUpH4KcswZ9123HBcgwZ4Gp/j0tJCEgukg6v2I8V3XRLRQsHWEoYQ8gn8+I= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230025)(4636009)(346002)(136003)(39860400002)(396003)(376002)(451199018)(46966006)(36840700001)(33656002)(9686003)(86362001)(316002)(54906003)(7696005)(52536014)(5660300002)(356005)(8936002)(55016003)(70586007)(41300700001)(4326008)(82740400003)(2906002)(8676002)(70206006)(110136005)(478600001)(36860700001)(81166007)(40480700001)(26005)(82310400005)(53546011)(186003)(6506007)(83380400001)(336012)(47076005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2023 15:17:49.8182 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 359703a4-63fc-41e1-9168-08db10fa21db X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT012.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB8022 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 > -----Original Message----- > From: Junfeng Guo > Sent: Friday, February 17, 2023 1:32 AM > To: qi.z.zhang@intel.com; jingjing.wu@intel.com; ferruh.yigit@amd.com; > beilei.xing@intel.com > Cc: dev@dpdk.org; xiaoyun.li@intel.com; helin.zhang@intel.com; Junfeng > Guo ; Rushil Gupta ; Jordan > Kimbrough ; Jeroen de Borst > Subject: [RFC v3 06/10] net/gve: support basic Rx data path for DQO >=20 > Add basic Rx data path support for DQO. >=20 > Signed-off-by: Junfeng Guo > Signed-off-by: Rushil Gupta > Signed-off-by: Jordan Kimbrough > Signed-off-by: Jeroen de Borst > --- > drivers/net/gve/gve_ethdev.c | 1 + > drivers/net/gve/gve_ethdev.h | 3 + > drivers/net/gve/gve_rx_dqo.c | 128 > +++++++++++++++++++++++++++++++++++ > 3 files changed, 132 insertions(+) >=20 > diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c > index 1197194e41..1c9d272c2b 100644 > --- a/drivers/net/gve/gve_ethdev.c > +++ b/drivers/net/gve/gve_ethdev.c > @@ -766,6 +766,7 @@ gve_dev_init(struct rte_eth_dev *eth_dev) > eth_dev->tx_pkt_burst =3D gve_tx_burst; > } else { > eth_dev->dev_ops =3D &gve_eth_dev_ops_dqo; > + eth_dev->rx_pkt_burst =3D gve_rx_burst_dqo; > eth_dev->tx_pkt_burst =3D gve_tx_burst_dqo; > } >=20 > diff --git a/drivers/net/gve/gve_ethdev.h b/drivers/net/gve/gve_ethdev.h > index f39a0884f2..a8e0dd5f3d 100644 > --- a/drivers/net/gve/gve_ethdev.h > +++ b/drivers/net/gve/gve_ethdev.h > @@ -377,6 +377,9 @@ gve_stop_tx_queues_dqo(struct rte_eth_dev *dev); > void gve_stop_rx_queues_dqo(struct rte_eth_dev *dev); >=20 > +uint16_t > +gve_rx_burst_dqo(void *rxq, struct rte_mbuf **rx_pkts, uint16_t > +nb_pkts); > + > uint16_t > gve_tx_burst_dqo(void *txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)= ; >=20 > diff --git a/drivers/net/gve/gve_rx_dqo.c b/drivers/net/gve/gve_rx_dqo.c > index 8236cd7b50..a281b237a4 100644 > --- a/drivers/net/gve/gve_rx_dqo.c > +++ b/drivers/net/gve/gve_rx_dqo.c > @@ -5,6 +5,134 @@ > #include "gve_ethdev.h" > #include "base/gve_adminq.h" >=20 > +static inline void > +gve_rx_refill_dqo(struct gve_rx_queue *rxq) { > + volatile struct gve_rx_desc_dqo *rx_buf_ring; > + volatile struct gve_rx_desc_dqo *rx_buf_desc; > + struct rte_mbuf *nmb[rxq->free_thresh]; > + uint16_t nb_refill =3D rxq->free_thresh; > + uint16_t nb_desc =3D rxq->nb_rx_desc; > + uint16_t next_avail =3D rxq->bufq_tail; > + struct rte_eth_dev *dev; > + uint64_t dma_addr; > + uint16_t delta; > + int i; > + > + if (rxq->nb_rx_hold < rxq->free_thresh) > + return; > + > + rx_buf_ring =3D rxq->rx_ring; > + delta =3D nb_desc - next_avail; > + if (unlikely(delta < nb_refill)) { > + if (likely(rte_pktmbuf_alloc_bulk(rxq->mpool, nmb, delta) =3D=3D > 0)) { > + for (i =3D 0; i < delta; i++) { > + rx_buf_desc =3D &rx_buf_ring[next_avail + i]; > + rxq->sw_ring[next_avail + i] =3D nmb[i]; > + dma_addr =3D > rte_cpu_to_le_64(rte_mbuf_data_iova_default(nmb[i])); > + rx_buf_desc->header_buf_addr =3D 0; > + rx_buf_desc->buf_addr =3D dma_addr; > + } > + nb_refill -=3D delta; > + next_avail =3D 0; > + rxq->nb_rx_hold -=3D delta; > + } else { > + dev =3D &rte_eth_devices[rxq->port_id]; > + dev->data->rx_mbuf_alloc_failed +=3D nb_desc - > next_avail; > + PMD_DRV_LOG(DEBUG, "RX mbuf alloc failed > port_id=3D%u queue_id=3D%u", > + rxq->port_id, rxq->queue_id); > + return; > + } > + } > + > + if (nb_desc - next_avail >=3D nb_refill) { > + if (likely(rte_pktmbuf_alloc_bulk(rxq->mpool, nmb, nb_refill) > =3D=3D 0)) { > + for (i =3D 0; i < nb_refill; i++) { > + rx_buf_desc =3D &rx_buf_ring[next_avail + i]; > + rxq->sw_ring[next_avail + i] =3D nmb[i]; > + dma_addr =3D > rte_cpu_to_le_64(rte_mbuf_data_iova_default(nmb[i])); > + rx_buf_desc->header_buf_addr =3D 0; > + rx_buf_desc->buf_addr =3D dma_addr; > + } > + next_avail +=3D nb_refill; > + rxq->nb_rx_hold -=3D nb_refill; > + } else { > + dev =3D &rte_eth_devices[rxq->port_id]; > + dev->data->rx_mbuf_alloc_failed +=3D nb_desc - > next_avail; > + PMD_DRV_LOG(DEBUG, "RX mbuf alloc failed > port_id=3D%u queue_id=3D%u", > + rxq->port_id, rxq->queue_id); > + } > + } > + > + rte_write32(next_avail, rxq->qrx_tail); > + > + rxq->bufq_tail =3D next_avail; > +} > + > +uint16_t > +gve_rx_burst_dqo(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t > +nb_pkts) { > + volatile struct gve_rx_compl_desc_dqo *rx_compl_ring; > + volatile struct gve_rx_compl_desc_dqo *rx_desc; > + struct gve_rx_queue *rxq; > + struct rte_mbuf *rxm; > + uint16_t rx_id_bufq; > + uint16_t pkt_len; > + uint16_t rx_id; > + uint16_t nb_rx; > + > + nb_rx =3D 0; > + rxq =3D rx_queue; > + rx_id =3D rxq->rx_tail; > + rx_id_bufq =3D rxq->next_avail; > + rx_compl_ring =3D rxq->compl_ring; > + > + while (nb_rx < nb_pkts) { > + rx_desc =3D &rx_compl_ring[rx_id]; > + > + /* check status */ > + if (rx_desc->generation !=3D rxq->cur_gen_bit) > + break; >From my experience with other PMDs, I think an IO read barrier is needed he= re to ensure other parts of descriptors are not loaded before loading rx_de= sc->generation. > + > + if (unlikely(rx_desc->rx_error)) > + continue; > + > + pkt_len =3D rx_desc->packet_len; > + > + rx_id++; > + if (rx_id =3D=3D rxq->nb_rx_desc) { > + rx_id =3D 0; > + rxq->cur_gen_bit ^=3D 1; > + } > + > + rxm =3D rxq->sw_ring[rx_id_bufq]; > + rx_id_bufq++; > + if (rx_id_bufq =3D=3D rxq->nb_rx_desc) > + rx_id_bufq =3D 0; > + rxq->nb_rx_hold++; > + > + rxm->pkt_len =3D pkt_len; > + rxm->data_len =3D pkt_len; > + rxm->port =3D rxq->port_id; > + rxm->ol_flags =3D 0; > + > + rxm->ol_flags |=3D RTE_MBUF_F_RX_RSS_HASH; > + rxm->hash.rss =3D rte_be_to_cpu_32(rx_desc->hash); > + > + rx_pkts[nb_rx++] =3D rxm; > + } > + > + if (nb_rx > 0) { > + rxq->rx_tail =3D rx_id; > + if (rx_id_bufq !=3D rxq->next_avail) > + rxq->next_avail =3D rx_id_bufq; > + > + gve_rx_refill_dqo(rxq); > + } > + > + return nb_rx; > +} > + > static inline void > gve_release_rxq_mbufs_dqo(struct gve_rx_queue *rxq) { > -- > 2.34.1