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