get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/99431/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 99431,
    "url": "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"
    ]
}