From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D7431A0573; Thu, 5 Mar 2020 11:27:42 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AED281BFD2; Thu, 5 Mar 2020 11:27:42 +0100 (CET) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-eopbgr750083.outbound.protection.outlook.com [40.107.75.83]) by dpdk.org (Postfix) with ESMTP id 26F512BA8 for ; Thu, 5 Mar 2020 11:27:41 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k8AASGK3JoCWs/z5O6pe8LikCVFfz8MklUzqJ/mxnDj3hR3VfO/D/tJmr7zzWvuKOmMETSJ2yosg9Sz0d1PnfYjvdW1NNHwKKO7KtZp6tZI6UF6T6+oKJ96LG68mzF+C8G9sc2o/VcdF/Bm0KcxmN3fI/z99yaqg7lzyChP0h/RH5yFDuKLyuDj2cLLTqR71eLbu4IqIawrt3M7yqCbG2yxRwHaq0toJ86+9//Em2kv6iHKb1LDXb3Ew9tUsDqp4DlEdYPfiZ3VOkb4GEMJfgWuK2O7++/vpmVTG2Qvj3XHXLKHRsgqO6dlCCboHiFcWKPTDx/t3MRsPDeEWtosg0Q== 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-SenderADCheck; bh=SsHN0xd1QRUjJ8IRV543z4Pu3fcle2vb+6QNaHTsJA0=; b=WHeh/WhtnsHeO0qoD6AdSPlVr63IfX0W3Fv5tFwYNWRRdaVrARjTqv11yUf0UnLC49jcaLI0NxgWO/HiXR0XOvbONXoSE3SeQDJmGZio9XdJPINtOJkEb2S9UYaTFcL+M8Uzobr1nfuZvtMC2ZdT9egHTBUpPV9Ifdqi0hJUO+tmAwew04oHf1rJ5eef6jSS8bdDI0cOPdmrH8s0dqn+Y6xhq/B7qTIJ+6nUxzYvTNMOdx97xyBfU0tAAxeoYssyAxhD/FekHnptzh+DWtvWQRjVy8XGjekoBIMK/mjYiKWiYnz48zuWuMOrnp4Rpz+daxP5OPpD+OhyuvopUyhNQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SsHN0xd1QRUjJ8IRV543z4Pu3fcle2vb+6QNaHTsJA0=; b=Uxnpj0xOvGoAmMqPV9bXkLimYs/LOd18TKxxXcgDYsj41oEDJGcCXuMCouwMBjbIPr2BW+m/4LhpZvn2ZdnxuiVCLPQggqWcN05GIQ3WIO91EcdqgBlCKRxjtp4PlJRJXsa69iaPQHjUlzIgxfVS8emEnIeUYgS3UigTyVxaoAw= Received: from MW2PR12MB2570.namprd12.prod.outlook.com (2603:10b6:907:a::13) by MW2PR12MB2362.namprd12.prod.outlook.com (2603:10b6:907:e::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2772.18; Thu, 5 Mar 2020 10:27:39 +0000 Received: from MW2PR12MB2570.namprd12.prod.outlook.com ([fe80::218a:b130:80a9:9e3f]) by MW2PR12MB2570.namprd12.prod.outlook.com ([fe80::218a:b130:80a9:9e3f%7]) with mapi id 15.20.2793.013; Thu, 5 Mar 2020 10:27:39 +0000 From: "Kumar, Ravi1" To: "Sebastian, Selwin" , "dev@dpdk.org" Thread-Topic: [PATCH v1] net/axgbe: add support for Scattered Rx Thread-Index: AQHV69jCO8y2tkyAT0CNdGHN1TR826gs+OnwgAzfL6CAAAIZAA== Date: Thu, 5 Mar 2020 10:27:39 +0000 Message-ID: References: <20200225124004.26946-1-ssebasti@amd.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_Enabled=true; MSIP_Label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_SetDate=2020-03-05T10:22:11Z; MSIP_Label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_Method=Privileged; MSIP_Label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_Name=Non-Business; MSIP_Label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_ActionId=7608da7a-4f93-4061-90b3-0000dd8bd7ba; MSIP_Label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_ContentBits=0 msip_label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_enabled: true msip_label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_setdate: 2020-03-05T10:29:36Z msip_label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_method: Privileged msip_label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_name: Non-Business msip_label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_siteid: 3dd8961f-e488-4e60-8e11-a82d994e183d msip_label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_actionid: fb68f6cb-22da-47dd-bf62-00008cd3c058 msip_label_f2ed062d-8486-4f50-a4f1-3cce0dd00d64_contentbits: 0 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ravi1.Kumar@amd.com; x-originating-ip: [165.204.159.242] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 2f1593b8-09bf-49da-c5c6-08d7c0efd4db x-ms-traffictypediagnostic: MW2PR12MB2362:|MW2PR12MB2362: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:272; x-forefront-prvs: 03333C607F x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(396003)(136003)(366004)(39860400002)(346002)(189003)(199004)(316002)(478600001)(86362001)(8936002)(81156014)(8676002)(81166006)(186003)(55016002)(26005)(110136005)(9686003)(66476007)(66946007)(33656002)(76116006)(66446008)(64756008)(66556008)(52536014)(71200400001)(7696005)(2906002)(6506007)(5660300002)(2940100002)(83323001); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2362; H:MW2PR12MB2570.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6V02hq3YbXLU6U4HFS++tqlbcjWGMbaZc/UkWCFGvuYgaQaeJYjL+cK49F1MVtOQHaA4Y3HtkypvSr7Wf5f57iqTmvH2OVobMxxHDkIvwYi+tXYD/5h9dSLF6o+5JhXbUU+iprXAr3Fnvw67Su6vONkuCx6qY3q34jL2WwHAx5lIKzaidq3LzA0UZX/L2JSUM3rJScqlGk3UeQYJMU/tk19+cNcreT8IZqibxCE0s3RJNpZjH97g1Q/G+WnILzV4fYf65RK7jg5KH81mbMpAv2nMbjrrZcsfOA+HjysGAKrFhY9dyN56hTv6HvYuN3NXoxvqB3uv7KSLTsUr74zkv5ztfbtfe18kgynepwL415WjZi5TcQC5QxNUCE0F8630z7V8jlDKkMgxOl98zxgjBTCOoLwZ9bXCE8NDic8GQH8FhoPdJF6crdS/XdRLi+NLGEVKLqMnygwpPt9tPCyXdYiKLJ2XK3mNegv8qPWqisavYypttbcsw0NbWul8j40T x-ms-exchange-antispam-messagedata: u2BWwcidE3TK6B0jQEbNECa5bNlz7DTY3wdEhoF0Or6swnqo0FkMJ8d9r90Yt+2f/tng68GLxCnVMVlcg06Gf+aFt4zkXDs2ELRoOiC+r7Saprk3+86j5BCgnsFjVWRZg+8nqFvs66OEQBH6ppcnKQ== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f1593b8-09bf-49da-c5c6-08d7c0efd4db X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Mar 2020 10:27:39.5435 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /y2p0wAu1aKTw/ODxXsdzbcXUb1/K94hJaJZgYVw8dHSU8ptkyXcBmOIMYew/F3aT+XblQgzR5kvwmwN88LPOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2362 Subject: Re: [dpdk-dev] [PATCH v1] net/axgbe: add support for Scattered Rx X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Please scratch this. I just now acked the V3.=20 Regards, Ravi > > >-----Original Message----- >From: Kumar, Ravi1=20 >Sent: Thursday, March 5, 2020 3:51 PM >To: Sebastian, Selwin ; 'dev@dpdk.org' >Subject: RE: [PATCH v1] net/axgbe: add support for Scattered Rx > >Acked-by: Ravi Kumar > >>From: Selwin Sebastian >> >>Enable scattered rx support and add jumbo packet receive capability >> >>Signed-off-by: Selwin Sebastian >>--- >> doc/guides/nics/features/axgbe.ini | 1 + >> drivers/net/axgbe/axgbe_common.h | 2 + >> drivers/net/axgbe/axgbe_ethdev.c | 16 +++- >> drivers/net/axgbe/axgbe_rxtx.c | 145 +++++++++++++++++++++++++++++ >> drivers/net/axgbe/axgbe_rxtx.h | 2 + >> 5 files changed, 165 insertions(+), 1 deletion(-) >> >>diff --git a/doc/guides/nics/features/axgbe.ini b/doc/guides/nics/feature= s/axgbe.ini >>index ab4da559f..0becaa097 100644 >>--- a/doc/guides/nics/features/axgbe.ini >>+++ b/doc/guides/nics/features/axgbe.ini >>@@ -7,6 +7,7 @@ >> Speed capabilities =3D Y >> Link status =3D Y >> Jumbo frame =3D Y >>+Scattered Rx =3D Y >> Promiscuous mode =3D Y >> Allmulticast mode =3D Y >> RSS hash =3D Y >>diff --git a/drivers/net/axgbe/axgbe_common.h b/drivers/net/axgbe/axgbe_c= ommon.h >>index fdb037dd5..fbd46150c 100644 >>--- a/drivers/net/axgbe/axgbe_common.h >>+++ b/drivers/net/axgbe/axgbe_common.h >>@@ -1135,6 +1135,8 @@ >> #define RX_NORMAL_DESC3_PL_WIDTH 14 >> #define RX_NORMAL_DESC3_RSV_INDEX 26 >> #define RX_NORMAL_DESC3_RSV_WIDTH 1 >>+#define RX_NORMAL_DESC3_LD_INDEX 28 >>+#define RX_NORMAL_DESC3_LD_WIDTH 1 >>=20 >> #define RX_DESC3_L34T_IPV4_TCP 1 >> #define RX_DESC3_L34T_IPV4_UDP 2 >>diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_e= thdev.c >>index d0b6f091f..013c6330d 100644 >>--- a/drivers/net/axgbe/axgbe_ethdev.c >>+++ b/drivers/net/axgbe/axgbe_ethdev.c >>@@ -249,6 +249,8 @@ axgbe_dev_start(struct rte_eth_dev *dev) { >> struct axgbe_port *pdata =3D dev->data->dev_private; >> int ret; >>+ struct rte_eth_dev_data *dev_data =3D dev->data; >>+ uint16_t max_pkt_len =3D dev_data->dev_conf.rxmode.max_rx_pkt_len; >>=20 >> PMD_INIT_FUNC_TRACE(); >>=20 >>@@ -279,6 +281,17 @@ axgbe_dev_start(struct rte_eth_dev *dev) >>=20 >> axgbe_clear_bit(AXGBE_STOPPED, &pdata->dev_state); >> axgbe_clear_bit(AXGBE_DOWN, &pdata->dev_state); >>+ >>+ if ((dev_data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_SCATTER) || >>+ max_pkt_len > pdata->rx_buf_size) >>+ dev_data->scattered_rx =3D 1; >>+ >>+ /* Scatter Rx handling */ >>+ if (dev_data->scattered_rx) >>+ dev->rx_pkt_burst =3D ð_axgbe_recv_scattered_pkts; >>+ else >>+ dev->rx_pkt_burst =3D &axgbe_recv_pkts; >>+ >> return 0; >> } >>=20 >>@@ -789,6 +802,8 @@ axgbe_dev_info_get(struct rte_eth_dev *dev, struct rt= e_eth_dev_info *dev_info) >> DEV_RX_OFFLOAD_IPV4_CKSUM | >> DEV_RX_OFFLOAD_UDP_CKSUM | >> DEV_RX_OFFLOAD_TCP_CKSUM | >>+ DEV_RX_OFFLOAD_JUMBO_FRAME | >>+ DEV_RX_OFFLOAD_SCATTER | >> DEV_RX_OFFLOAD_KEEP_CRC; >>=20 >> dev_info->tx_offload_capa =3D >>@@ -1020,7 +1035,6 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) >> int ret; >>=20 >> eth_dev->dev_ops =3D &axgbe_eth_dev_ops; >>- eth_dev->rx_pkt_burst =3D &axgbe_recv_pkts; >>=20 >> /* >> * For secondary processes, we don't initialise any further as primary = diff --git a/drivers/net/axgbe/axgbe_rxtx.c b/drivers/net/axgbe/axgbe_rxtx.= c index 96055c25b..8f818eb89 100644 >>--- a/drivers/net/axgbe/axgbe_rxtx.c >>+++ b/drivers/net/axgbe/axgbe_rxtx.c >>@@ -307,6 +307,151 @@ axgbe_recv_pkts(void *rx_queue, struct rte_mbuf **r= x_pkts, >> return nb_rx; >> } >>=20 >>+uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue, >>+ struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { >>+ PMD_INIT_FUNC_TRACE(); >>+ uint16_t nb_rx =3D 0; >>+ struct axgbe_rx_queue *rxq =3D rx_queue; >>+ volatile union axgbe_rx_desc *desc; >>+ >>+ uint64_t old_dirty =3D rxq->dirty; >>+ struct rte_mbuf *first_seg =3D NULL; >>+ struct rte_mbuf *mbuf, *tmbuf; >>+ unsigned int err; >>+ uint32_t error_status; >>+ uint16_t idx, pidx, data_len =3D 0, pkt_len =3D 0; >>+ >>+ idx =3D AXGBE_GET_DESC_IDX(rxq, rxq->cur); >>+ while (nb_rx < nb_pkts) { >>+ bool eop =3D 0; >>+next_desc: >>+ if (unlikely(idx =3D=3D rxq->nb_desc)) >>+ idx =3D 0; >>+ >>+ desc =3D &rxq->desc[idx]; >>+ >>+ if (AXGMAC_GET_BITS_LE(desc->write.desc3, RX_NORMAL_DESC3, OWN)) >>+ break; >>+ >>+ tmbuf =3D rte_mbuf_raw_alloc(rxq->mb_pool); >>+ if (unlikely(!tmbuf)) { >>+ PMD_DRV_LOG(ERR, "RX mbuf alloc failed port_id =3D %u" >>+ " queue_id =3D %u\n", >>+ (unsigned int)rxq->port_id, >>+ (unsigned int)rxq->queue_id); >>+ rte_eth_devices[rxq->port_id].data->rx_mbuf_alloc_failed++; >>+ break; >>+ } >>+ >>+ pidx =3D idx + 1; >>+ if (unlikely(pidx =3D=3D rxq->nb_desc)) >>+ pidx =3D 0; >>+ >>+ rte_prefetch0(rxq->sw_ring[pidx]); >>+ if ((pidx & 0x3) =3D=3D 0) { >>+ rte_prefetch0(&rxq->desc[pidx]); >>+ rte_prefetch0(&rxq->sw_ring[pidx]); >>+ } >>+ >>+ mbuf =3D rxq->sw_ring[idx]; >>+ /* Check for any errors and free mbuf*/ >>+ err =3D AXGMAC_GET_BITS_LE(desc->write.desc3, >>+ RX_NORMAL_DESC3, ES); >>+ error_status =3D 0; >>+ if (unlikely(err)) { >>+ error_status =3D desc->write.desc3 & AXGBE_ERR_STATUS; >>+ if ((error_status !=3D AXGBE_L3_CSUM_ERR) >>+ && (error_status !=3D AXGBE_L4_CSUM_ERR)) { >>+ rxq->errors++; >>+ rte_pktmbuf_free(mbuf); >>+ goto err_set; >>+ } >>+ } >>+ rte_prefetch1(rte_pktmbuf_mtod(mbuf, void *)); >>+ >>+ if (!AXGMAC_GET_BITS_LE(desc->write.desc3, >>+ RX_NORMAL_DESC3, LD)) { >>+ eop =3D 0; >>+ pkt_len =3D rxq->buf_size; >>+ data_len =3D pkt_len; >>+ } else { >>+ eop =3D 1; >>+ pkt_len =3D AXGMAC_GET_BITS_LE(desc->write.desc3, >>+ RX_NORMAL_DESC3, PL); >>+ data_len =3D pkt_len - rxq->crc_len; >>+ } >>+ >>+ if (first_seg !=3D NULL) { >>+ if (rte_pktmbuf_chain(first_seg, mbuf) !=3D 0) >>+ rte_mempool_put(rxq->mb_pool, >>+ first_seg); >>+ } else { >>+ first_seg =3D mbuf; >>+ } >>+ >>+ /* Get the RSS hash */ >>+ if (AXGMAC_GET_BITS_LE(desc->write.desc3, RX_NORMAL_DESC3, RSV)) >>+ mbuf->hash.rss =3D rte_le_to_cpu_32(desc->write.desc1); >>+ >>+ /* Mbuf populate */ >>+ mbuf->data_off =3D RTE_PKTMBUF_HEADROOM; >>+ mbuf->data_len =3D data_len; >>+ >>+err_set: >>+ rxq->cur++; >>+ rxq->sw_ring[idx++] =3D tmbuf; >>+ desc->read.baddr =3D >>+ rte_cpu_to_le_64(rte_mbuf_data_iova_default(tmbuf)); >>+ memset((void *)(&desc->read.desc2), 0, 8); >>+ AXGMAC_SET_BITS_LE(desc->read.desc3, RX_NORMAL_DESC3, OWN, 1); >>+ rxq->dirty++; >>+ >>+ if (!eop) { >>+ rte_pktmbuf_free(mbuf); >>+ goto next_desc; >>+ } >>+ >>+ first_seg->pkt_len =3D pkt_len; >>+ rxq->bytes +=3D pkt_len; >>+ mbuf->next =3D NULL; >>+ >>+ first_seg->port =3D rxq->port_id; >>+ if (rxq->pdata->rx_csum_enable) { >>+ mbuf->ol_flags =3D 0; >>+ mbuf->ol_flags |=3D PKT_RX_IP_CKSUM_GOOD; >>+ mbuf->ol_flags |=3D PKT_RX_L4_CKSUM_GOOD; >>+ if (unlikely(error_status =3D=3D AXGBE_L3_CSUM_ERR)) { >>+ mbuf->ol_flags &=3D ~PKT_RX_IP_CKSUM_GOOD; >>+ mbuf->ol_flags |=3D PKT_RX_IP_CKSUM_BAD; >>+ mbuf->ol_flags &=3D ~PKT_RX_L4_CKSUM_GOOD; >>+ mbuf->ol_flags |=3D PKT_RX_L4_CKSUM_UNKNOWN; >>+ } else if (unlikely(error_status >>+ =3D=3D AXGBE_L4_CSUM_ERR)) { >>+ mbuf->ol_flags &=3D ~PKT_RX_L4_CKSUM_GOOD; >>+ mbuf->ol_flags |=3D PKT_RX_L4_CKSUM_BAD; >>+ } >>+ } >>+ >>+ rx_pkts[nb_rx++] =3D first_seg; >>+ >>+ /* Setup receipt context for a new packet.*/ >>+ first_seg =3D NULL; >>+ } >>+ >>+ /* Save receive context.*/ >>+ rxq->pkts +=3D nb_rx; >>+ >>+ if (rxq->dirty !=3D old_dirty) { >>+ rte_wmb(); >>+ idx =3D AXGBE_GET_DESC_IDX(rxq, rxq->dirty - 1); >>+ AXGMAC_DMA_IOWRITE(rxq, DMA_CH_RDTR_LO, >>+ low32_value(rxq->ring_phys_addr + >>+ (idx * sizeof(union axgbe_rx_desc)))); >>+ } >>+ return nb_rx; >>+} >>+ >> /* Tx Apis */ >> static void axgbe_tx_queue_release(struct axgbe_tx_queue *tx_queue) { d= iff --git a/drivers/net/axgbe/axgbe_rxtx.h b/drivers/net/axgbe/axgbe_rxtx.h= index a21537df9..f6796b09b 100644 >>--- a/drivers/net/axgbe/axgbe_rxtx.h >>+++ b/drivers/net/axgbe/axgbe_rxtx.h >>@@ -179,6 +179,8 @@ int axgbe_dev_rx_queue_start(struct rte_eth_dev *dev,= uint16_t rx_queue_id); int axgbe_dev_rx_queue_stop(struct rte_eth_dev *de= v, uint16_t rx_queue_id); uint16_t axgbe_recv_pkts(void *rx_queue, struct = rte_mbuf **rx_pkts, >> uint16_t nb_pkts); >>+uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue, >>+ struct rte_mbuf **rx_pkts, uint16_t nb_pkts); >> uint16_t axgbe_recv_pkts_threshold_refresh(void *rx_queue, >> struct rte_mbuf **rx_pkts, >> uint16_t nb_pkts); >>-- >>2.17.1 >> >