On Tue, 2 Mar 2021 10:26:24 +0000
John Alexander <john.alexan...@datapath.co.uk> wrote:

> Hi,
> 
> Once a packet has been transmitted using an API call such as 
> rte_eth_tx_burst(), what is the preferred method of determining that the 
> packet has been transmitted?  I need to provide a notification to an 
> application so that it can re-use/re-claim some application resources that 
> were associated with the mbuf in the mbuf custom private data; this is a lazy 
> re-claim, we're not after immediate per-packets events just eventual reclaim.
> 
> I've been finding that rte_eth_tx_done_cleanup() isn't very widely supported 
> by many PMDs and when used with the Intel i40e PMD, it doesn't flush out 
> mbufs where the associated descriptor hasn't yet been updated due to the 
> descriptor update granularity (setting that down to 1 seems to result in at 
> least 1 mbuf still remaining stuck in the PMD).  The reclaim cycle works fine 
> when I'm continually sending, when I pause or stop sending, I never get my 
> mbufs back so I'm wondering what the preferred way of achieving this is?
> 
> Many Thanks,
> John A.
> 
> 

DPDK has no such mechanism built in.
You might be able to do something like this by creating a new memory pool
type and doing an action in the mempool enqueue operation.

Transmit done -> rte_pktmbuf_free -> rte_mempool_put
calls mempool_ops->enqueue

Reply via email to