DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: dev@dpdk.org
Cc: Bruce Richardson <bruce.richardson@intel.com>,
	Ian Stokes <ian.stokes@intel.com>,
	David Christensen <drc@linux.ibm.com>,
	Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,
	Wathsala Vithanage <wathsala.vithanage@arm.com>,
	Anatoly Burakov <anatoly.burakov@intel.com>
Subject: [RFC PATCH 06/21] common/intel_eth: merge ice and i40e Tx queue struct
Date: Fri, 22 Nov 2024 12:53:59 +0000	[thread overview]
Message-ID: <20241122125418.2857301-7-bruce.richardson@intel.com> (raw)
In-Reply-To: <20241122125418.2857301-1-bruce.richardson@intel.com>

The queue structures fo i40e and ice drivers are virtually identical, so
merge them into a common struct. This should allow easier function
merging in future using that common struct.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 drivers/common/intel_eth/ieth_rxtx.h          | 54 +++++++++++++++++
 drivers/net/i40e/i40e_ethdev.c                |  4 +-
 drivers/net/i40e/i40e_ethdev.h                |  4 +-
 drivers/net/i40e/i40e_fdir.c                  |  4 +-
 .../net/i40e/i40e_recycle_mbufs_vec_common.c  |  2 +-
 drivers/net/i40e/i40e_rxtx.c                  | 58 +++++++++---------
 drivers/net/i40e/i40e_rxtx.h                  | 50 ++--------------
 drivers/net/i40e/i40e_rxtx_vec_altivec.c      |  4 +-
 drivers/net/i40e/i40e_rxtx_vec_avx2.c         |  4 +-
 drivers/net/i40e/i40e_rxtx_vec_avx512.c       |  6 +-
 drivers/net/i40e/i40e_rxtx_vec_common.h       |  2 +-
 drivers/net/i40e/i40e_rxtx_vec_neon.c         |  4 +-
 drivers/net/i40e/i40e_rxtx_vec_sse.c          |  4 +-
 drivers/net/ice/ice_dcf.c                     |  4 +-
 drivers/net/ice/ice_dcf_ethdev.c              | 10 ++--
 drivers/net/ice/ice_diagnose.c                |  2 +-
 drivers/net/ice/ice_ethdev.c                  |  2 +-
 drivers/net/ice/ice_ethdev.h                  |  4 +-
 drivers/net/ice/ice_rxtx.c                    | 60 +++++++++----------
 drivers/net/ice/ice_rxtx.h                    | 41 +------------
 drivers/net/ice/ice_rxtx_vec_avx2.c           |  4 +-
 drivers/net/ice/ice_rxtx_vec_avx512.c         |  8 +--
 drivers/net/ice/ice_rxtx_vec_common.h         |  8 +--
 drivers/net/ice/ice_rxtx_vec_sse.c            |  6 +-
 24 files changed, 164 insertions(+), 185 deletions(-)

diff --git a/drivers/common/intel_eth/ieth_rxtx.h b/drivers/common/intel_eth/ieth_rxtx.h
index 95a3cff048..8b12ff59e4 100644
--- a/drivers/common/intel_eth/ieth_rxtx.h
+++ b/drivers/common/intel_eth/ieth_rxtx.h
@@ -26,4 +26,58 @@ struct ieth_vec_tx_entry
 	struct rte_mbuf *mbuf; /* mbuf associated with TX desc, if any. */
 };
 
