Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/99431/?format=api
https://patches.dpdk.org/api/patches/99431/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/20210922140953.19388-3-konstantin.ananyev@intel.com/", "project": { "id": 1, "url": "https://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20210922140953.19388-3-konstantin.ananyev@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20210922140953.19388-3-konstantin.ananyev@intel.com", "date": "2021-09-22T14:09:50", "name": "[RFC,v2,2/5] ethdev: change input parameters for rx_queue_count", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "8df4a336e3a954b955d03fddd28b2a5495d9f259", "submitter": { "id": 33, "url": "https://patches.dpdk.org/api/people/33/?format=api", "name": "Ananyev, Konstantin", "email": "konstantin.ananyev@intel.com" }, "delegate": { "id": 319, "url": "https://patches.dpdk.org/api/users/319/?format=api", "username": "fyigit", "first_name": "Ferruh", "last_name": "Yigit", "email": "ferruh.yigit@amd.com" }, "mbox": "https://patches.dpdk.org/project/dpdk/patch/20210922140953.19388-3-konstantin.ananyev@intel.com/mbox/", "series": [ { "id": 19084, "url": "https://patches.dpdk.org/api/series/19084/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=19084", "date": "2021-09-22T14:09:48", "name": "hide eth dev related structures", "version": 2, "mbox": "https://patches.dpdk.org/series/19084/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/99431/comments/", "check": "success", "checks": "https://patches.dpdk.org/api/patches/99431/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 8407EA0C45;\n\tWed, 22 Sep 2021 16:11:30 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 72B47411F2;\n\tWed, 22 Sep 2021 16:11:30 +0200 (CEST)", "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n by mails.dpdk.org (Postfix) with ESMTP id 129DF411A8\n for <dev@dpdk.org>; Wed, 22 Sep 2021 16:11:27 +0200 (CEST)", "from fmsmga008.fm.intel.com ([10.253.24.58])\n by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 22 Sep 2021 07:11:23 -0700", "from sivswdev08.ir.intel.com ([10.237.217.47])\n by fmsmga008.fm.intel.com with ESMTP; 22 Sep 2021 07:11:11 -0700" ], "X-IronPort-AV": [ "E=McAfee;i=\"6200,9189,10114\"; a=\"223644186\"", "E=Sophos;i=\"5.85,314,1624345200\"; d=\"scan'208\";a=\"223644186\"", "E=Sophos;i=\"5.85,314,1624345200\"; d=\"scan'208\";a=\"512990383\"" ], "X-ExtLoop1": "1", "From": "Konstantin Ananyev <konstantin.ananyev@intel.com>", "To": "dev@dpdk.org", "Cc": "xiaoyun.li@intel.com, anoobj@marvell.com, jerinj@marvell.com,\n ndabilpuram@marvell.com, adwivedi@marvell.com,\n shepard.siegel@atomicrules.com, ed.czeck@atomicrules.com,\n john.miller@atomicrules.com, irusskikh@marvell.com,\n ajit.khaparde@broadcom.com, somnath.kotur@broadcom.com,\n rahul.lakkireddy@chelsio.com, hemant.agrawal@nxp.com,\n sachin.saxena@oss.nxp.com, haiyue.wang@intel.com, johndale@cisco.com,\n hyonkim@cisco.com, qi.z.zhang@intel.com, xiao.w.wang@intel.com,\n humin29@huawei.com, yisen.zhuang@huawei.com, oulijun@huawei.com,\n beilei.xing@intel.com, jingjing.wu@intel.com, qiming.yang@intel.com,\n matan@nvidia.com, viacheslavo@nvidia.com, sthemmin@microsoft.com,\n longli@microsoft.com, heinrich.kuhn@corigine.com, kirankumark@marvell.com,\n andrew.rybchenko@oktetlabs.ru, mczekaj@marvell.com,\n jiawenwu@trustnetic.com, jianwang@trustnetic.com,\n maxime.coquelin@redhat.com, chenbo.xia@intel.com, thomas@monjalon.net,\n ferruh.yigit@intel.com, mdr@ashroe.eu, jay.jayatheerthan@intel.com,\n Konstantin Ananyev <konstantin.ananyev@intel.com>", "Date": "Wed, 22 Sep 2021 15:09:50 +0100", "Message-Id": "<20210922140953.19388-3-konstantin.ananyev@intel.com>", "X-Mailer": "git-send-email 2.18.0", "In-Reply-To": "<20210922140953.19388-1-konstantin.ananyev@intel.com>", "References": "<20210820162834.12544-1-konstantin.ananyev@intel.com>\n <20210922140953.19388-1-konstantin.ananyev@intel.com>", "Subject": "[dpdk-dev] [RFC v2 2/5] ethdev: change input parameters for\n rx_queue_count", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "Currently majority of 'fast' ethdev ops take pointers to internal\nqueue data structures as an input parameter.\nWhile eth_rx_queue_count() takes a pointer to rte_eth_dev and queue\nindex.\nFor future work to hide rte_eth_devices[] and friends it would be\nplausible to unify parameters list of all 'fast' ethdev ops.\nThis patch changes eth_rx_queue_count() to accept pointer to internal\nqueue data as input parameter.\nThis is an API and ABI breakage.\n\nSigned-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>\n---\n drivers/net/ark/ark_ethdev_rx.c | 4 ++--\n drivers/net/ark/ark_ethdev_rx.h | 3 +--\n drivers/net/atlantic/atl_ethdev.h | 2 +-\n drivers/net/atlantic/atl_rxtx.c | 9 ++-------\n drivers/net/bnxt/bnxt_ethdev.c | 8 +++++---\n drivers/net/dpaa/dpaa_ethdev.c | 9 ++++-----\n drivers/net/dpaa2/dpaa2_ethdev.c | 9 ++++-----\n drivers/net/e1000/e1000_ethdev.h | 6 ++----\n drivers/net/e1000/em_rxtx.c | 4 ++--\n drivers/net/e1000/igb_rxtx.c | 4 ++--\n drivers/net/enic/enic_ethdev.c | 12 ++++++------\n drivers/net/fm10k/fm10k.h | 2 +-\n drivers/net/fm10k/fm10k_rxtx.c | 4 ++--\n drivers/net/hns3/hns3_rxtx.c | 7 +++++--\n drivers/net/hns3/hns3_rxtx.h | 2 +-\n drivers/net/i40e/i40e_rxtx.c | 4 ++--\n drivers/net/i40e/i40e_rxtx.h | 3 +--\n drivers/net/iavf/iavf_rxtx.c | 4 ++--\n drivers/net/iavf/iavf_rxtx.h | 2 +-\n drivers/net/ice/ice_rxtx.c | 4 ++--\n drivers/net/ice/ice_rxtx.h | 2 +-\n drivers/net/igc/igc_txrx.c | 5 ++---\n drivers/net/igc/igc_txrx.h | 3 +--\n drivers/net/ixgbe/ixgbe_ethdev.h | 3 +--\n drivers/net/ixgbe/ixgbe_rxtx.c | 4 ++--\n drivers/net/mlx5/mlx5_rx.c | 26 ++++++++++++-------------\n drivers/net/mlx5/mlx5_rx.h | 2 +-\n drivers/net/netvsc/hn_rxtx.c | 4 ++--\n drivers/net/netvsc/hn_var.h | 2 +-\n drivers/net/nfp/nfp_rxtx.c | 4 ++--\n drivers/net/nfp/nfp_rxtx.h | 3 +--\n drivers/net/octeontx2/otx2_ethdev.h | 2 +-\n drivers/net/octeontx2/otx2_ethdev_ops.c | 8 ++++----\n drivers/net/sfc/sfc_ethdev.c | 12 ++++++------\n drivers/net/thunderx/nicvf_ethdev.c | 3 +--\n drivers/net/thunderx/nicvf_rxtx.c | 4 ++--\n drivers/net/thunderx/nicvf_rxtx.h | 2 +-\n drivers/net/txgbe/txgbe_ethdev.h | 3 +--\n drivers/net/txgbe/txgbe_rxtx.c | 4 ++--\n drivers/net/vhost/rte_eth_vhost.c | 4 ++--\n lib/ethdev/rte_ethdev.h | 2 +-\n lib/ethdev/rte_ethdev_core.h | 3 +--\n 42 files changed, 97 insertions(+), 110 deletions(-)", "diff": "diff --git a/drivers/net/ark/ark_ethdev_rx.c b/drivers/net/ark/ark_ethdev_rx.c\nindex d255f0177b..98658ce621 100644\n--- a/drivers/net/ark/ark_ethdev_rx.c\n+++ b/drivers/net/ark/ark_ethdev_rx.c\n@@ -388,11 +388,11 @@ eth_ark_rx_queue_drain(struct ark_rx_queue *queue)\n }\n \n uint32_t\n-eth_ark_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_id)\n+eth_ark_dev_rx_queue_count(void *rx_queue)\n {\n \tstruct ark_rx_queue *queue;\n \n-\tqueue = dev->data->rx_queues[queue_id];\n+\tqueue = rx_queue;\n \treturn (queue->prod_index - queue->cons_index);\t/* mod arith */\n }\n \ndiff --git a/drivers/net/ark/ark_ethdev_rx.h b/drivers/net/ark/ark_ethdev_rx.h\nindex c8dc340a8a..859fcf1e6f 100644\n--- a/drivers/net/ark/ark_ethdev_rx.h\n+++ b/drivers/net/ark/ark_ethdev_rx.h\n@@ -17,8 +17,7 @@ int eth_ark_dev_rx_queue_setup(struct rte_eth_dev *dev,\n \t\t\t unsigned int socket_id,\n \t\t\t const struct rte_eth_rxconf *rx_conf,\n \t\t\t struct rte_mempool *mp);\n-uint32_t eth_ark_dev_rx_queue_count(struct rte_eth_dev *dev,\n-\t\t\t\t uint16_t rx_queue_id);\n+uint32_t eth_ark_dev_rx_queue_count(void *rx_queue);\n int eth_ark_rx_stop_queue(struct rte_eth_dev *dev, uint16_t queue_id);\n int eth_ark_rx_start_queue(struct rte_eth_dev *dev, uint16_t queue_id);\n uint16_t eth_ark_recv_pkts_noop(void *rx_queue, struct rte_mbuf **rx_pkts,\ndiff --git a/drivers/net/atlantic/atl_ethdev.h b/drivers/net/atlantic/atl_ethdev.h\nindex f547571b5c..e808460520 100644\n--- a/drivers/net/atlantic/atl_ethdev.h\n+++ b/drivers/net/atlantic/atl_ethdev.h\n@@ -66,7 +66,7 @@ int atl_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,\n \t\tuint16_t nb_tx_desc, unsigned int socket_id,\n \t\tconst struct rte_eth_txconf *tx_conf);\n \n-uint32_t atl_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id);\n+uint32_t atl_rx_queue_count(void *rx_queue);\n \n int atl_dev_rx_descriptor_status(void *rx_queue, uint16_t offset);\n int atl_dev_tx_descriptor_status(void *tx_queue, uint16_t offset);\ndiff --git a/drivers/net/atlantic/atl_rxtx.c b/drivers/net/atlantic/atl_rxtx.c\nindex 7d367c9306..35bb13044e 100644\n--- a/drivers/net/atlantic/atl_rxtx.c\n+++ b/drivers/net/atlantic/atl_rxtx.c\n@@ -689,18 +689,13 @@ atl_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,\n /* Return Rx queue avail count */\n \n uint32_t\n-atl_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+atl_rx_queue_count(void *rx_queue)\n {\n \tstruct atl_rx_queue *rxq;\n \n \tPMD_INIT_FUNC_TRACE();\n \n-\tif (rx_queue_id >= dev->data->nb_rx_queues) {\n-\t\tPMD_DRV_LOG(ERR, \"Invalid RX queue id=%d\", rx_queue_id);\n-\t\treturn 0;\n-\t}\n-\n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n \n \tif (rxq == NULL)\n \t\treturn 0;\ndiff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex 097dd10de9..e07242e961 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -3130,20 +3130,22 @@ bnxt_dev_led_off_op(struct rte_eth_dev *dev)\n }\n \n static uint32_t\n-bnxt_rx_queue_count_op(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+bnxt_rx_queue_count_op(void *rx_queue)\n {\n-\tstruct bnxt *bp = (struct bnxt *)dev->data->dev_private;\n+\tstruct bnxt *bp;\n \tstruct bnxt_cp_ring_info *cpr;\n \tuint32_t desc = 0, raw_cons, cp_ring_size;\n \tstruct bnxt_rx_queue *rxq;\n \tstruct rx_pkt_cmpl *rxcmp;\n \tint rc;\n \n+\trxq = rx_queue;\n+\tbp = rxq->bp;\n+\n \trc = is_bnxt_in_error(bp);\n \tif (rc)\n \t\treturn rc;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n \tcpr = rxq->cp_ring;\n \traw_cons = cpr->cp_raw_cons;\n \tcp_ring_size = cpr->cp_ring_struct->ring_size;\ndiff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c\nindex 36d8f9249d..b5589300c9 100644\n--- a/drivers/net/dpaa/dpaa_ethdev.c\n+++ b/drivers/net/dpaa/dpaa_ethdev.c\n@@ -1278,17 +1278,16 @@ static void dpaa_eth_tx_queue_release(void *txq __rte_unused)\n }\n \n static uint32_t\n-dpaa_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+dpaa_dev_rx_queue_count(void *rx_queue)\n {\n-\tstruct dpaa_if *dpaa_intf = dev->data->dev_private;\n-\tstruct qman_fq *rxq = &dpaa_intf->rx_queues[rx_queue_id];\n+\tstruct qman_fq *rxq = rx_queue;\n \tu32 frm_cnt = 0;\n \n \tPMD_INIT_FUNC_TRACE();\n \n \tif (qman_query_fq_frm_cnt(rxq, &frm_cnt) == 0) {\n-\t\tDPAA_PMD_DEBUG(\"RX frame count for q(%d) is %u\",\n-\t\t\t rx_queue_id, frm_cnt);\n+\t\tDPAA_PMD_DEBUG(\"RX frame count for q(%p) is %u\",\n+\t\t\t rx_queue, frm_cnt);\n \t}\n \treturn frm_cnt;\n }\ndiff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c\nindex c12169578e..b295af2a57 100644\n--- a/drivers/net/dpaa2/dpaa2_ethdev.c\n+++ b/drivers/net/dpaa2/dpaa2_ethdev.c\n@@ -1011,10 +1011,9 @@ dpaa2_dev_tx_queue_release(void *q __rte_unused)\n }\n \n static uint32_t\n-dpaa2_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+dpaa2_dev_rx_queue_count(void *rx_queue)\n {\n \tint32_t ret;\n-\tstruct dpaa2_dev_priv *priv = dev->data->dev_private;\n \tstruct dpaa2_queue *dpaa2_q;\n \tstruct qbman_swp *swp;\n \tstruct qbman_fq_query_np_rslt state;\n@@ -1031,12 +1030,12 @@ dpaa2_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n \t}\n \tswp = DPAA2_PER_LCORE_PORTAL;\n \n-\tdpaa2_q = (struct dpaa2_queue *)priv->rx_vq[rx_queue_id];\n+\tdpaa2_q = rx_queue;\n \n \tif (qbman_fq_query_state(swp, dpaa2_q->fqid, &state) == 0) {\n \t\tframe_cnt = qbman_fq_state_frame_count(&state);\n-\t\tDPAA2_PMD_DP_DEBUG(\"RX frame count for q(%d) is %u\",\n-\t\t\t\trx_queue_id, frame_cnt);\n+\t\tDPAA2_PMD_DP_DEBUG(\"RX frame count for q(%p) is %u\",\n+\t\t\t\trx_queue, frame_cnt);\n \t}\n \treturn frame_cnt;\n }\ndiff --git a/drivers/net/e1000/e1000_ethdev.h b/drivers/net/e1000/e1000_ethdev.h\nindex 3b4d9c3ee6..460e130a83 100644\n--- a/drivers/net/e1000/e1000_ethdev.h\n+++ b/drivers/net/e1000/e1000_ethdev.h\n@@ -399,8 +399,7 @@ int eth_igb_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,\n \t\tconst struct rte_eth_rxconf *rx_conf,\n \t\tstruct rte_mempool *mb_pool);\n \n-uint32_t eth_igb_rx_queue_count(struct rte_eth_dev *dev,\n-\t\tuint16_t rx_queue_id);\n+uint32_t eth_igb_rx_queue_count(void *rx_queue);\n \n int eth_igb_rx_descriptor_done(void *rx_queue, uint16_t offset);\n \n@@ -476,8 +475,7 @@ int eth_em_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,\n \t\tconst struct rte_eth_rxconf *rx_conf,\n \t\tstruct rte_mempool *mb_pool);\n \n-uint32_t eth_em_rx_queue_count(struct rte_eth_dev *dev,\n-\t\tuint16_t rx_queue_id);\n+uint32_t eth_em_rx_queue_count(void *rx_queue);\n \n int eth_em_rx_descriptor_done(void *rx_queue, uint16_t offset);\n \ndiff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c\nindex dfd8f2fd00..40de36cb20 100644\n--- a/drivers/net/e1000/em_rxtx.c\n+++ b/drivers/net/e1000/em_rxtx.c\n@@ -1489,14 +1489,14 @@ eth_em_rx_queue_setup(struct rte_eth_dev *dev,\n }\n \n uint32_t\n-eth_em_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+eth_em_rx_queue_count(void *rx_queue)\n {\n #define EM_RXQ_SCAN_INTERVAL 4\n \tvolatile struct e1000_rx_desc *rxdp;\n \tstruct em_rx_queue *rxq;\n \tuint32_t desc = 0;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n \trxdp = &(rxq->rx_ring[rxq->rx_tail]);\n \n \twhile ((desc < rxq->nb_rx_desc) &&\ndiff --git a/drivers/net/e1000/igb_rxtx.c b/drivers/net/e1000/igb_rxtx.c\nindex 278d5d2712..3210a0e008 100644\n--- a/drivers/net/e1000/igb_rxtx.c\n+++ b/drivers/net/e1000/igb_rxtx.c\n@@ -1769,14 +1769,14 @@ eth_igb_rx_queue_setup(struct rte_eth_dev *dev,\n }\n \n uint32_t\n-eth_igb_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+eth_igb_rx_queue_count(void *rx_queue)\n {\n #define IGB_RXQ_SCAN_INTERVAL 4\n \tvolatile union e1000_adv_rx_desc *rxdp;\n \tstruct igb_rx_queue *rxq;\n \tuint32_t desc = 0;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n \trxdp = &(rxq->rx_ring[rxq->rx_tail]);\n \n \twhile ((desc < rxq->nb_rx_desc) &&\ndiff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c\nindex 8d5797523b..5b2d60ad9c 100644\n--- a/drivers/net/enic/enic_ethdev.c\n+++ b/drivers/net/enic/enic_ethdev.c\n@@ -233,18 +233,18 @@ static void enicpmd_dev_rx_queue_release(void *rxq)\n \tenic_free_rq(rxq);\n }\n \n-static uint32_t enicpmd_dev_rx_queue_count(struct rte_eth_dev *dev,\n-\t\t\t\t\t uint16_t rx_queue_id)\n+static uint32_t enicpmd_dev_rx_queue_count(void *rx_queue)\n {\n-\tstruct enic *enic = pmd_priv(dev);\n+\tstruct enic *enic;\n+\tstruct vnic_rq *sop_rq;\n \tuint32_t queue_count = 0;\n \tstruct vnic_cq *cq;\n \tuint32_t cq_tail;\n \tuint16_t cq_idx;\n-\tint rq_num;\n \n-\trq_num = enic_rte_rq_idx_to_sop_idx(rx_queue_id);\n-\tcq = &enic->cq[enic_cq_rq(enic, rq_num)];\n+\tsop_rq = rx_queue;\n+\tenic = vnic_dev_priv(sop_rq->vdev);\n+\tcq = &enic->cq[enic_cq_rq(enic, sop_rq->index)];\n \tcq_idx = cq->to_clean;\n \n \tcq_tail = ioread32(&cq->ctrl->cq_tail);\ndiff --git a/drivers/net/fm10k/fm10k.h b/drivers/net/fm10k/fm10k.h\nindex 916b856acc..648d12a1b4 100644\n--- a/drivers/net/fm10k/fm10k.h\n+++ b/drivers/net/fm10k/fm10k.h\n@@ -324,7 +324,7 @@ uint16_t fm10k_recv_scattered_pkts(void *rx_queue,\n \t\tstruct rte_mbuf **rx_pkts, uint16_t nb_pkts);\n \n uint32_t\n-fm10k_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id);\n+fm10k_dev_rx_queue_count(void *rx_queue);\n \n int\n fm10k_dev_rx_descriptor_done(void *rx_queue, uint16_t offset);\ndiff --git a/drivers/net/fm10k/fm10k_rxtx.c b/drivers/net/fm10k/fm10k_rxtx.c\nindex 0a9a27aa5a..eab798e52c 100644\n--- a/drivers/net/fm10k/fm10k_rxtx.c\n+++ b/drivers/net/fm10k/fm10k_rxtx.c\n@@ -367,14 +367,14 @@ fm10k_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n }\n \n uint32_t\n-fm10k_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+fm10k_dev_rx_queue_count(void *rx_queue)\n {\n #define FM10K_RXQ_SCAN_INTERVAL 4\n \tvolatile union fm10k_rx_desc *rxdp;\n \tstruct fm10k_rx_queue *rxq;\n \tuint16_t desc = 0;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n \trxdp = &rxq->hw_ring[rxq->next_dd];\n \twhile ((desc < rxq->nb_desc) &&\n \t\trxdp->w.status & rte_cpu_to_le_16(FM10K_RXD_STATUS_DD)) {\ndiff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c\nindex 481872e395..04791ae7d0 100644\n--- a/drivers/net/hns3/hns3_rxtx.c\n+++ b/drivers/net/hns3/hns3_rxtx.c\n@@ -4673,7 +4673,7 @@ hns3_dev_tx_descriptor_status(void *tx_queue, uint16_t offset)\n }\n \n uint32_t\n-hns3_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+hns3_rx_queue_count(void *rx_queue)\n {\n \t/*\n \t * Number of BDs that have been processed by the driver\n@@ -4681,9 +4681,12 @@ hns3_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n \t */\n \tuint32_t driver_hold_bd_num;\n \tstruct hns3_rx_queue *rxq;\n+\tconst struct rte_eth_dev *dev;\n \tuint32_t fbd_num;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n+\tdev = &rte_eth_devices[rxq->port_id];\n+\n \tfbd_num = hns3_read_dev(rxq, HNS3_RING_RX_FBDNUM_REG);\n \tif (dev->rx_pkt_burst == hns3_recv_pkts_vec ||\n \t dev->rx_pkt_burst == hns3_recv_pkts_vec_sve)\ndiff --git a/drivers/net/hns3/hns3_rxtx.h b/drivers/net/hns3/hns3_rxtx.h\nindex cd7c21c1d0..34a028701f 100644\n--- a/drivers/net/hns3/hns3_rxtx.h\n+++ b/drivers/net/hns3/hns3_rxtx.h\n@@ -696,7 +696,7 @@ int hns3_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t nb_desc,\n \t\t\tstruct rte_mempool *mp);\n int hns3_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t nb_desc,\n \t\t\tunsigned int socket, const struct rte_eth_txconf *conf);\n-uint32_t hns3_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id);\n+uint32_t hns3_rx_queue_count(void *rx_queue);\n int hns3_dev_rx_queue_start(struct rte_eth_dev *dev, uint16_t rx_queue_id);\n int hns3_dev_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id);\n int hns3_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id);\ndiff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c\nindex 3eb82578b0..5493ae6bba 100644\n--- a/drivers/net/i40e/i40e_rxtx.c\n+++ b/drivers/net/i40e/i40e_rxtx.c\n@@ -2117,14 +2117,14 @@ i40e_dev_rx_queue_release(void *rxq)\n }\n \n uint32_t\n-i40e_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+i40e_dev_rx_queue_count(void *rx_queue)\n {\n #define I40E_RXQ_SCAN_INTERVAL 4\n \tvolatile union i40e_rx_desc *rxdp;\n \tstruct i40e_rx_queue *rxq;\n \tuint16_t desc = 0;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n \trxdp = &(rxq->rx_ring[rxq->rx_tail]);\n \twhile ((desc < rxq->nb_rx_desc) &&\n \t\t((rte_le_to_cpu_64(rxdp->wb.qword1.status_error_len) &\ndiff --git a/drivers/net/i40e/i40e_rxtx.h b/drivers/net/i40e/i40e_rxtx.h\nindex 5ccf5773e8..a08b80f020 100644\n--- a/drivers/net/i40e/i40e_rxtx.h\n+++ b/drivers/net/i40e/i40e_rxtx.h\n@@ -225,8 +225,7 @@ int i40e_tx_done_cleanup(void *txq, uint32_t free_cnt);\n int i40e_alloc_rx_queue_mbufs(struct i40e_rx_queue *rxq);\n void i40e_rx_queue_release_mbufs(struct i40e_rx_queue *rxq);\n \n-uint32_t i40e_dev_rx_queue_count(struct rte_eth_dev *dev,\n-\t\t\t\t uint16_t rx_queue_id);\n+uint32_t i40e_dev_rx_queue_count(void *rx_queue);\n int i40e_dev_rx_descriptor_done(void *rx_queue, uint16_t offset);\n int i40e_dev_rx_descriptor_status(void *rx_queue, uint16_t offset);\n int i40e_dev_tx_descriptor_status(void *tx_queue, uint16_t offset);\ndiff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c\nindex 6de8ad3fe3..a08c2c6cf4 100644\n--- a/drivers/net/iavf/iavf_rxtx.c\n+++ b/drivers/net/iavf/iavf_rxtx.c\n@@ -2793,14 +2793,14 @@ iavf_dev_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,\n \n /* Get the number of used descriptors of a rx queue */\n uint32_t\n-iavf_dev_rxq_count(struct rte_eth_dev *dev, uint16_t queue_id)\n+iavf_dev_rxq_count(void *rx_queue)\n {\n #define IAVF_RXQ_SCAN_INTERVAL 4\n \tvolatile union iavf_rx_desc *rxdp;\n \tstruct iavf_rx_queue *rxq;\n \tuint16_t desc = 0;\n \n-\trxq = dev->data->rx_queues[queue_id];\n+\trxq = rx_queue;\n \trxdp = &rxq->rx_ring[rxq->rx_tail];\n \n \twhile ((desc < rxq->nb_rx_desc) &&\ndiff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h\nindex e210b913d6..2f7bec2b63 100644\n--- a/drivers/net/iavf/iavf_rxtx.h\n+++ b/drivers/net/iavf/iavf_rxtx.h\n@@ -453,7 +453,7 @@ void iavf_dev_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,\n \t\t\t struct rte_eth_rxq_info *qinfo);\n void iavf_dev_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,\n \t\t\t struct rte_eth_txq_info *qinfo);\n-uint32_t iavf_dev_rxq_count(struct rte_eth_dev *dev, uint16_t queue_id);\n+uint32_t iavf_dev_rxq_count(void *rx_queue);\n int iavf_dev_rx_desc_status(void *rx_queue, uint16_t offset);\n int iavf_dev_tx_desc_status(void *tx_queue, uint16_t offset);\n \ndiff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c\nindex 5d7ab4f047..61936b0ab1 100644\n--- a/drivers/net/ice/ice_rxtx.c\n+++ b/drivers/net/ice/ice_rxtx.c\n@@ -1427,14 +1427,14 @@ ice_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,\n }\n \n uint32_t\n-ice_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+ice_rx_queue_count(void *rx_queue)\n {\n #define ICE_RXQ_SCAN_INTERVAL 4\n \tvolatile union ice_rx_flex_desc *rxdp;\n \tstruct ice_rx_queue *rxq;\n \tuint16_t desc = 0;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n \trxdp = &rxq->rx_ring[rxq->rx_tail];\n \twhile ((desc < rxq->nb_rx_desc) &&\n \t rte_le_to_cpu_16(rxdp->wb.status_error0) &\ndiff --git a/drivers/net/ice/ice_rxtx.h b/drivers/net/ice/ice_rxtx.h\nindex b10db0874d..b45abec91a 100644\n--- a/drivers/net/ice/ice_rxtx.h\n+++ b/drivers/net/ice/ice_rxtx.h\n@@ -222,7 +222,7 @@ uint16_t ice_prep_pkts(__rte_unused void *tx_queue, struct rte_mbuf **tx_pkts,\n void ice_set_tx_function_flag(struct rte_eth_dev *dev,\n \t\t\t struct ice_tx_queue *txq);\n void ice_set_tx_function(struct rte_eth_dev *dev);\n-uint32_t ice_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id);\n+uint32_t ice_rx_queue_count(void *rx_queue);\n void ice_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,\n \t\t struct rte_eth_rxq_info *qinfo);\n void ice_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,\ndiff --git a/drivers/net/igc/igc_txrx.c b/drivers/net/igc/igc_txrx.c\nindex b5489eedd2..437992ecdf 100644\n--- a/drivers/net/igc/igc_txrx.c\n+++ b/drivers/net/igc/igc_txrx.c\n@@ -722,8 +722,7 @@ void eth_igc_rx_queue_release(void *rxq)\n \t\tigc_rx_queue_release(rxq);\n }\n \n-uint32_t eth_igc_rx_queue_count(struct rte_eth_dev *dev,\n-\t\tuint16_t rx_queue_id)\n+uint32_t eth_igc_rx_queue_count(void *rx_queue)\n {\n \t/**\n \t * Check the DD bit of a rx descriptor of each 4 in a group,\n@@ -736,7 +735,7 @@ uint32_t eth_igc_rx_queue_count(struct rte_eth_dev *dev,\n \tstruct igc_rx_queue *rxq;\n \tuint16_t desc = 0;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n \trxdp = &rxq->rx_ring[rxq->rx_tail];\n \n \twhile (desc < rxq->nb_rx_desc - rxq->rx_tail) {\ndiff --git a/drivers/net/igc/igc_txrx.h b/drivers/net/igc/igc_txrx.h\nindex f2b2d75bbc..b0c4b3ebd9 100644\n--- a/drivers/net/igc/igc_txrx.h\n+++ b/drivers/net/igc/igc_txrx.h\n@@ -22,8 +22,7 @@ int eth_igc_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,\n \t\tconst struct rte_eth_rxconf *rx_conf,\n \t\tstruct rte_mempool *mb_pool);\n \n-uint32_t eth_igc_rx_queue_count(struct rte_eth_dev *dev,\n-\t\tuint16_t rx_queue_id);\n+uint32_t eth_igc_rx_queue_count(void *rx_queue);\n \n int eth_igc_rx_descriptor_done(void *rx_queue, uint16_t offset);\n \ndiff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_ethdev.h\nindex a0ce18ca24..c5027be1dc 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.h\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.h\n@@ -602,8 +602,7 @@ int ixgbe_dev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,\n \t\tuint16_t nb_tx_desc, unsigned int socket_id,\n \t\tconst struct rte_eth_txconf *tx_conf);\n \n-uint32_t ixgbe_dev_rx_queue_count(struct rte_eth_dev *dev,\n-\t\tuint16_t rx_queue_id);\n+uint32_t ixgbe_dev_rx_queue_count(void *rx_queue);\n \n int ixgbe_dev_rx_descriptor_done(void *rx_queue, uint16_t offset);\n \ndiff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c\nindex bfdfd5e755..1f802851e3 100644\n--- a/drivers/net/ixgbe/ixgbe_rxtx.c\n+++ b/drivers/net/ixgbe/ixgbe_rxtx.c\n@@ -3258,14 +3258,14 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,\n }\n \n uint32_t\n-ixgbe_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+ixgbe_dev_rx_queue_count(void *rx_queue)\n {\n #define IXGBE_RXQ_SCAN_INTERVAL 4\n \tvolatile union ixgbe_adv_rx_desc *rxdp;\n \tstruct ixgbe_rx_queue *rxq;\n \tuint32_t desc = 0;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n \trxdp = &(rxq->rx_ring[rxq->rx_tail]);\n \n \twhile ((desc < rxq->nb_rx_desc) &&\ndiff --git a/drivers/net/mlx5/mlx5_rx.c b/drivers/net/mlx5/mlx5_rx.c\nindex e3b1051ba4..1a9eb35acc 100644\n--- a/drivers/net/mlx5/mlx5_rx.c\n+++ b/drivers/net/mlx5/mlx5_rx.c\n@@ -240,32 +240,32 @@ mlx5_rx_burst_mode_get(struct rte_eth_dev *dev,\n /**\n * DPDK callback to get the number of used descriptors in a RX queue.\n *\n- * @param dev\n- * Pointer to the device structure.\n- *\n- * @param rx_queue_id\n- * The Rx queue.\n+ * @param rx_queue\n+ * The Rx queue pointer.\n *\n * @return\n * The number of used rx descriptor.\n * -EINVAL if the queue is invalid\n */\n uint32_t\n-mlx5_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+mlx5_rx_queue_count(void *rx_queue)\n {\n-\tstruct mlx5_priv *priv = dev->data->dev_private;\n-\tstruct mlx5_rxq_data *rxq;\n+\tstruct mlx5_rxq_data *rxq = rx_queue;\n+\tstruct rte_eth_dev *dev;\n+\n+\tif (!rxq) {\n+\t\trte_errno = EINVAL;\n+\t\treturn -rte_errno;\n+\t}\n+\n+\tdev = &rte_eth_devices[rxq->port_id];\n \n \tif (dev->rx_pkt_burst == NULL ||\n \t dev->rx_pkt_burst == removed_rx_burst) {\n \t\trte_errno = ENOTSUP;\n \t\treturn -rte_errno;\n \t}\n-\trxq = (*priv->rxqs)[rx_queue_id];\n-\tif (!rxq) {\n-\t\trte_errno = EINVAL;\n-\t\treturn -rte_errno;\n-\t}\n+\n \treturn rx_queue_count(rxq);\n }\n \ndiff --git a/drivers/net/mlx5/mlx5_rx.h b/drivers/net/mlx5/mlx5_rx.h\nindex 3f2b99fb65..5e4ac7324d 100644\n--- a/drivers/net/mlx5/mlx5_rx.h\n+++ b/drivers/net/mlx5/mlx5_rx.h\n@@ -260,7 +260,7 @@ uint16_t mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts,\n uint16_t removed_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts,\n \t\t\t uint16_t pkts_n);\n int mlx5_rx_descriptor_status(void *rx_queue, uint16_t offset);\n-uint32_t mlx5_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id);\n+uint32_t mlx5_rx_queue_count(void *rx_queue);\n void mlx5_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,\n \t\t struct rte_eth_rxq_info *qinfo);\n int mlx5_rx_burst_mode_get(struct rte_eth_dev *dev, uint16_t rx_queue_id,\ndiff --git a/drivers/net/netvsc/hn_rxtx.c b/drivers/net/netvsc/hn_rxtx.c\nindex c6bf7cc132..30aac371c8 100644\n--- a/drivers/net/netvsc/hn_rxtx.c\n+++ b/drivers/net/netvsc/hn_rxtx.c\n@@ -1018,9 +1018,9 @@ hn_dev_rx_queue_release(void *arg)\n * For this device that means how many packets are pending in the ring.\n */\n uint32_t\n-hn_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_id)\n+hn_dev_rx_queue_count(void *rx_queue)\n {\n-\tstruct hn_rx_queue *rxq = dev->data->rx_queues[queue_id];\n+\tstruct hn_rx_queue *rxq = rx_queue;\n \n \treturn rte_ring_count(rxq->rx_ring);\n }\ndiff --git a/drivers/net/netvsc/hn_var.h b/drivers/net/netvsc/hn_var.h\nindex 43642408bc..2a2bac9338 100644\n--- a/drivers/net/netvsc/hn_var.h\n+++ b/drivers/net/netvsc/hn_var.h\n@@ -215,7 +215,7 @@ int\thn_dev_rx_queue_setup(struct rte_eth_dev *dev,\n void\thn_dev_rx_queue_info(struct rte_eth_dev *dev, uint16_t queue_id,\n \t\t\t struct rte_eth_rxq_info *qinfo);\n void\thn_dev_rx_queue_release(void *arg);\n-uint32_t hn_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_id);\n+uint32_t hn_dev_rx_queue_count(void *rx_queue);\n int\thn_dev_rx_queue_status(void *rxq, uint16_t offset);\n void\thn_dev_free_queues(struct rte_eth_dev *dev);\n \ndiff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c\nindex 1402c5f84a..4b2ac4cc43 100644\n--- a/drivers/net/nfp/nfp_rxtx.c\n+++ b/drivers/net/nfp/nfp_rxtx.c\n@@ -97,14 +97,14 @@ nfp_net_rx_freelist_setup(struct rte_eth_dev *dev)\n }\n \n uint32_t\n-nfp_net_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_idx)\n+nfp_net_rx_queue_count(void *rx_queue)\n {\n \tstruct nfp_net_rxq *rxq;\n \tstruct nfp_net_rx_desc *rxds;\n \tuint32_t idx;\n \tuint32_t count;\n \n-\trxq = (struct nfp_net_rxq *)dev->data->rx_queues[queue_idx];\n+\trxq = rx_queue;\n \n \tidx = rxq->rd_p;\n \ndiff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h\nindex b0a8bf81b0..0fd50a6c22 100644\n--- a/drivers/net/nfp/nfp_rxtx.h\n+++ b/drivers/net/nfp/nfp_rxtx.h\n@@ -275,8 +275,7 @@ struct nfp_net_rxq {\n } __rte_aligned(64);\n \n int nfp_net_rx_freelist_setup(struct rte_eth_dev *dev);\n-uint32_t nfp_net_rx_queue_count(struct rte_eth_dev *dev,\n-\t\t\t\t uint16_t queue_idx);\n+uint32_t nfp_net_rx_queue_count(void *rx_queue);\n uint16_t nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n \t\t\t\t uint16_t nb_pkts);\n void nfp_net_rx_queue_release(void *rxq);\ndiff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h\nindex 7871e3d30b..6696db6f6f 100644\n--- a/drivers/net/octeontx2/otx2_ethdev.h\n+++ b/drivers/net/octeontx2/otx2_ethdev.h\n@@ -431,7 +431,7 @@ int otx2_rx_burst_mode_get(struct rte_eth_dev *dev, uint16_t queue_id,\n \t\t\t struct rte_eth_burst_mode *mode);\n int otx2_tx_burst_mode_get(struct rte_eth_dev *dev, uint16_t queue_id,\n \t\t\t struct rte_eth_burst_mode *mode);\n-uint32_t otx2_nix_rx_queue_count(struct rte_eth_dev *eth_dev, uint16_t qidx);\n+uint32_t otx2_nix_rx_queue_count(void *rx_queue);\n int otx2_nix_tx_done_cleanup(void *txq, uint32_t free_cnt);\n int otx2_nix_rx_descriptor_done(void *rxq, uint16_t offset);\n int otx2_nix_rx_descriptor_status(void *rx_queue, uint16_t offset);\ndiff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c b/drivers/net/octeontx2/otx2_ethdev_ops.c\nindex 552e6bd43d..e6f8e5bfc1 100644\n--- a/drivers/net/octeontx2/otx2_ethdev_ops.c\n+++ b/drivers/net/octeontx2/otx2_ethdev_ops.c\n@@ -342,13 +342,13 @@ nix_rx_head_tail_get(struct otx2_eth_dev *dev,\n }\n \n uint32_t\n-otx2_nix_rx_queue_count(struct rte_eth_dev *eth_dev, uint16_t queue_idx)\n+otx2_nix_rx_queue_count(void *rx_queue)\n {\n-\tstruct otx2_eth_rxq *rxq = eth_dev->data->rx_queues[queue_idx];\n-\tstruct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);\n+\tstruct otx2_eth_rxq *rxq = rx_queue;\n+\tstruct otx2_eth_dev *dev = otx2_eth_pmd_priv(rxq->eth_dev);\n \tuint32_t head, tail;\n \n-\tnix_rx_head_tail_get(dev, &head, &tail, queue_idx);\n+\tnix_rx_head_tail_get(dev, &head, &tail, rxq->rq);\n \treturn (tail - head) % rxq->qlen;\n }\n \ndiff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c\nindex 2db0d000c3..4b5713f3ec 100644\n--- a/drivers/net/sfc/sfc_ethdev.c\n+++ b/drivers/net/sfc/sfc_ethdev.c\n@@ -1281,19 +1281,19 @@ sfc_tx_queue_info_get(struct rte_eth_dev *dev, uint16_t ethdev_qid,\n * use any process-local pointers from the adapter data.\n */\n static uint32_t\n-sfc_rx_queue_count(struct rte_eth_dev *dev, uint16_t ethdev_qid)\n+sfc_rx_queue_count(void *rx_queue)\n {\n-\tconst struct sfc_adapter_priv *sap = sfc_adapter_priv_by_eth_dev(dev);\n-\tstruct sfc_adapter_shared *sas = sfc_adapter_shared_by_eth_dev(dev);\n-\tsfc_ethdev_qid_t sfc_ethdev_qid = ethdev_qid;\n+\tstruct sfc_dp_rxq *dp_rxq = rx_queue;\n+\tconst struct sfc_dp_rx *dp_rx;\n \tstruct sfc_rxq_info *rxq_info;\n \n-\trxq_info = sfc_rxq_info_by_ethdev_qid(sas, sfc_ethdev_qid);\n+\tdp_rx = sfc_dp_rx_by_dp_rxq(dp_rxq);\n+\trxq_info = sfc_rxq_info_by_dp_rxq(dp_rxq);\n \n \tif ((rxq_info->state & SFC_RXQ_STARTED) == 0)\n \t\treturn 0;\n \n-\treturn sap->dp_rx->qdesc_npending(rxq_info->dp);\n+\treturn dp_rx->qdesc_npending(dp_rxq);\n }\n \n /*\ndiff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c\nindex 561a98fc81..0e87620e42 100644\n--- a/drivers/net/thunderx/nicvf_ethdev.c\n+++ b/drivers/net/thunderx/nicvf_ethdev.c\n@@ -1060,8 +1060,7 @@ nicvf_rx_queue_release_mbufs(struct rte_eth_dev *dev, struct nicvf_rxq *rxq)\n \tif (dev->rx_pkt_burst == NULL)\n \t\treturn;\n \n-\twhile ((rxq_cnt = nicvf_dev_rx_queue_count(dev,\n-\t\t\t\tnicvf_netdev_qidx(rxq->nic, rxq->queue_id)))) {\n+\twhile ((rxq_cnt = nicvf_dev_rx_queue_count(rxq))) {\n \t\tnb_pkts = dev->rx_pkt_burst(rxq, rx_pkts,\n \t\t\t\t\tNICVF_MAX_RX_FREE_THRESH);\n \t\tPMD_DRV_LOG(INFO, \"nb_pkts=%d rxq_cnt=%d\", nb_pkts, rxq_cnt);\ndiff --git a/drivers/net/thunderx/nicvf_rxtx.c b/drivers/net/thunderx/nicvf_rxtx.c\nindex 91e09ff8d5..0d4f4ae87e 100644\n--- a/drivers/net/thunderx/nicvf_rxtx.c\n+++ b/drivers/net/thunderx/nicvf_rxtx.c\n@@ -649,11 +649,11 @@ nicvf_recv_pkts_multiseg_cksum_vlan_strip(void *rx_queue,\n }\n \n uint32_t\n-nicvf_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_idx)\n+nicvf_dev_rx_queue_count(void *rx_queue)\n {\n \tstruct nicvf_rxq *rxq;\n \n-\trxq = dev->data->rx_queues[queue_idx];\n+\trxq = rx_queue;\n \treturn nicvf_addr_read(rxq->cq_status) & NICVF_CQ_CQE_COUNT_MASK;\n }\n \ndiff --git a/drivers/net/thunderx/nicvf_rxtx.h b/drivers/net/thunderx/nicvf_rxtx.h\nindex d6ed660b4e..271f329dc4 100644\n--- a/drivers/net/thunderx/nicvf_rxtx.h\n+++ b/drivers/net/thunderx/nicvf_rxtx.h\n@@ -83,7 +83,7 @@ nicvf_mbuff_init_mseg_update(struct rte_mbuf *pkt, const uint64_t mbuf_init,\n \t*(uint64_t *)(&pkt->rearm_data) = init.value;\n }\n \n-uint32_t nicvf_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_idx);\n+uint32_t nicvf_dev_rx_queue_count(void *rx_queue);\n uint32_t nicvf_dev_rbdr_refill(struct rte_eth_dev *dev, uint16_t queue_idx);\n \n uint16_t nicvf_recv_pkts_no_offload(void *rxq, struct rte_mbuf **rx_pkts,\ndiff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h\nindex 3021933965..569cd6a48f 100644\n--- a/drivers/net/txgbe/txgbe_ethdev.h\n+++ b/drivers/net/txgbe/txgbe_ethdev.h\n@@ -446,8 +446,7 @@ int txgbe_dev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,\n \t\tuint16_t nb_tx_desc, unsigned int socket_id,\n \t\tconst struct rte_eth_txconf *tx_conf);\n \n-uint32_t txgbe_dev_rx_queue_count(struct rte_eth_dev *dev,\n-\t\tuint16_t rx_queue_id);\n+uint32_t txgbe_dev_rx_queue_count(void *rx_queue);\n \n int txgbe_dev_rx_descriptor_status(void *rx_queue, uint16_t offset);\n int txgbe_dev_tx_descriptor_status(void *tx_queue, uint16_t offset);\ndiff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c\nindex 1a261287d1..2a7cfdeedb 100644\n--- a/drivers/net/txgbe/txgbe_rxtx.c\n+++ b/drivers/net/txgbe/txgbe_rxtx.c\n@@ -2688,14 +2688,14 @@ txgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,\n }\n \n uint32_t\n-txgbe_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+txgbe_dev_rx_queue_count(void *rx_queue)\n {\n #define TXGBE_RXQ_SCAN_INTERVAL 4\n \tvolatile struct txgbe_rx_desc *rxdp;\n \tstruct txgbe_rx_queue *rxq;\n \tuint32_t desc = 0;\n \n-\trxq = dev->data->rx_queues[rx_queue_id];\n+\trxq = rx_queue;\n \trxdp = &rxq->rx_ring[rxq->rx_tail];\n \n \twhile ((desc < rxq->nb_rx_desc) &&\ndiff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c\nindex a202931e9a..f2b3f142d8 100644\n--- a/drivers/net/vhost/rte_eth_vhost.c\n+++ b/drivers/net/vhost/rte_eth_vhost.c\n@@ -1369,11 +1369,11 @@ eth_link_update(struct rte_eth_dev *dev __rte_unused,\n }\n \n static uint32_t\n-eth_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)\n+eth_rx_queue_count(void *rx_queue)\n {\n \tstruct vhost_queue *vq;\n \n-\tvq = dev->data->rx_queues[rx_queue_id];\n+\tvq = rx_queue;\n \tif (vq == NULL)\n \t\treturn 0;\n \ndiff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h\nindex bef24173cf..73b89fb2f0 100644\n--- a/lib/ethdev/rte_ethdev.h\n+++ b/lib/ethdev/rte_ethdev.h\n@@ -5028,7 +5028,7 @@ rte_eth_rx_queue_count(uint16_t port_id, uint16_t queue_id)\n \t dev->data->rx_queues[queue_id] == NULL)\n \t\treturn -EINVAL;\n \n-\treturn (int)(*dev->rx_queue_count)(dev, queue_id);\n+\treturn (int)(*dev->rx_queue_count)(dev->data->rx_queues[queue_id]);\n }\n \n /**\ndiff --git a/lib/ethdev/rte_ethdev_core.h b/lib/ethdev/rte_ethdev_core.h\nindex edf96de2dc..00f27c643a 100644\n--- a/lib/ethdev/rte_ethdev_core.h\n+++ b/lib/ethdev/rte_ethdev_core.h\n@@ -41,8 +41,7 @@ typedef uint16_t (*eth_tx_prep_t)(void *txq,\n /**< @internal Prepare output packets on a transmit queue of an Ethernet device. */\n \n \n-typedef uint32_t (*eth_rx_queue_count_t)(struct rte_eth_dev *dev,\n-\t\t\t\t\t uint16_t rx_queue_id);\n+typedef uint32_t (*eth_rx_queue_count_t)(void *rxq);\n /**< @internal Get number of used descriptors on a receive queue. */\n \n typedef int (*eth_rx_descriptor_done_t)(void *rxq, uint16_t offset);\n", "prefixes": [ "RFC", "v2", "2/5" ] }{ "id": 99431, "url": "