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 50E2441B83; Mon, 30 Jan 2023 19:32:43 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DC10540DF6; Mon, 30 Jan 2023 19:32:42 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2040.outbound.protection.outlook.com [40.107.21.40]) by mails.dpdk.org (Postfix) with ESMTP id 2956140C35 for ; Mon, 30 Jan 2023 19:32:41 +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=Jp6xR6EN016O4D/33s4vEQMAdCy8mCiG/quoL2YAp4A=; b=o47erj95eJJR2AkQpN8nSzCB1cWqwJCNdGjigNTc3PMPixvGgLRdLBZ+a3CKJVwu5Z1HniSAfcDL8OWfo9bq/rPT7WeRgoT7763M0XDJNmkWlyM8sy1BnyvLpilJUlpQXXAUSXYnxO5Of58UHJw2iUv+X7hcstzySh/Ohz3p9GE= Received: from DUZPR01CA0085.eurprd01.prod.exchangelabs.com (2603:10a6:10:46a::17) by AM0PR08MB5442.eurprd08.prod.outlook.com (2603:10a6:208:182::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 18:32:39 +0000 Received: from DBAEUR03FT013.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:46a:cafe::34) by DUZPR01CA0085.outlook.office365.com (2603:10a6:10:46a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36 via Frontend Transport; Mon, 30 Jan 2023 18:32:39 +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 DBAEUR03FT013.mail.protection.outlook.com (100.127.142.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.21 via Frontend Transport; Mon, 30 Jan 2023 18:32:39 +0000 Received: ("Tessian outbound 6e565e48ed4a:v132"); Mon, 30 Jan 2023 18:32:39 +0000 X-CR-MTA-TID: 64aa7808 Received: from 154ca2809d8b.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 296E19F1-8650-452D-9674-155C510915CE.1; Mon, 30 Jan 2023 18:32:14 +0000 Received: from EUR03-AM7-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 154ca2809d8b.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 30 Jan 2023 18:32:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DzO0XgWLuTFveSNk7bTfeFnM+1VTx0+36PnYpcjNP9Dv/gX+1ff7o+YvT2wwcl5blZuNqFUMpNt5MdRvf8xnHnlINGpL1XUizJzJcDUgFwMinqqboa8OyUSnxUS5solrlQdhD2ZIADcL20teLETc/2N24kJUJkZT1iaCXI+P/RT415CYZ1D0+h7i3sPk5o5MbNIkx5MgtfpKT2oRNaJTh5jhCeOqqCAWLVHJDJuTcj7uZDBeUX0SocPfDzOcFOQehbKhEWxDyrFnjjLWJXGURA52STkoOCxQKH3ye8jiEJixs4+nlBF0XAA7ymxTcFaM0rHNaS2e8/wou79gFcz09Q== 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=Jp6xR6EN016O4D/33s4vEQMAdCy8mCiG/quoL2YAp4A=; b=nTFw1Sv0OuH/Yj3pn62U9BRwaUHT4zAWp0QrPAqrwZEyBo36Z1FUPhKB9gxsHTIZhF++4KsCkB0bkUHOJHf6eQleu1TS1SyMQa+tkPytvnxtY4r78jP+H0iQMfj9qh1Qa5/z9xOwX1HzRnlyPOkOmO3oqvDq1a+9fS+F/f8MqxpLi9JStTBVImu1pv4QBCaPx04JKeK0W9P4rnPkwfhhsjRuoQ7OJb2uAvk9NVaIzT+csCILFl55iU3RdJN/5w2CmCmmnPm2gNGgZvZb7xMelbLp1dL+39dB2D+YqXvC9v7VWkQq0MnR2vVSA5p2Aum2StK+eZQW1vmg2ScYeLK+tg== 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=Jp6xR6EN016O4D/33s4vEQMAdCy8mCiG/quoL2YAp4A=; b=o47erj95eJJR2AkQpN8nSzCB1cWqwJCNdGjigNTc3PMPixvGgLRdLBZ+a3CKJVwu5Z1HniSAfcDL8OWfo9bq/rPT7WeRgoT7763M0XDJNmkWlyM8sy1BnyvLpilJUlpQXXAUSXYnxO5Of58UHJw2iUv+X7hcstzySh/Ohz3p9GE= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by GV2PR08MB9302.eurprd08.prod.outlook.com (2603:10a6:150:d4::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Mon, 30 Jan 2023 18:32:12 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::f8c8:b4b6:c041:ac9d]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::f8c8:b4b6:c041:ac9d%7]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 18:32:12 +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 , nd Subject: RE: [RFC v2 6/9] net/gve: support basic Rx data path for DQO Thread-Topic: [RFC v2 6/9] net/gve: support basic Rx data path for DQO Thread-Index: AQHZNHTCUHDMc22zREaGZ/gEPj9bN663SFzQ Date: Mon, 30 Jan 2023 18:32:12 +0000 Message-ID: References: <20230118025347.1567078-1-junfeng.guo@intel.com> <20230130062642.3337239-1-junfeng.guo@intel.com> <20230130062642.3337239-7-junfeng.guo@intel.com> In-Reply-To: <20230130062642.3337239-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: A6E4BCBA1331DB408EA490F7C1DA8B52.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_|GV2PR08MB9302:EE_|DBAEUR03FT013:EE_|AM0PR08MB5442:EE_ X-MS-Office365-Filtering-Correlation-Id: 65552cc6-9109-44cb-5eda-08db02f05de4 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: 5oWl6rjhalEcesUAypSvStQCf+Wur0Uj+AjS/scUtO1zdyaDbzeRH6cpG5E0JweCx5dahAUjySNiwy+Ru1ZDLuzkjX066AX6dn/KhEmuFk06gzbZAyZKlCn1m3Vbvj+YrjKjz16sU0wIMUFYP9wpCNwxvNG6+RjwiZcUx1aHyNhwDNd/vwjUVy8nBpO43KLsR6pCoGv/E1Q6EdSL3c/+ze/3z0wPE/DMG8zxVu+YExx2nMW221J0I2W7zqgzYTpmTerKJQ5dHRG/kgqsnn9n917QirVen9+ZhIVtNCJFEqx8OHVGJNW6au5OoMvjqFq9q14PThXytDMHHDR++i6KHe3dNlwouXV3ZFONoncU2UCF08TmQGADks56XHPceehA82TVsDCWMa5R9mY1K2IJ6USW4OIPFMkDGbGW2z633ZXQIFmqyQgTlm+xZSEzIu0ZaNdEVaCU5fw7KaO7e7EAJ1jdLT4XXwW6LbKtwZM86rE8CYWId9DFX7FaZM8cwMU82NBdKh0i28l9w68gk5SNXIJp3SN52IOwjLDRZB8kRkQknYuC4rZJlaiY3WU8ZhyApGMmg3hbcNtlVZC2HqXXYA2l6dYGkgr06Nw9rYJvCspdG7XbZxjjrcZedSAVB9HpnmpFF87kVhyjojPmavtNyxoHUrXR3NT1IOc6Q+4QfmSYVRPVAV1bugTPzPkK3kqqOgl4tBjMTSntANkJhaPgxA== 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)(346002)(376002)(366004)(136003)(396003)(39860400002)(451199018)(2906002)(33656002)(122000001)(26005)(55016003)(83380400001)(7696005)(478600001)(71200400001)(186003)(54906003)(9686003)(53546011)(6506007)(110136005)(8676002)(86362001)(66446008)(38070700005)(52536014)(64756008)(5660300002)(316002)(7416002)(76116006)(4326008)(8936002)(41300700001)(66556008)(66476007)(38100700002)(66946007); 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: GV2PR08MB9302 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: DBAEUR03FT013.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a99d4977-8f27-44c5-802a-08db02f04db8 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3EOrvvK0PEEGz6CHdO5nCDfU4kJ80k+Z0Cbnn86ttCgjjwZEpDlool66910gm2PHUOYGBx3s5hUa2+lsnJyLTQBF25yjW1xH1Dyi0P+mCVxqd/SJ4kRU1NbL6xMN1eboU+9hCiNFd46zQ1n25UovPrga+DSTfKm2+xHRA1DGbyXXZceRUcoMh23+x0nnTW8nfzUoE5icuvVFyBrdu5GIgO9BzjqUPG0CUStNLaexooK26RWLzoWRxHkkjjmki900Sahj+ftQlLewvZzI976SUcYNwggSD/NkYz6zCnONs4gbyy3eTZTU8JIZX/DR/yFPNNfQqc/DuurbcgWUViCSoA2vp8TEb9T2etpFwkWp0psWXM+Lk2+Xnt+/6vpIDh2cJjSOOzgGZAXJeN9TGCdiy2LM2YcT8Pno/lpTCsTuEkX/xJgQMgSgjz3twFyXjRikeu4A/YAP5V122I01hrJGODB5Is5xnZ0SLP1Rar9QM6XHcSIzs/job1ESyGcj4qcw7U3FksDUssAGiWYizmptkIwr4nX6o4/WzoHA2g49a6IutgNRjQE4k4vaKiPkXYn4SQdBAcw1cV/s7TX9cruiob0+JvIaIokPm1wrLIcwiwgeasLWhV4gAhCQQMVkOko7SJMn/uatLiWVmw3V+BVB2n3j2DXpsmeXfTWO81tkPDXQ5wgiFdZt/8O9Vev6S2VNDhzOCup+0B00T8dBtXhXtQ== 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)(136003)(376002)(39860400002)(346002)(396003)(451199018)(36840700001)(46966006)(40470700004)(110136005)(54906003)(8676002)(4326008)(70586007)(8936002)(52536014)(316002)(5660300002)(36860700001)(81166007)(86362001)(356005)(33656002)(70206006)(82740400003)(53546011)(26005)(6506007)(186003)(9686003)(336012)(55016003)(82310400005)(2906002)(40460700003)(40480700001)(7696005)(478600001)(47076005)(41300700001)(83380400001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 18:32:39.3555 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 65552cc6-9109-44cb-5eda-08db02f05de4 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: DBAEUR03FT013.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5442 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: Monday, January 30, 2023 12:27 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 Gu= o > ; Rushil Gupta ; Jordan > Kimbrough ; Jeroen de Borst > Subject: [RFC v2 6/9] 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 > 512a038968..89e3f09c37 100644 > --- a/drivers/net/gve/gve_ethdev.c > +++ b/drivers/net/gve/gve_ethdev.c > @@ -703,6 +703,7 @@ gve_dev_init(struct rte_eth_dev *eth_dev) > } else { > /* override Tx/Rx setup/release eth_dev ops */ > gve_eth_dev_ops_override(&gve_local_eth_dev_ops); > + 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 > ba657dd6c1..d434f9babe 100644 > --- a/drivers/net/gve/gve_ethdev.h > +++ b/drivers/net/gve/gve_ethdev.h > @@ -366,6 +366,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 > aca6f8ea2d..244517ce5d 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