From: Bruce Richardson <bruce.richardson@intel.com>
To: dev@dpdk.org
Cc: mb@smartsharesystems.com, Bruce Richardson <bruce.richardson@intel.com>
Subject: [PATCH 2/2] net/intel: avoid accessing mempool directly on free
Date: Fri, 22 Aug 2025 17:06:56 +0000 [thread overview]
Message-ID: <20250822170656.454571-3-bruce.richardson@intel.com> (raw)
In-Reply-To: <20250822170656.454571-1-bruce.richardson@intel.com>
Rather than calling the mempool function rte_pktmbuf_put_bulk directly
in drivers, switch to using the rte_mbuf_raw_free_bulk() function which
properly supports debug flags and checks, when they are enabled.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/intel/common/tx.h | 4 ++--
drivers/net/intel/fm10k/fm10k_ethdev.c | 3 +--
drivers/net/intel/fm10k/fm10k_rxtx.c | 5 ++---
drivers/net/intel/fm10k/fm10k_rxtx_vec.c | 5 ++---
drivers/net/intel/i40e/i40e_rxtx.c | 5 ++---
drivers/net/intel/ice/ice_rxtx.c | 2 +-
drivers/net/intel/ixgbe/ixgbe_rxtx.c | 5 ++---
drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h | 5 ++---
8 files changed, 14 insertions(+), 20 deletions(-)
diff --git a/drivers/net/intel/common/tx.h b/drivers/net/intel/common/tx.h
index 7dc84da170..27a3dd388c 100644
--- a/drivers/net/intel/common/tx.h
+++ b/drivers/net/intel/common/tx.h
@@ -203,13 +203,13 @@ ci_tx_free_bufs_vec(struct ci_tx_queue *txq, ci_desc_done_fn desc_done, bool ctx
if (likely(m->pool == free[0]->pool)) {
free[nb_free++] = m;
} else {
- rte_mempool_put_bulk(free[0]->pool, (void *)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
free[0] = m;
nb_free = 1;
}
}
}
- rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
} else {
for (uint32_t i = 1; i < n; i++) {
m = rte_pktmbuf_prefree_seg(txep[i].mbuf);
diff --git a/drivers/net/intel/fm10k/fm10k_ethdev.c b/drivers/net/intel/fm10k/fm10k_ethdev.c
index 216165a9bd..57f09be88e 100644
--- a/drivers/net/intel/fm10k/fm10k_ethdev.c
+++ b/drivers/net/intel/fm10k/fm10k_ethdev.c
@@ -212,8 +212,7 @@ rx_queue_reset(struct fm10k_rx_queue *q)
for (i = 0; i < q->nb_desc; ++i) {
fm10k_pktmbuf_reset(q->sw_ring[i], q->port_id);
if (!fm10k_addr_alignment_valid(q->sw_ring[i])) {
- rte_mempool_put_bulk(q->mp, (void **)q->sw_ring,
- q->nb_desc);
+ rte_mbuf_raw_free_bulk(q->mp, q->sw_ring, q->nb_desc);
return -EINVAL;
}
dma_addr = MBUF_DMA_ADDR_DEFAULT(q->sw_ring[i]);
diff --git a/drivers/net/intel/fm10k/fm10k_rxtx.c b/drivers/net/intel/fm10k/fm10k_rxtx.c
index 0557ee88df..a6ca38a6da 100644
--- a/drivers/net/intel/fm10k/fm10k_rxtx.c
+++ b/drivers/net/intel/fm10k/fm10k_rxtx.c
@@ -495,15 +495,14 @@ static inline void tx_free_bulk_mbuf(struct rte_mbuf **txep, int num)
if (likely(m->pool == free[0]->pool))
free[nb_free++] = m;
else {
- rte_mempool_put_bulk(free[0]->pool,
- (void *)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
free[0] = m;
nb_free = 1;
}
}
txep[i] = NULL;
}
- rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
} else {
for (i = 1; i < num; i++) {
m = rte_pktmbuf_prefree_seg(txep[i]);
diff --git a/drivers/net/intel/fm10k/fm10k_rxtx_vec.c b/drivers/net/intel/fm10k/fm10k_rxtx_vec.c
index 1269a34e76..0eada7275e 100644
--- a/drivers/net/intel/fm10k/fm10k_rxtx_vec.c
+++ b/drivers/net/intel/fm10k/fm10k_rxtx_vec.c
@@ -775,14 +775,13 @@ fm10k_tx_free_bufs(struct fm10k_tx_queue *txq)
if (likely(m->pool == free[0]->pool))
free[nb_free++] = m;
else {
- rte_mempool_put_bulk(free[0]->pool,
- (void *)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
free[0] = m;
nb_free = 1;
}
}
}
- rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
} else {
for (i = 1; i < n; i++) {
m = rte_pktmbuf_prefree_seg(txep[i]);
diff --git a/drivers/net/intel/i40e/i40e_rxtx.c b/drivers/net/intel/i40e/i40e_rxtx.c
index a3ca8254ff..ca439ebd8a 100644
--- a/drivers/net/intel/i40e/i40e_rxtx.c
+++ b/drivers/net/intel/i40e/i40e_rxtx.c
@@ -1355,8 +1355,7 @@ i40e_tx_free_bufs(struct ci_tx_queue *txq)
free[i] = txep->mbuf;
txep->mbuf = NULL;
}
- rte_mempool_put_bulk(free[0]->pool, (void **)free,
- I40E_TX_MAX_FREE_BUF_SZ);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, I40E_TX_MAX_FREE_BUF_SZ);
}
}
@@ -1365,7 +1364,7 @@ i40e_tx_free_bufs(struct ci_tx_queue *txq)
free[i] = txep->mbuf;
txep->mbuf = NULL;
}
- rte_mempool_put_bulk(free[0]->pool, (void **)free, m);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, m);
}
} else {
for (i = 0; i < txq->tx_rs_thresh; ++i, ++txep) {
diff --git a/drivers/net/intel/ice/ice_rxtx.c b/drivers/net/intel/ice/ice_rxtx.c
index 0294794bed..5889d51618 100644
--- a/drivers/net/intel/ice/ice_rxtx.c
+++ b/drivers/net/intel/ice/ice_rxtx.c
@@ -2050,7 +2050,7 @@ ice_rx_alloc_bufs(struct ci_rx_queue *rxq)
diag_pay = rte_mbuf_raw_alloc_bulk(rxq->rxseg[1].mp,
(void *)rxq->sw_split_buf, rxq->rx_free_thresh);
if (unlikely(diag_pay != 0)) {
- rte_mempool_put_bulk(rxq->mp, (void *)rxep,
+ rte_mbuf_raw_free_bulk(rxq->mp, (void *)rxep,
rxq->rx_free_thresh);
PMD_RX_LOG(ERR, "Failed to get payload mbufs in bulk");
return -ENOMEM;
diff --git a/drivers/net/intel/ixgbe/ixgbe_rxtx.c b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
index 6143d16377..0aa7b9bf2e 100644
--- a/drivers/net/intel/ixgbe/ixgbe_rxtx.c
+++ b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
@@ -141,8 +141,7 @@ ixgbe_tx_free_bufs(struct ci_tx_queue *txq)
if (nb_free >= IXGBE_TX_MAX_FREE_BUF_SZ ||
(nb_free > 0 && m->pool != free[0]->pool)) {
- rte_mempool_put_bulk(free[0]->pool,
- (void **)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
nb_free = 0;
}
@@ -150,7 +149,7 @@ ixgbe_tx_free_bufs(struct ci_tx_queue *txq)
}
if (nb_free > 0)
- rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
/* buffers were freed, update counters */
txq->nb_tx_free = (uint16_t)(txq->nb_tx_free + txq->tx_rs_thresh);
diff --git a/drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h b/drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h
index e54f532497..7fb3c3dc24 100644
--- a/drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h
+++ b/drivers/net/intel/ixgbe/ixgbe_rxtx_vec_common.h
@@ -55,14 +55,13 @@ ixgbe_tx_free_bufs_vec(struct ci_tx_queue *txq)
if (likely(m->pool == free[0]->pool))
free[nb_free++] = m;
else {
- rte_mempool_put_bulk(free[0]->pool,
- (void *)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
free[0] = m;
nb_free = 1;
}
}
}
- rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free);
+ rte_mbuf_raw_free_bulk(free[0]->pool, free, nb_free);
} else {
for (i = 1; i < n; i++) {
m = rte_pktmbuf_prefree_seg(txep[i].mbuf);
--
2.48.1
prev parent reply other threads:[~2025-08-22 17:07 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-22 17:06 [PATCH 0/2] avoid using mempool fns directly Bruce Richardson
2025-08-22 17:06 ` [PATCH 1/2] net/intel: avoid allocating from mempool directly Bruce Richardson
2025-08-22 17:06 ` Bruce Richardson [this message]
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=20250822170656.454571-3-bruce.richardson@intel.com \
--to=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=mb@smartsharesystems.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).