DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Morten Brørup" <mb@smartsharesystems.com>
To: "narsimharaj pentam" <pnarsimharaj@gmail.com>, <users@dpdk.org>,
	<dev@dpdk.org>
Subject: RE: Indirect mbuf handling
Date: Wed, 10 Dec 2025 10:44:06 +0100	[thread overview]
Message-ID: <98CBD80474FA8B44BF855DF32C47DC35F655D0@smartserver.smartshare.dk> (raw)
In-Reply-To: <CAFLDJDoVgNj9JjUbDEUP=gaXOMKS2jYiYVFFPULWOthfPqzwFg@mail.gmail.com>

> From: narsimharaj pentam [mailto:pnarsimharaj@gmail.com] 
> Sent: Tuesday, 9 December 2025 18.05
> 
> Added dev group.
> 
> On Tue, Dec 9, 2025 at 10:11 PM narsimharaj pentam <pnarsimharaj@gmail.com> wrote:
> Hi 
> 
> I have a query related to ip fragmentation handling in DPDK.
> 
> The DPDK application is trying to send a larger packet than the configured MTU on the interface, before sending the packet to the  i40e PMD the packet will
> undergo fragmentation . The DPDK library function "rte_ipv4_fragment_packet" is used for fragmentation. Function rte_ipv4_fragment_packet will create
> direct and indirect mbuf's  for a fragment , the indirect buffers will have reference to the mbuf of the actual packet (zero copy).
> 
> The application will call function rte_eth_tx_burst to transmit fragments , which internally invokes i40e_xmit_pkts , the question here  is when should main application
> mbuf should be freed , can It be freed immediately  after i40e_xmit_pkts returns success, not sure because the mbuf's are queued up in software ring before actual transmit, 
> I am worried about the fragments holding references to the main application buffer.

The original packet can be freed immediately when then fragments have been created.

This is what the fragmentation example does:
https://elixir.bootlin.com/dpdk/v25.11/source/examples/ip_fragmentation/main.c#L289

This is what happens:
The original packet has a reference counter (which was incremented for each of the indirect mbufs referring to it), so freeing it at that point doesn't put it back in the pool.
When the last of the indirect mbufs is freed (by the driver called by rte_eth_tx_burst()), the original packet's reference counter reaches zero, and then the original mbuf is put back in the pool.

> 
> Thanks.
> 
> BR
> Narsimha


  reply	other threads:[~2025-12-10  9:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAFLDJDprPRB8mjybypwuvHOEp+MfXjSK6W1YJD=Db2CURUhLNA@mail.gmail.com>
2025-12-09 17:05 ` narsimharaj pentam
2025-12-10  9:44   ` Morten Brørup [this message]
2025-12-10 11:41     ` narsimharaj pentam

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=98CBD80474FA8B44BF855DF32C47DC35F655D0@smartserver.smartshare.dk \
    --to=mb@smartsharesystems.com \
    --cc=dev@dpdk.org \
    --cc=pnarsimharaj@gmail.com \
    --cc=users@dpdk.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).