+struct ieth_tx_queue;
+
+typedef void (*ice_tx_release_mbufs_t)(struct ieth_tx_queue *txq);
+
+struct ieth_tx_queue {
+	union { /* TX ring virtual address */
+		volatile struct ice_tx_desc *ice_tx_ring;
+		volatile struct i40e_tx_desc *i40e_tx_ring;
+	};
+	volatile uint8_t *qtx_tail;               /* register address of tail */
+	struct ieth_tx_entry *sw_ring; /* virtual address of SW ring */
+	rte_iova_t tx_ring_dma;        /* TX ring DMA address */
+	uint16_t nb_tx_desc;           /* number of TX descriptors */
+	uint16_t tx_tail; /* current value of tail register */
+	uint16_t nb_tx_used; /* number of TX desc used since RS bit set */
+	/* index to last TX descriptor to have been cleaned */
+	uint16_t last_desc_cleaned;
+	/* Total number of TX descriptors ready to be allocated. */
+	uint16_t nb_tx_free;
+	/* Start freeing TX buffers if there are less free descriptors than
+	 * this value.
+	 */
+	uint16_t tx_free_thresh;
+	/* Number of TX descriptors to use before RS bit is set. */
+	uint16_t tx_rs_thresh;
+	uint8_t pthresh;   /**< Prefetch threshold register. */
+	uint8_t hthresh;   /**< Host threshold register. */
+	uint8_t wthresh;   /**< Write-back threshold reg. */
+	uint16_t port_id;  /* Device port identifier. */
+	uint16_t queue_id; /* TX queue index. */
+	uint16_t reg_idx;
+	uint64_t offloads;
+	uint16_t tx_next_dd;
+	uint16_t tx_next_rs;
+	uint64_t mbuf_errors;
+	_Bool tx_deferred_start; /* don't start this queue in dev start */
+	_Bool q_set;             /* indicate if tx queue has been configured */
+	union {                  /* the VSI this queue belongs to */
+		struct ice_vsi *ice_vsi;
+		struct i40e_vsi *i40e_vsi;
+	};
+	const struct rte_memzone *mz;
+
+	union {
+		struct { /* ICE driver specific values */
+			ice_tx_release_mbufs_t tx_rel_mbufs;
+			uint32_t q_teid; /* TX schedule node id. */
+		};
+		struct { /* I40E driver specific values */
+			uint8_t dcb_tc;
+		};
+	};
+};
+
 #endif /* IETH_RXTX_H_ */
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index ca128c7556..4d74513812 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -3685,7 +3685,7 @@ i40e_dev_update_mbuf_stats(struct rte_eth_dev *ethdev,
 		struct i40e_mbuf_stats *mbuf_stats)
 {
 	uint16_t idx;
-	struct i40e_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 
 	for (idx = 0; idx < ethdev->data->nb_tx_queues; idx++) {
 		txq = ethdev->data->tx_queues[idx];
@@ -6585,7 +6585,7 @@ i40e_dev_tx_init(struct i40e_pf *pf)
 	struct rte_eth_dev_data *data = pf->dev_data;
 	uint16_t i;
 	uint32_t ret = I40E_SUCCESS;
-	struct i40e_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 
 	for (i = 0; i < data->nb_tx_queues; i++) {
 		txq = data->tx_queues[i];
diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h
index 98213948b4..8c8c0a1bcf 100644
--- a/drivers/net/i40e/i40e_ethdev.h
+++ b/drivers/net/i40e/i40e_ethdev.h
@@ -334,7 +334,7 @@ struct i40e_vsi_list {
 };
 
 struct i40e_rx_queue;
-struct i40e_tx_queue;
+struct ieth_tx_queue;
 
 /* Bandwidth limit information */
 struct i40e_bw_info {
@@ -738,7 +738,7 @@ TAILQ_HEAD(i40e_fdir_filter_list, i40e_fdir_filter);
 struct i40e_fdir_info {
 	struct i40e_vsi *fdir_vsi;     /* pointer to fdir VSI structure */
 	uint16_t match_counter_index;  /* Statistic counter index used for fdir*/
-	struct i40e_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	struct i40e_rx_queue *rxq;
 	void *prg_pkt[I40E_FDIR_PRG_PKT_CNT];     /* memory for fdir program packet */
 	uint64_t dma_addr[I40E_FDIR_PRG_PKT_CNT]; /* physic address of packet memory*/
diff --git a/drivers/net/i40e/i40e_fdir.c b/drivers/net/i40e/i40e_fdir.c
index c600167634..c5298ffae0 100644
--- a/drivers/net/i40e/i40e_fdir.c
+++ b/drivers/net/i40e/i40e_fdir.c
@@ -1372,7 +1372,7 @@ i40e_find_available_buffer(struct rte_eth_dev *dev)
 {
 	struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
 	struct i40e_fdir_info *fdir_info = &pf->fdir;
-	struct i40e_tx_queue *txq = pf->fdir.txq;
+	struct ieth_tx_queue *txq = pf->fdir.txq;
 
 	/* no available buffer
 	 * search for more available buffers from the current
@@ -1628,7 +1628,7 @@ i40e_flow_fdir_filter_programming(struct i40e_pf *pf,
 				  const struct i40e_fdir_filter_conf *filter,
 				  bool add, bool wait_status)
 {
-	struct i40e_tx_queue *txq = pf->fdir.txq;
+	struct ieth_tx_queue *txq = pf->fdir.txq;
 	struct i40e_rx_queue *rxq = pf->fdir.rxq;
 	const struct i40e_fdir_action *fdir_action = &filter->action;
 	volatile struct i40e_tx_desc *txdp;
diff --git a/drivers/net/i40e/i40e_recycle_mbufs_vec_common.c b/drivers/net/i40e/i40e_recycle_mbufs_vec_common.c
index 167ee8d428..39bf59d526 100644
--- a/drivers/net/i40e/i40e_recycle_mbufs_vec_common.c
+++ b/drivers/net/i40e/i40e_recycle_mbufs_vec_common.c
@@ -55,7 +55,7 @@ uint16_t
 i40e_recycle_tx_mbufs_reuse_vec(void *tx_queue,
 	struct rte_eth_recycle_rxq_info *recycle_rxq_info)
 {
-	struct i40e_tx_queue *txq = tx_queue;
+	struct ieth_tx_queue *txq = tx_queue;
 	struct ieth_tx_entry *txep;
 	struct rte_mbuf **rxep;
 	int i, n;
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 5b8edac3b2..fce3f5ec2a 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -376,7 +376,7 @@ i40e_build_ctob(uint32_t td_cmd,
 }
 
 static inline int
-i40e_xmit_cleanup(struct i40e_tx_queue *txq)
+i40e_xmit_cleanup(struct ieth_tx_queue *txq)
 {
 	struct ieth_tx_entry *sw_ring = txq->sw_ring;
 	volatile struct i40e_tx_desc *txd = txq->i40e_tx_ring;
@@ -1080,7 +1080,7 @@ i40e_calc_pkt_desc(struct rte_mbuf *tx_pkt)
 uint16_t
 i40e_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 {
-	struct i40e_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	struct ieth_tx_entry *sw_ring;
 	struct ieth_tx_entry *txe, *txn;
 	volatile struct i40e_tx_desc *txd;
@@ -1329,7 +1329,7 @@ i40e_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 }
 
 static __rte_always_inline int
-i40e_tx_free_bufs(struct i40e_tx_queue *txq)
+i40e_tx_free_bufs(struct ieth_tx_queue *txq)
 {
 	struct ieth_tx_entry *txep;
 	uint16_t tx_rs_thresh = txq->tx_rs_thresh;
@@ -1413,7 +1413,7 @@ tx1(volatile struct i40e_tx_desc *txdp, struct rte_mbuf **pkts)
 
 /* Fill hardware descriptor ring with mbuf data */
 static inline void
-i40e_tx_fill_hw_ring(struct i40e_tx_queue *txq,
+i40e_tx_fill_hw_ring(struct ieth_tx_queue *txq,
 		     struct rte_mbuf **pkts,
 		     uint16_t nb_pkts)
 {
@@ -1441,7 +1441,7 @@ i40e_tx_fill_hw_ring(struct i40e_tx_queue *txq,
 }
 
 static inline uint16_t
-tx_xmit_pkts(struct i40e_tx_queue *txq,
+tx_xmit_pkts(struct ieth_tx_queue *txq,
 	     struct rte_mbuf **tx_pkts,
 	     uint16_t nb_pkts)
 {
@@ -1504,14 +1504,14 @@ i40e_xmit_pkts_simple(void *tx_queue,
 	uint16_t nb_tx = 0;
 
 	if (likely(nb_pkts <= I40E_TX_MAX_BURST))
-		return tx_xmit_pkts((struct i40e_tx_queue *)tx_queue,
+		return tx_xmit_pkts((struct ieth_tx_queue *)tx_queue,
 						tx_pkts, nb_pkts);
 
 	while (nb_pkts) {
 		uint16_t ret, num = (uint16_t)RTE_MIN(nb_pkts,
 						I40E_TX_MAX_BURST);
 
-		ret = tx_xmit_pkts((struct i40e_tx_queue *)tx_queue,
+		ret = tx_xmit_pkts((struct ieth_tx_queue *)tx_queue,
 						&tx_pkts[nb_tx], num);
 		nb_tx = (uint16_t)(nb_tx + ret);
 		nb_pkts = (uint16_t)(nb_pkts - ret);
@@ -1527,7 +1527,7 @@ i40e_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
 		   uint16_t nb_pkts)
 {
 	uint16_t nb_tx = 0;
-	struct i40e_tx_queue *txq = (struct i40e_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 
 	while (nb_pkts) {
 		uint16_t ret, num;
@@ -1549,7 +1549,7 @@ i40e_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
 static uint16_t
 i40e_xmit_pkts_check(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 {
-	struct i40e_tx_queue *txq = tx_queue;
+	struct ieth_tx_queue *txq = tx_queue;
 	uint16_t idx;
 	uint64_t ol_flags;
 	struct rte_mbuf *mb;
@@ -1611,7 +1611,7 @@ i40e_xmit_pkts_check(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts
 					pkt_error = true;
 					break;
 				}
-				if (mb->nb_segs > ((struct i40e_tx_queue *)tx_queue)->nb_tx_desc) {
+				if (mb->nb_segs > ((struct ieth_tx_queue *)tx_queue)->nb_tx_desc) {
 					PMD_TX_LOG(ERR, "INVALID mbuf: nb_segs out of ring length");
 					pkt_error = true;
 					break;
@@ -1873,7 +1873,7 @@ int
 i40e_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 {
 	int err;
-	struct i40e_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 
 	PMD_INIT_FUNC_TRACE();
@@ -1907,7 +1907,7 @@ i40e_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 int
 i40e_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 {
-	struct i40e_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	int err;
 	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 
@@ -2311,7 +2311,7 @@ i40e_dev_rx_descriptor_status(void *rx_queue, uint16_t offset)
 int
 i40e_dev_tx_descriptor_status(void *tx_queue, uint16_t offset)
 {
-	struct i40e_tx_queue *txq = tx_queue;
+	struct ieth_tx_queue *txq = tx_queue;
 	volatile uint64_t *status;
 	uint64_t mask, expect;
 	uint32_t desc;
@@ -2341,7 +2341,7 @@ i40e_dev_tx_descriptor_status(void *tx_queue, uint16_t offset)
 
 static int
 i40e_dev_tx_queue_setup_runtime(struct rte_eth_dev *dev,
-				struct i40e_tx_queue *txq)
+				struct ieth_tx_queue *txq)
 {
 	struct i40e_adapter *ad =
 		I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
@@ -2394,7 +2394,7 @@ i40e_dev_tx_queue_setup(struct rte_eth_dev *dev,
 {
 	struct i40e_vsi *vsi;
 	struct i40e_pf *pf = NULL;
-	struct i40e_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	const struct rte_memzone *tz;
 	uint32_t ring_size;
 	uint16_t tx_rs_thresh, tx_free_thresh;
@@ -2515,7 +2515,7 @@ i40e_dev_tx_queue_setup(struct rte_eth_dev *dev,
 
 	/* Allocate the TX queue data structure. */
 	txq = rte_zmalloc_socket("i40e tx queue",
-				  sizeof(struct i40e_tx_queue),
+				  sizeof(struct ieth_tx_queue),
 				  RTE_CACHE_LINE_SIZE,
 				  socket_id);
 	if (!txq) {
@@ -2600,7 +2600,7 @@ i40e_dev_tx_queue_setup(struct rte_eth_dev *dev,
 void
 i40e_tx_queue_release(void *txq)
 {
-	struct i40e_tx_queue *q = (struct i40e_tx_queue *)txq;
+	struct ieth_tx_queue *q = (struct ieth_tx_queue *)txq;
 
 	if (!q) {
 		PMD_DRV_LOG(DEBUG, "Pointer to TX queue is NULL");
@@ -2705,7 +2705,7 @@ i40e_reset_rx_queue(struct i40e_rx_queue *rxq)
 }
 
 void
-i40e_tx_queue_release_mbufs(struct i40e_tx_queue *txq)
+i40e_tx_queue_release_mbufs(struct ieth_tx_queue *txq)
 {
 	struct rte_eth_dev *dev;
 	uint16_t i;
@@ -2765,7 +2765,7 @@ i40e_tx_queue_release_mbufs(struct i40e_tx_queue *txq)
 }
 
 static int
-i40e_tx_done_cleanup_full(struct i40e_tx_queue *txq,
+i40e_tx_done_cleanup_full(struct ieth_tx_queue *txq,
 			uint32_t free_cnt)
 {
 	struct ieth_tx_entry *swr_ring = txq->sw_ring;
@@ -2824,7 +2824,7 @@ i40e_tx_done_cleanup_full(struct i40e_tx_queue *txq,
 }
 
 static int
-i40e_tx_done_cleanup_simple(struct i40e_tx_queue *txq,
+i40e_tx_done_cleanup_simple(struct ieth_tx_queue *txq,
 			uint32_t free_cnt)
 {
 	int i, n, cnt;
@@ -2848,7 +2848,7 @@ i40e_tx_done_cleanup_simple(struct i40e_tx_queue *txq,
 }
 
 static int
-i40e_tx_done_cleanup_vec(struct i40e_tx_queue *txq __rte_unused,
+i40e_tx_done_cleanup_vec(struct ieth_tx_queue *txq __rte_unused,
 			uint32_t free_cnt __rte_unused)
 {
 	return -ENOTSUP;
@@ -2856,7 +2856,7 @@ i40e_tx_done_cleanup_vec(struct i40e_tx_queue *txq __rte_unused,
 int
 i40e_tx_done_cleanup(void *txq, uint32_t free_cnt)
 {
-	struct i40e_tx_queue *q = (struct i40e_tx_queue *)txq;
+	struct ieth_tx_queue *q = (struct ieth_tx_queue *)txq;
 	struct rte_eth_dev *dev = &rte_eth_devices[q->port_id];
 	struct i40e_adapter *ad =
 		I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
@@ -2872,7 +2872,7 @@ i40e_tx_done_cleanup(void *txq, uint32_t free_cnt)
 }
 
 void
-i40e_reset_tx_queue(struct i40e_tx_queue *txq)
+i40e_reset_tx_queue(struct ieth_tx_queue *txq)
 {
 	struct ieth_tx_entry *txe;
 	uint16_t i, prev, size;
@@ -2911,7 +2911,7 @@ i40e_reset_tx_queue(struct i40e_tx_queue *txq)
 
 /* Init the TX queue in hardware */
 int
-i40e_tx_queue_init(struct i40e_tx_queue *txq)
+i40e_tx_queue_init(struct ieth_tx_queue *txq)
 {
 	enum i40e_status_code err = I40E_SUCCESS;
 	struct i40e_vsi *vsi = txq->i40e_vsi;
@@ -3167,7 +3167,7 @@ i40e_dev_free_queues(struct rte_eth_dev *dev)
 enum i40e_status_code
 i40e_fdir_setup_tx_resources(struct i40e_pf *pf)
 {
-	struct i40e_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	const struct rte_memzone *tz = NULL;
 	struct rte_eth_dev *dev;
 	uint32_t ring_size;
@@ -3181,7 +3181,7 @@ i40e_fdir_setup_tx_resources(struct i40e_pf *pf)
 
 	/* Allocate the TX queue data structure. */
 	txq = rte_zmalloc_socket("i40e fdir tx queue",
-				  sizeof(struct i40e_tx_queue),
+				  sizeof(struct ieth_tx_queue),
 				  RTE_CACHE_LINE_SIZE,
 				  SOCKET_ID_ANY);
 	if (!txq) {
@@ -3304,7 +3304,7 @@ void
 i40e_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,
 	struct rte_eth_txq_info *qinfo)
 {
-	struct i40e_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 
 	txq = dev->data->tx_queues[queue_id];
 
@@ -3552,7 +3552,7 @@ i40e_rx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
 }
 
 void __rte_cold
-i40e_set_tx_function_flag(struct rte_eth_dev *dev, struct i40e_tx_queue *txq)
+i40e_set_tx_function_flag(struct rte_eth_dev *dev, struct ieth_tx_queue *txq)
 {
 	struct i40e_adapter *ad =
 		I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
@@ -3592,7 +3592,7 @@ i40e_set_tx_function(struct rte_eth_dev *dev)
 #endif
 		if (ad->tx_vec_allowed) {
 			for (i = 0; i < dev->data->nb_tx_queues; i++) {
-				struct i40e_tx_queue *txq =
+				struct ieth_tx_queue *txq =
 					dev->data->tx_queues[i];
 
 				if (txq && i40e_txq_vec_setup(txq)) {
diff --git a/drivers/net/i40e/i40e_rxtx.h b/drivers/net/i40e/i40e_rxtx.h
index 030c381e0c..e6e36d8e69 100644
--- a/drivers/net/i40e/i40e_rxtx.h
+++ b/drivers/net/i40e/i40e_rxtx.h
@@ -124,44 +124,6 @@ struct i40e_rx_queue {
 	const struct rte_memzone *mz;
 };
 
-/*
- * Structure associated with each TX queue.
- */
-struct i40e_tx_queue {
-	uint16_t nb_tx_desc; /**< number of TX descriptors */
-	rte_iova_t tx_ring_dma; /**< TX ring DMA address */
-	volatile struct i40e_tx_desc *i40e_tx_ring; /**< TX ring virtual address */
-	struct ieth_tx_entry *sw_ring; /**< virtual address of SW ring */
-	uint16_t tx_tail; /**< current value of tail register */
-	volatile uint8_t *qtx_tail; /**< register address of tail */
-	uint16_t nb_tx_used; /**< number of TX desc used since RS bit set */
-	/**< index to last TX descriptor to have been cleaned */
-	uint16_t last_desc_cleaned;
-	/**< Total number of TX descriptors ready to be allocated. */
-	uint16_t nb_tx_free;
-	/**< Start freeing TX buffers if there are less free descriptors than
-	     this value. */
-	uint16_t tx_free_thresh;
-	/** Number of TX descriptors to use before RS bit is set. */
-	uint16_t tx_rs_thresh;
-	uint8_t pthresh; /**< Prefetch threshold register. */
-	uint8_t hthresh; /**< Host threshold register. */
-	uint8_t wthresh; /**< Write-back threshold reg. */
-	uint16_t port_id; /**< Device port identifier. */
-	uint16_t queue_id; /**< TX queue index. */
-	uint16_t reg_idx;
-	struct i40e_vsi *i40e_vsi; /**< the VSI this queue belongs to */
-	uint16_t tx_next_dd;
-	uint16_t tx_next_rs;
-	bool q_set; /**< indicate if tx queue has been configured */
-	uint64_t mbuf_errors;
-
-	bool tx_deferred_start; /**< don't start this queue in dev start */
-	uint8_t dcb_tc;         /**< Traffic class of tx queue */
-	uint64_t offloads; /**< Tx offload flags of RTE_ETH_TX_OFFLOAD_* */
-	const struct rte_memzone *mz;
-};
-
 /** Offload features */
 union i40e_tx_offload {
 	uint64_t data;
@@ -209,15 +171,15 @@ uint16_t i40e_simple_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 			       uint16_t nb_pkts);
 uint16_t i40e_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 		uint16_t nb_pkts);
-int i40e_tx_queue_init(struct i40e_tx_queue *txq);
+int i40e_tx_queue_init(struct ieth_tx_queue *txq);
 int i40e_rx_queue_init(struct i40e_rx_queue *rxq);
-void i40e_free_tx_resources(struct i40e_tx_queue *txq);
+void i40e_free_tx_resources(struct ieth_tx_queue *txq);
 void i40e_free_rx_resources(struct i40e_rx_queue *rxq);
 void i40e_dev_clear_queues(struct rte_eth_dev *dev);
 void i40e_dev_free_queues(struct rte_eth_dev *dev);
 void i40e_reset_rx_queue(struct i40e_rx_queue *rxq);
-void i40e_reset_tx_queue(struct i40e_tx_queue *txq);
-void i40e_tx_queue_release_mbufs(struct i40e_tx_queue *txq);
+void i40e_reset_tx_queue(struct ieth_tx_queue *txq);
+void i40e_tx_queue_release_mbufs(struct ieth_tx_queue *txq);
 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);
@@ -237,13 +199,13 @@ uint16_t i40e_recv_scattered_pkts_vec(void *rx_queue,
 				      uint16_t nb_pkts);
 int i40e_rx_vec_dev_conf_condition_check(struct rte_eth_dev *dev);
 int i40e_rxq_vec_setup(struct i40e_rx_queue *rxq);
-int i40e_txq_vec_setup(struct i40e_tx_queue *txq);
+int i40e_txq_vec_setup(struct ieth_tx_queue *txq);
 void i40e_rx_queue_release_mbufs_vec(struct i40e_rx_queue *rxq);
 uint16_t i40e_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
 				   uint16_t nb_pkts);
 void i40e_set_rx_function(struct rte_eth_dev *dev);
 void i40e_set_tx_function_flag(struct rte_eth_dev *dev,
-			       struct i40e_tx_queue *txq);
+			       struct ieth_tx_queue *txq);
 void i40e_set_tx_function(struct rte_eth_dev *dev);
 void i40e_set_default_ptype_table(struct rte_eth_dev *dev);
 void i40e_set_default_pctype_table(struct rte_eth_dev *dev);
diff --git a/drivers/net/i40e/i40e_rxtx_vec_altivec.c b/drivers/net/i40e/i40e_rxtx_vec_altivec.c
index aed78e4a1a..2ab09eb167 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_altivec.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_altivec.c
@@ -551,7 +551,7 @@ uint16_t
 i40e_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
 			  uint16_t nb_pkts)
 {
-	struct i40e_tx_queue *txq = (struct i40e_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 	volatile struct i40e_tx_desc *txdp;
 	struct ieth_tx_entry *txep;
 	uint16_t n, nb_commit, tx_id;
@@ -625,7 +625,7 @@ i40e_rxq_vec_setup(struct i40e_rx_queue *rxq)
 }
 
 int __rte_cold
-i40e_txq_vec_setup(struct i40e_tx_queue __rte_unused * txq)
+i40e_txq_vec_setup(struct ieth_tx_queue __rte_unused * txq)
 {
 	return 0;
 }
diff --git a/drivers/net/i40e/i40e_rxtx_vec_avx2.c b/drivers/net/i40e/i40e_rxtx_vec_avx2.c
index 6b7c96c683..e32fa160bf 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_avx2.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_avx2.c
@@ -743,7 +743,7 @@ static inline uint16_t
 i40e_xmit_fixed_burst_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
 			  uint16_t nb_pkts)
 {
-	struct i40e_tx_queue *txq = (struct i40e_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 	volatile struct i40e_tx_desc *txdp;
 	struct ieth_tx_entry *txep;
 	uint16_t n, nb_commit, tx_id;
@@ -808,7 +808,7 @@ i40e_xmit_pkts_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
 		   uint16_t nb_pkts)
 {
 	uint16_t nb_tx = 0;
-	struct i40e_tx_queue *txq = (struct i40e_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 
 	while (nb_pkts) {
 		uint16_t ret, num;
diff --git a/drivers/net/i40e/i40e_rxtx_vec_avx512.c b/drivers/net/i40e/i40e_rxtx_vec_avx512.c
index 33c1655c9a..b4b38d7db6 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_avx512.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_avx512.c
@@ -755,7 +755,7 @@ i40e_recv_scattered_pkts_vec_avx512(void *rx_queue,
 }
 
 static __rte_always_inline int
-i40e_tx_free_bufs_avx512(struct i40e_tx_queue *txq)
+i40e_tx_free_bufs_avx512(struct ieth_tx_queue *txq)
 {
 	struct ieth_vec_tx_entry *txep;
 	uint32_t n;
@@ -933,7 +933,7 @@ static inline uint16_t
 i40e_xmit_fixed_burst_vec_avx512(void *tx_queue, struct rte_mbuf **tx_pkts,
 				 uint16_t nb_pkts)
 {
-	struct i40e_tx_queue *txq = (struct i40e_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 	volatile struct i40e_tx_desc *txdp;
 	struct ieth_vec_tx_entry *txep;
 	uint16_t n, nb_commit, tx_id;
@@ -999,7 +999,7 @@ i40e_xmit_pkts_vec_avx512(void *tx_queue, struct rte_mbuf **tx_pkts,
 			  uint16_t nb_pkts)
 {
 	uint16_t nb_tx = 0;
-	struct i40e_tx_queue *txq = (struct i40e_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 
 	while (nb_pkts) {
 		uint16_t ret, num;
diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h b/drivers/net/i40e/i40e_rxtx_vec_common.h
index a70d9fce78..66e38994a5 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_common.h
+++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
@@ -17,7 +17,7 @@
 #endif
 
 static __rte_always_inline int
-i40e_tx_free_bufs(struct i40e_tx_queue *txq)
+i40e_tx_free_bufs(struct ieth_tx_queue *txq)
 {
 	struct ieth_tx_entry *txep;
 	uint32_t n;
diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c
index 23aaf3a739..b30da1a78c 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
@@ -679,7 +679,7 @@ uint16_t
 i40e_xmit_fixed_burst_vec(void *__rte_restrict tx_queue,
 	struct rte_mbuf **__rte_restrict tx_pkts, uint16_t nb_pkts)
 {
-	struct i40e_tx_queue *txq = (struct i40e_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 	volatile struct i40e_tx_desc *txdp;
 	struct ieth_tx_entry *txep;
 	uint16_t n, nb_commit, tx_id;
@@ -753,7 +753,7 @@ i40e_rxq_vec_setup(struct i40e_rx_queue *rxq)
 }
 
 int __rte_cold
-i40e_txq_vec_setup(struct i40e_tx_queue __rte_unused *txq)
+i40e_txq_vec_setup(struct ieth_tx_queue __rte_unused *txq)
 {
 	return 0;
 }
diff --git a/drivers/net/i40e/i40e_rxtx_vec_sse.c b/drivers/net/i40e/i40e_rxtx_vec_sse.c
index 499b6e6ff7..5107cb9f01 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_sse.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_sse.c
@@ -698,7 +698,7 @@ uint16_t
 i40e_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
 			  uint16_t nb_pkts)
 {
-	struct i40e_tx_queue *txq = (struct i40e_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 	volatile struct i40e_tx_desc *txdp;
 	struct ieth_tx_entry *txep;
 	uint16_t n, nb_commit, tx_id;
@@ -771,7 +771,7 @@ i40e_rxq_vec_setup(struct i40e_rx_queue *rxq)
 }
 
 int __rte_cold
-i40e_txq_vec_setup(struct i40e_tx_queue __rte_unused *txq)
+i40e_txq_vec_setup(struct ieth_tx_queue __rte_unused *txq)
 {
 	return 0;
 }
diff --git a/drivers/net/ice/ice_dcf.c b/drivers/net/ice/ice_dcf.c
index 204d4eadbb..0b262d34c6 100644
--- a/drivers/net/ice/ice_dcf.c
+++ b/drivers/net/ice/ice_dcf.c
@@ -1177,8 +1177,8 @@ ice_dcf_configure_queues(struct ice_dcf_hw *hw)
 {
 	struct ice_rx_queue **rxq =
 		(struct ice_rx_queue **)hw->eth_dev->data->rx_queues;
-	struct ice_tx_queue **txq =
-		(struct ice_tx_queue **)hw->eth_dev->data->tx_queues;
+	struct ieth_tx_queue **txq =
+		(struct ieth_tx_queue **)hw->eth_dev->data->tx_queues;
 	struct virtchnl_vsi_queue_config_info *vc_config;
 	struct virtchnl_queue_pair_info *vc_qp;
 	struct dcf_virtchnl_cmd args;
diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c
index 9485494f86..b5bab35d77 100644
--- a/drivers/net/ice/ice_dcf_ethdev.c
+++ b/drivers/net/ice/ice_dcf_ethdev.c
@@ -387,7 +387,7 @@ reset_rx_queue(struct ice_rx_queue *rxq)
 }
 
 static inline void
-reset_tx_queue(struct ice_tx_queue *txq)
+reset_tx_queue(struct ieth_tx_queue *txq)
 {
 	struct ieth_tx_entry *txe;
 	uint32_t i, size;
@@ -454,7 +454,7 @@ ice_dcf_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 {
 	struct ice_dcf_adapter *ad = dev->data->dev_private;
 	struct iavf_hw *hw = &ad->real_hw.avf;
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	int err = 0;
 
 	if (tx_queue_id >= dev->data->nb_tx_queues)
@@ -486,7 +486,7 @@ ice_dcf_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 {
 	struct ice_dcf_adapter *ad = dev->data->dev_private;
 	struct ice_dcf_hw *hw = &ad->real_hw;
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	int err;
 
 	if (tx_queue_id >= dev->data->nb_tx_queues)
@@ -511,7 +511,7 @@ static int
 ice_dcf_start_queues(struct rte_eth_dev *dev)
 {
 	struct ice_rx_queue *rxq;
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	int nb_rxq = 0;
 	int nb_txq, i;
 
@@ -638,7 +638,7 @@ ice_dcf_stop_queues(struct rte_eth_dev *dev)
 	struct ice_dcf_adapter *ad = dev->data->dev_private;
 	struct ice_dcf_hw *hw = &ad->real_hw;
 	struct ice_rx_queue *rxq;
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	int ret, i;
 
 	/* Stop All queues */
diff --git a/drivers/net/ice/ice_diagnose.c b/drivers/net/ice/ice_diagnose.c
index 5bec9d00ad..2d0e8e66ce 100644
--- a/drivers/net/ice/ice_diagnose.c
+++ b/drivers/net/ice/ice_diagnose.c
@@ -605,7 +605,7 @@ void print_node(const struct rte_eth_dev_data *ethdata,
 			get_elem_type(data->data.elem_type));
 	if (data->data.elem_type == ICE_AQC_ELEM_TYPE_LEAF) {
 		for (uint16_t i = 0; i < ethdata->nb_tx_queues; i++) {
-			struct ice_tx_queue *q = ethdata->tx_queues[i];
+			struct ieth_tx_queue *q = ethdata->tx_queues[i];
 			if (q->q_teid == data->node_teid) {
 				fprintf(stream, "\t\t\t\t<tr><td>TXQ</td><td>%u</td></tr>\n", i);
 				break;
diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 93a6308a86..378979b858 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -6448,7 +6448,7 @@ ice_update_mbuf_stats(struct rte_eth_dev *ethdev,
 		struct ice_mbuf_stats *mbuf_stats)
 {
 	uint16_t idx;
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 
 	for (idx = 0; idx < ethdev->data->nb_tx_queues; idx++) {
 		txq = ethdev->data->tx_queues[idx];
diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
index a5b27fabd2..b5d39b3fc6 100644
--- a/drivers/net/ice/ice_ethdev.h
+++ b/drivers/net/ice/ice_ethdev.h
@@ -258,7 +258,7 @@ struct ice_vsi_list {
 };
 
 struct ice_rx_queue;
-struct ice_tx_queue;
+struct ieth_tx_queue;
 
 /**
  * Structure that defines a VSI, associated with a adapter.
@@ -408,7 +408,7 @@ struct ice_fdir_counter_pool_container {
  */
 struct ice_fdir_info {
 	struct ice_vsi *fdir_vsi;     /* pointer to fdir VSI structure */
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	struct ice_rx_queue *rxq;
 	void *prg_pkt;                 /* memory for fdir program packet */
 	uint64_t dma_addr;             /* physic address of packet memory*/
diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
index df9b09ae0c..20ebda68c7 100644
--- a/drivers/net/ice/ice_rxtx.c
+++ b/drivers/net/ice/ice_rxtx.c
@@ -743,7 +743,7 @@ ice_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id)
 int
 ice_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 {
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	int err;
 	struct ice_vsi *vsi;
 	struct ice_hw *hw;
@@ -944,7 +944,7 @@ int
 ice_fdir_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 {
 	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	int err;
 	struct ice_vsi *vsi;
 	struct ice_hw *hw;
@@ -1008,7 +1008,7 @@ ice_fdir_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 
 /* Free all mbufs for descriptors in tx queue */
 static void
-_ice_tx_queue_release_mbufs(struct ice_tx_queue *txq)
+_ice_tx_queue_release_mbufs(struct ieth_tx_queue *txq)
 {
 	uint16_t i;
 
@@ -1026,7 +1026,7 @@ _ice_tx_queue_release_mbufs(struct ice_tx_queue *txq)
 }
 
 static void
-ice_reset_tx_queue(struct ice_tx_queue *txq)
+ice_reset_tx_queue(struct ieth_tx_queue *txq)
 {
 	struct ieth_tx_entry *txe;
 	uint16_t i, prev, size;
@@ -1066,7 +1066,7 @@ ice_reset_tx_queue(struct ice_tx_queue *txq)
 int
 ice_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 {
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	struct ice_hw *hw = ICE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
 	struct ice_vsi *vsi = pf->main_vsi;
@@ -1134,7 +1134,7 @@ ice_fdir_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id)
 int
 ice_fdir_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id)
 {
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	struct ice_hw *hw = ICE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
 	struct ice_vsi *vsi = pf->main_vsi;
@@ -1354,7 +1354,7 @@ ice_tx_queue_setup(struct rte_eth_dev *dev,
 {
 	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
 	struct ice_vsi *vsi = pf->main_vsi;
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	const struct rte_memzone *tz;
 	uint32_t ring_size;
 	uint16_t tx_rs_thresh, tx_free_thresh;
@@ -1467,7 +1467,7 @@ ice_tx_queue_setup(struct rte_eth_dev *dev,
 
 	/* Allocate the TX queue data structure. */
 	txq = rte_zmalloc_socket(NULL,
-				 sizeof(struct ice_tx_queue),
+				 sizeof(struct ieth_tx_queue),
 				 RTE_CACHE_LINE_SIZE,
 				 socket_id);
 	if (!txq) {
@@ -1542,7 +1542,7 @@ ice_dev_tx_queue_release(struct rte_eth_dev *dev, uint16_t qid)
 void
 ice_tx_queue_release(void *txq)
 {
-	struct ice_tx_queue *q = (struct ice_tx_queue *)txq;
+	struct ieth_tx_queue *q = (struct ieth_tx_queue *)txq;
 
 	if (!q) {
 		PMD_DRV_LOG(DEBUG, "Pointer to TX queue is NULL");
@@ -1577,7 +1577,7 @@ void
 ice_txq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,
 		 struct rte_eth_txq_info *qinfo)
 {
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 
 	txq = dev->data->tx_queues[queue_id];
 
@@ -2354,7 +2354,7 @@ ice_rx_descriptor_status(void *rx_queue, uint16_t offset)
 int
 ice_tx_descriptor_status(void *tx_queue, uint16_t offset)
 {
-	struct ice_tx_queue *txq = tx_queue;
+	struct ieth_tx_queue *txq = tx_queue;
 	volatile uint64_t *status;
 	uint64_t mask, expect;
 	uint32_t desc;
@@ -2412,7 +2412,7 @@ ice_free_queues(struct rte_eth_dev *dev)
 int
 ice_fdir_setup_tx_resources(struct ice_pf *pf)
 {
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	const struct rte_memzone *tz = NULL;
 	uint32_t ring_size;
 	struct rte_eth_dev *dev;
@@ -2426,7 +2426,7 @@ ice_fdir_setup_tx_resources(struct ice_pf *pf)
 
 	/* Allocate the TX queue data structure. */
 	txq = rte_zmalloc_socket("ice fdir tx queue",
-				 sizeof(struct ice_tx_queue),
+				 sizeof(struct ieth_tx_queue),
 				 RTE_CACHE_LINE_SIZE,
 				 SOCKET_ID_ANY);
 	if (!txq) {
@@ -2835,7 +2835,7 @@ ice_txd_enable_checksum(uint64_t ol_flags,
 }
 
 static inline int
-ice_xmit_cleanup(struct ice_tx_queue *txq)
+ice_xmit_cleanup(struct ieth_tx_queue *txq)
 {
 	struct ieth_tx_entry *sw_ring = txq->sw_ring;
 	volatile struct ice_tx_desc *txd = txq->ice_tx_ring;
@@ -2958,7 +2958,7 @@ ice_calc_pkt_desc(struct rte_mbuf *tx_pkt)
 uint16_t
 ice_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 {
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	volatile struct ice_tx_desc *ice_tx_ring;
 	volatile struct ice_tx_desc *txd;
 	struct ieth_tx_entry *sw_ring;
@@ -3182,7 +3182,7 @@ ice_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 }
 
 static __rte_always_inline int
-ice_tx_free_bufs(struct ice_tx_queue *txq)
+ice_tx_free_bufs(struct ieth_tx_queue *txq)
 {
 	struct ieth_tx_entry *txep;
 	uint16_t i;
@@ -3218,7 +3218,7 @@ ice_tx_free_bufs(struct ice_tx_queue *txq)
 }
 
 static int
-ice_tx_done_cleanup_full(struct ice_tx_queue *txq,
+ice_tx_done_cleanup_full(struct ieth_tx_queue *txq,
 			uint32_t free_cnt)
 {
 	struct ieth_tx_entry *swr_ring = txq->sw_ring;
@@ -3278,7 +3278,7 @@ ice_tx_done_cleanup_full(struct ice_tx_queue *txq,
 
 #ifdef RTE_ARCH_X86
 static int
-ice_tx_done_cleanup_vec(struct ice_tx_queue *txq __rte_unused,
+ice_tx_done_cleanup_vec(struct ieth_tx_queue *txq __rte_unused,
 			uint32_t free_cnt __rte_unused)
 {
 	return -ENOTSUP;
@@ -3286,7 +3286,7 @@ ice_tx_done_cleanup_vec(struct ice_tx_queue *txq __rte_unused,
 #endif
 
 static int
-ice_tx_done_cleanup_simple(struct ice_tx_queue *txq,
+ice_tx_done_cleanup_simple(struct ieth_tx_queue *txq,
 			uint32_t free_cnt)
 {
 	int i, n, cnt;
@@ -3312,7 +3312,7 @@ ice_tx_done_cleanup_simple(struct ice_tx_queue *txq,
 int
 ice_tx_done_cleanup(void *txq, uint32_t free_cnt)
 {
-	struct ice_tx_queue *q = (struct ice_tx_queue *)txq;
+	struct ieth_tx_queue *q = (struct ieth_tx_queue *)txq;
 	struct rte_eth_dev *dev = &rte_eth_devices[q->port_id];
 	struct ice_adapter *ad =
 		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
@@ -3357,7 +3357,7 @@ tx1(volatile struct ice_tx_desc *txdp, struct rte_mbuf **pkts)
 }
 
 static inline void
-ice_tx_fill_hw_ring(struct ice_tx_queue *txq, struct rte_mbuf **pkts,
+ice_tx_fill_hw_ring(struct ieth_tx_queue *txq, struct rte_mbuf **pkts,
 		    uint16_t nb_pkts)
 {
 	volatile struct ice_tx_desc *txdp = &txq->ice_tx_ring[txq->tx_tail];
@@ -3389,7 +3389,7 @@ ice_tx_fill_hw_ring(struct ice_tx_queue *txq, struct rte_mbuf **pkts,
 }
 
 static inline uint16_t
-tx_xmit_pkts(struct ice_tx_queue *txq,
+tx_xmit_pkts(struct ieth_tx_queue *txq,
 	     struct rte_mbuf **tx_pkts,
 	     uint16_t nb_pkts)
 {
@@ -3452,14 +3452,14 @@ ice_xmit_pkts_simple(void *tx_queue,
 	uint16_t nb_tx = 0;
 
 	if (likely(nb_pkts <= ICE_TX_MAX_BURST))
-		return tx_xmit_pkts((struct ice_tx_queue *)tx_queue,
+		return tx_xmit_pkts((struct ieth_tx_queue *)tx_queue,
 				    tx_pkts, nb_pkts);
 
 	while (nb_pkts) {
 		uint16_t ret, num = (uint16_t)RTE_MIN(nb_pkts,
 						      ICE_TX_MAX_BURST);
 
-		ret = tx_xmit_pkts((struct ice_tx_queue *)tx_queue,
+		ret = tx_xmit_pkts((struct ieth_tx_queue *)tx_queue,
 				   &tx_pkts[nb_tx], num);
 		nb_tx = (uint16_t)(nb_tx + ret);
 		nb_pkts = (uint16_t)(nb_pkts - ret);
@@ -3667,7 +3667,7 @@ ice_rx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id,
 }
 
 void __rte_cold
-ice_set_tx_function_flag(struct rte_eth_dev *dev, struct ice_tx_queue *txq)
+ice_set_tx_function_flag(struct rte_eth_dev *dev, struct ieth_tx_queue *txq)
 {
 	struct ice_adapter *ad =
 		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
@@ -3716,7 +3716,7 @@ ice_check_empty_mbuf(struct rte_mbuf *tx_pkt)
 static uint16_t
 ice_xmit_pkts_check(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 {
-	struct ice_tx_queue *txq = tx_queue;
+	struct ieth_tx_queue *txq = tx_queue;
 	uint16_t idx;
 	struct rte_mbuf *mb;
 	bool pkt_error = false;
@@ -3778,7 +3778,7 @@ ice_xmit_pkts_check(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 					pkt_error = true;
 					break;
 				}
-				if (mb->nb_segs > ((struct ice_tx_queue *)tx_queue)->nb_tx_desc) {
+				if (mb->nb_segs > ((struct ieth_tx_queue *)tx_queue)->nb_tx_desc) {
 					PMD_TX_LOG(ERR, "INVALID mbuf: nb_segs out of ring length");
 					pkt_error = true;
 					break;
@@ -3839,7 +3839,7 @@ ice_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 		    (m->tso_segsz < ICE_MIN_TSO_MSS ||
 		     m->tso_segsz > ICE_MAX_TSO_MSS ||
 		     m->nb_segs >
-			((struct ice_tx_queue *)tx_queue)->nb_tx_desc ||
+			((struct ieth_tx_queue *)tx_queue)->nb_tx_desc ||
 		     m->pkt_len > ICE_MAX_TSO_FRAME_SIZE)) {
 			/**
 			 * MSS outside the range are considered malicious
@@ -3881,7 +3881,7 @@ ice_set_tx_function(struct rte_eth_dev *dev)
 		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
 	int mbuf_check = ad->devargs.mbuf_check;
 #ifdef RTE_ARCH_X86
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	int i;
 	int tx_check_ret = -1;
 
@@ -4693,7 +4693,7 @@ ice_check_fdir_programming_status(struct ice_rx_queue *rxq)
 int
 ice_fdir_programming(struct ice_pf *pf, struct ice_fltr_desc *fdir_desc)
 {
-	struct ice_tx_queue *txq = pf->fdir.txq;
+	struct ieth_tx_queue *txq = pf->fdir.txq;
 	struct ice_rx_queue *rxq = pf->fdir.rxq;
 	volatile struct ice_fltr_desc *fdirdp;
 	volatile struct ice_tx_desc *txdp;
diff --git a/drivers/net/ice/ice_rxtx.h b/drivers/net/ice/ice_rxtx.h
index 91f8ed2036..9c8022d1be 100644
--- a/drivers/net/ice/ice_rxtx.h
+++ b/drivers/net/ice/ice_rxtx.h
@@ -79,7 +79,6 @@ extern int ice_timestamp_dynfield_offset;
 #define ICE_TX_MTU_SEG_MAX	8
 
 typedef void (*ice_rx_release_mbufs_t)(struct ice_rx_queue *rxq);
-typedef void (*ice_tx_release_mbufs_t)(struct ice_tx_queue *txq);
 typedef void (*ice_rxd_to_pkt_fields_t)(struct ice_rx_queue *rxq,
 					struct rte_mbuf *mb,
 					volatile union ice_rx_flex_desc *rxdp);
@@ -145,42 +144,6 @@ struct ice_rx_queue {
 	bool ts_enable; /* if rxq timestamp is enabled */
 };
 
-struct ice_tx_queue {
-	uint16_t nb_tx_desc; /* number of TX descriptors */
-	rte_iova_t tx_ring_dma; /* TX ring DMA address */
-	volatile struct ice_tx_desc *ice_tx_ring; /* TX ring virtual address */
-	struct ieth_tx_entry *sw_ring; /* virtual address of SW ring */
-	uint16_t tx_tail; /* current value of tail register */
-	volatile uint8_t *qtx_tail; /* register address of tail */
-	uint16_t nb_tx_used; /* number of TX desc used since RS bit set */
-	/* index to last TX descriptor to have been cleaned */
-	uint16_t last_desc_cleaned;
-	/* Total number of TX descriptors ready to be allocated. */
-	uint16_t nb_tx_free;
-	/* Start freeing TX buffers if there are less free descriptors than
-	 * this value.
-	 */
-	uint16_t tx_free_thresh;
-	/* Number of TX descriptors to use before RS bit is set. */
-	uint16_t tx_rs_thresh;
-	uint8_t pthresh; /**< Prefetch threshold register. */
-	uint8_t hthresh; /**< Host threshold register. */
-	uint8_t wthresh; /**< Write-back threshold reg. */
-	uint16_t port_id; /* Device port identifier. */
-	uint16_t queue_id; /* TX queue index. */
-	uint32_t q_teid; /* TX schedule node id. */
-	uint16_t reg_idx;
-	uint64_t offloads;
-	struct ice_vsi *ice_vsi; /* the VSI this queue belongs to */
-	uint16_t tx_next_dd;
-	uint16_t tx_next_rs;
-	uint64_t mbuf_errors;
-	bool tx_deferred_start; /* don't start this queue in dev start */
-	bool q_set; /* indicate if tx queue has been configured */
-	ice_tx_release_mbufs_t tx_rel_mbufs;
-	const struct rte_memzone *mz;
-};
-
 /* Offload features */
 union ice_tx_offload {
 	uint64_t data;
@@ -268,7 +231,7 @@ void ice_set_rx_function(struct rte_eth_dev *dev);
 uint16_t ice_prep_pkts(__rte_unused void *tx_queue, struct rte_mbuf **tx_pkts,
 		       uint16_t nb_pkts);
 void ice_set_tx_function_flag(struct rte_eth_dev *dev,
-			      struct ice_tx_queue *txq);
+			      struct ieth_tx_queue *txq);
 void ice_set_tx_function(struct rte_eth_dev *dev);
 uint32_t ice_rx_queue_count(void *rx_queue);
 void ice_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,
@@ -290,7 +253,7 @@ void ice_select_rxd_to_pkt_fields_handler(struct ice_rx_queue *rxq,
 int ice_rx_vec_dev_check(struct rte_eth_dev *dev);
 int ice_tx_vec_dev_check(struct rte_eth_dev *dev);
 int ice_rxq_vec_setup(struct ice_rx_queue *rxq);
-int ice_txq_vec_setup(struct ice_tx_queue *txq);
+int ice_txq_vec_setup(struct ieth_tx_queue *txq);
 uint16_t ice_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
 			   uint16_t nb_pkts);
 uint16_t ice_recv_scattered_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
diff --git a/drivers/net/ice/ice_rxtx_vec_avx2.c b/drivers/net/ice/ice_rxtx_vec_avx2.c
index d4c76686f7..370871c320 100644
--- a/drivers/net/ice/ice_rxtx_vec_avx2.c
+++ b/drivers/net/ice/ice_rxtx_vec_avx2.c
@@ -856,7 +856,7 @@ static __rte_always_inline uint16_t
 ice_xmit_fixed_burst_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
 			      uint16_t nb_pkts, bool offload)
 {
-	struct ice_tx_queue *txq = (struct ice_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 	volatile struct ice_tx_desc *txdp;
 	struct ieth_tx_entry *txep;
 	uint16_t n, nb_commit, tx_id;
@@ -924,7 +924,7 @@ ice_xmit_pkts_vec_avx2_common(void *tx_queue, struct rte_mbuf **tx_pkts,
 			      uint16_t nb_pkts, bool offload)
 {
 	uint16_t nb_tx = 0;
-	struct ice_tx_queue *txq = (struct ice_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 
 	while (nb_pkts) {
 		uint16_t ret, num;
diff --git a/drivers/net/ice/ice_rxtx_vec_avx512.c b/drivers/net/ice/ice_rxtx_vec_avx512.c
index 1126a30bf8..4d95561f8c 100644
--- a/drivers/net/ice/ice_rxtx_vec_avx512.c
+++ b/drivers/net/ice/ice_rxtx_vec_avx512.c
@@ -860,7 +860,7 @@ ice_recv_scattered_pkts_vec_avx512_offload(void *rx_queue,
 }
 
 static __rte_always_inline int
-ice_tx_free_bufs_avx512(struct ice_tx_queue *txq)
+ice_tx_free_bufs_avx512(struct ieth_tx_queue *txq)
 {
 	struct ieth_vec_tx_entry *txep;
 	uint32_t n;
@@ -1053,7 +1053,7 @@ static __rte_always_inline uint16_t
 ice_xmit_fixed_burst_vec_avx512(void *tx_queue, struct rte_mbuf **tx_pkts,
 				uint16_t nb_pkts, bool do_offload)
 {
-	struct ice_tx_queue *txq = (struct ice_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 	volatile struct ice_tx_desc *txdp;
 	struct ieth_vec_tx_entry *txep;
 	uint16_t n, nb_commit, tx_id;
@@ -1122,7 +1122,7 @@ ice_xmit_pkts_vec_avx512(void *tx_queue, struct rte_mbuf **tx_pkts,
 			 uint16_t nb_pkts)
 {
 	uint16_t nb_tx = 0;
-	struct ice_tx_queue *txq = (struct ice_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 
 	while (nb_pkts) {
 		uint16_t ret, num;
@@ -1144,7 +1144,7 @@ ice_xmit_pkts_vec_avx512_offload(void *tx_queue, struct rte_mbuf **tx_pkts,
 				 uint16_t nb_pkts)
 {
 	uint16_t nb_tx = 0;
-	struct ice_tx_queue *txq = (struct ice_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 
 	while (nb_pkts) {
 		uint16_t ret, num;
diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h
index b2e3c0f6b7..b8e69f3c12 100644
--- a/drivers/net/ice/ice_rxtx_vec_common.h
+++ b/drivers/net/ice/ice_rxtx_vec_common.h
@@ -13,7 +13,7 @@
 #endif
 
 static __rte_always_inline int
-ice_tx_free_bufs_vec(struct ice_tx_queue *txq)
+ice_tx_free_bufs_vec(struct ieth_tx_queue *txq)
 {
 	struct ieth_tx_entry *txep;
 	uint32_t n;
@@ -105,7 +105,7 @@ _ice_rx_queue_release_mbufs_vec(struct ice_rx_queue *rxq)
 }
 
 static inline void
-_ice_tx_queue_release_mbufs_vec(struct ice_tx_queue *txq)
+_ice_tx_queue_release_mbufs_vec(struct ieth_tx_queue *txq)
 {
 	uint16_t i;
 
@@ -231,7 +231,7 @@ ice_rx_vec_queue_default(struct ice_rx_queue *rxq)
 }
 
 static inline int
-ice_tx_vec_queue_default(struct ice_tx_queue *txq)
+ice_tx_vec_queue_default(struct ieth_tx_queue *txq)
 {
 	if (!txq)
 		return -1;
@@ -273,7 +273,7 @@ static inline int
 ice_tx_vec_dev_check_default(struct rte_eth_dev *dev)
 {
 	int i;
-	struct ice_tx_queue *txq;
+	struct ieth_tx_queue *txq;
 	int ret = 0;
 	int result = 0;
 
diff --git a/drivers/net/ice/ice_rxtx_vec_sse.c b/drivers/net/ice/ice_rxtx_vec_sse.c
index 5db66f3c6a..b951d85cfd 100644
--- a/drivers/net/ice/ice_rxtx_vec_sse.c
+++ b/drivers/net/ice/ice_rxtx_vec_sse.c
@@ -697,7 +697,7 @@ static uint16_t
 ice_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
 			 uint16_t nb_pkts)
 {
-	struct ice_tx_queue *txq = (struct ice_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 	volatile struct ice_tx_desc *txdp;
 	struct ieth_tx_entry *txep;
 	uint16_t n, nb_commit, tx_id;
@@ -766,7 +766,7 @@ ice_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
 		  uint16_t nb_pkts)
 {
 	uint16_t nb_tx = 0;
-	struct ice_tx_queue *txq = (struct ice_tx_queue *)tx_queue;
+	struct ieth_tx_queue *txq = (struct ieth_tx_queue *)tx_queue;
 
 	while (nb_pkts) {
 		uint16_t ret, num;
@@ -793,7 +793,7 @@ ice_rxq_vec_setup(struct ice_rx_queue *rxq)
 }
 
 int __rte_cold
-ice_txq_vec_setup(struct ice_tx_queue __rte_unused *txq)
+ice_txq_vec_setup(struct ieth_tx_queue __rte_unused *txq)
 {
 	if (!txq)
 		return -1;
-- 
2.43.0


  parent reply	other threads:[~2024-11-22 12:55 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-22 12:53 [RFC PATCH 00/21] Reduce code duplication across Intel NIC drivers Bruce Richardson
2024-11-22 12:53 ` [RFC PATCH 01/21] common/intel_eth: add pkt reassembly fn for intel drivers Bruce Richardson
2024-11-22 12:53 ` [RFC PATCH 02/21] common/intel_eth: provide common Tx entry structures Bruce Richardson
2024-11-22 12:53 ` [RFC PATCH 03/21] common/intel_eth: add Tx mbuf ring replenish fn Bruce Richardson
2024-11-22 12:53 ` [RFC PATCH 04/21] drivers/net: align Tx queue struct field names Bruce Richardson
2024-11-22 12:53 ` [RFC PATCH 05/21] drivers/net: add prefix for driver-specific structs Bruce Richardson
2024-11-22 12:53 ` Bruce Richardson [this message]
2024-11-22 12:54 ` [RFC PATCH 07/21] net/iavf: use common Tx queue structure Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 08/21] net/ixgbe: convert Tx queue context cache field to ptr Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 09/21] net/ixgbe: use common Tx queue structure Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 10/21] common/intel_eth: pack " Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 11/21] common/intel_eth: add post-Tx buffer free function Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 12/21] common/intel_eth: add Tx buffer free fn for AVX-512 Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 13/21] net/iavf: use common Tx " Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 14/21] net/ice: move Tx queue mbuf cleanup fn to common Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 15/21] net/i40e: use common Tx queue mbuf cleanup fn Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 16/21] net/ixgbe: " Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 17/21] net/iavf: " Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 18/21] net/ice: use vector SW ring for all vector paths Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 19/21] net/i40e: " Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 20/21] net/iavf: " Bruce Richardson
2024-11-22 12:54 ` [RFC PATCH 21/21] net/ixgbe: use common Tx backlog entry fn Bruce Richardson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241122125418.2857301-7-bruce.richardson@intel.com \
    --to=bruce.richardson@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    --cc=drc@linux.ibm.com \
    --cc=ian.stokes@intel.com \
    --cc=konstantin.v.ananyev@yandex.ru \
    --cc=wathsala.vithanage@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).