<div dir="ltr">Thanks for the responses,<div>Then what is the advantage of chaining mbuffs over using the mbuff array?</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 10, 2022 at 2:26 PM Ferruh Yigit <<a href="mailto:ferruh.yigit@intel.com">ferruh.yigit@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 2/9/2022 10:46 PM, Stephen Hemminger wrote:<br>
> On Wed, 9 Feb 2022 22:18:24 +0000<br>
> Ferruh Yigit <<a href="mailto:ferruh.yigit@intel.com" target="_blank">ferruh.yigit@intel.com</a>> wrote:<br>
> <br>
>> On 2/9/2022 6:03 PM, Ansar Kannankattil wrote:<br>
>>> Hi<br>
>>> My intention is to decrease the number of rte_tx_eth_burst calls, I know that mentioning nb_pkts will result in sending multiple packets in a single call.<br>
>>> But providing nb_pkts=1 and posting a head mbuff having number of mbuffs linked with it will results sending multiple packets<br>
>><br>
>> If driver supports, you can do it.<br>
>> Driver should expose this capability via RTE_ETH_TX_OFFLOAD_MULTI_SEGS flag,<br>
>> in 'dev_info->tx_offload_capa'.<br>
>><br>
>>> If not, what is the use case of linking multiple mbuffs together<br>
>><br>
>> It is also used in Rx path (again if driver supports).<br>
> <br>
> I think Ansar was asking about chaining multiple packets in one call to tx burst.<br>
> The chaining in DPDK is to make a single packet out of multiple pieces (like writev).<br>
> <br>
> DPDK mbufs were based on original BSD concept.<br>
> In BSD mbufs, mbuf has two linked lists.<br>
>    BSD m->m_next pointer == DPDK m->next  for multiple parts of packet.<br>
>    BSD m->m_nextpkt                       for next packet in queue<br>
> <br>
> There is no nextpkt in DPDK.<br>
<br>
Right, chaining mbufs is for segmented packets.<br>
</blockquote></div>