public inbox for dev@dpdk.org
 help / color / mirror / Atom feed
From: bugzilla@dpdk.org
To: dev@dpdk.org
Subject: [wishes/any Bug 1929] Ethdev Tx Completion API
Date: Sat, 04 Apr 2026 10:28:35 +0000	[thread overview]
Message-ID: <bug-1929-3@http.bugs.dpdk.org/> (raw)

http://bugs.dpdk.org/show_bug.cgi?id=1929

            Bug ID: 1929
           Summary: Ethdev Tx Completion API
           Product: wishes
           Version: unspecified
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: Normal
         Component: any
          Assignee: dev@dpdk.org
          Reporter: mb@smartsharesystems.com
  Target Milestone: ---
             Group: wishes-managers

The Ethdev API lacks the ability to provide information about what happened to
a packet after it was passed on to an ethdev driver via rte_eth_tx_burst():

1. Did the driver actually transmit the packet on the wire, or did it drop the
packet (due to link down or some other reason)?
2. When (timestamp) was the packet actually transmitted on the wire (delays
caused by a long Tx descriptor queue, hardware scheduling, or 802.3x/802.1Qbb
flow control)?

As a hack, the application could increase the refcnt of the mbufs before
passing them on to the driver, and poll rte_eth_tx_done_cleanup() to monitor
when the refcnt was decreased.
That would provide a Tx timestamp with an accuracy depending on the
tx_done_cleanup() poll frequency.
But it doesn't tell if the packet was dropped or sent by the driver.

Also, it doesn't show what actually went out on the wire in case of hardware
assisted Tx Segmentation Offload, where the hardware splits a large packet into
multiple smaller packets. But I'm not concerned about that, because the
application can compensate for it.

A new Ethdev API for Tx Completion would be useful for multiple purposes:
* For packet capture. A capture file containing all packets passed on to the
driver is not trustworthy if it includes unsent packets.
* For queue management. Information about packet transmission queueing delays
is relevant for queue management, ECN marking, CoDel, L4S, etc. It is also
imaginable that application level congestion control algorithms could make use
of such information.


For reference, Linux has SOF_TIMESTAMPING_TX_COMPLETION:
"Request tx timestamps on packet tx completion.
The completion timestamp is generated by the kernel when it receives packet a
completion report from the hardware.
Hardware may report multiple packets at once, and completion timestamps reflect
the timing of the report and not actual tx time.
This flag can be enabled via both socket options and control messages."

-- 
You are receiving this mail because:
You are the assignee for the bug.

                 reply	other threads:[~2026-04-04 10:28 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=bug-1929-3@http.bugs.dpdk.org/ \
    --to=bugzilla@dpdk.org \
    --cc=dev@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