DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Morten Brørup" <mb@smartsharesystems.com>
To: "Stephen Hemminger" <stephen@networkplumber.org>
Cc: "Tetsuya Mukawa" <mtetsuyah@gmail.com>, <dev@dpdk.org>
Subject: RE: [PATCH] net/null: Add fast mbuf release TX offload
Date: Thu, 26 Jun 2025 17:44:01 +0200	[thread overview]
Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9FD49@smartserver.smartshare.dk> (raw)
In-Reply-To: <20250626070557.33058157@hermes.local>

> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Thursday, 26 June 2025 16.06
> 
> On Tue, 24 Jun 2025 18:14:16 +0000
> Morten Brørup <mb@smartsharesystems.com> wrote:
> 
> > Added fast mbuf release, re-using the existing mbuf pool pointer
> > in the queue structure.
> >
> > Signed-off-by: Morten Brørup <mb@smartsharesystems.com>
> 
> Makes sense.
> 
> > ---
> >  drivers/net/null/rte_eth_null.c | 30 +++++++++++++++++++++++++++---
> >  1 file changed, 27 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/net/null/rte_eth_null.c
> b/drivers/net/null/rte_eth_null.c
> > index 8a9b74a03b..12c0d8d1ff 100644
> > --- a/drivers/net/null/rte_eth_null.c
> > +++ b/drivers/net/null/rte_eth_null.c
> > @@ -34,6 +34,17 @@ struct pmd_internals;
> >  struct null_queue {
> >  	struct pmd_internals *internals;
> >
> > +	/**
> > +	 * For RX queue:
> > +	 *  Mempool to allocate mbufs from.
> > +	 *
> > +	 * For TX queue:
> > +	 *  Mempool to free mbufs to, if fast release of mbufs is enabled.
> > +	 *  UINTPTR_MAX if the mempool for fast release of mbufs has not
> yet been detected.
> > +	 *  NULL if fast release of mbufs is not enabled.
> > +	 *
> > +	 *  @see RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE
> > +	 */
> >  	struct rte_mempool *mb_pool;
> 
> Do all drivers to it this way?

No, I think most drivers have separate structures for rx and tx queues. This driver doesn't so I'm reusing the existing mempool pointer.
Also, they don't cache the mempool pointer, but look at mbuf[0].pool at every burst; so their tx queue structure doesn't have a mempool pointer field.
And they check an offload flag (either the bit in the raw offload field, or a shadow variable for the relevant offload flag), instead of checking the mempool pointer.

Other drivers can be improved, and I have submitted an optimization patch for the i40e driver with some of the things I do in this patch:
https://inbox.dpdk.org/dev/20250624061238.89259-1-mb@smartsharesystems.com/

> Is it documented in ethdev?

The RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE flag is documented.
How to implement it in the drivers is not.

-Morten


      reply	other threads:[~2025-06-26 15:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-24 18:14 Morten Brørup
2025-06-26 14:05 ` Stephen Hemminger
2025-06-26 15:44   ` Morten Brørup [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=98CBD80474FA8B44BF855DF32C47DC35E9FD49@smartserver.smartshare.dk \
    --to=mb@smartsharesystems.com \
    --cc=dev@dpdk.org \
    --cc=mtetsuyah@gmail.com \
    --cc=stephen@networkplumber.org \
    /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).