At 2022-07-22 23:52:28, "Morten Brørup" <mb@smartsharesystems.com> wrote: >> From: Stephen Hemminger [mailto:stephen@networkplumber.org] >> Sent: Friday, 22 July 2022 16.49 >> >> On Fri, 22 Jul 2022 21:01:50 +0800 >> Huichao Cai <chcchc88@163.com> wrote: >> >> > Some NIC drivers support MBUF_FAST_FREE(Device supports optimization >> > for fast release of mbufs. When set application must guarantee that >> > per-queue all mbufs comes from the same mempool and has refcnt = 1) >> > offload. In order to adapt to this offload function, add this API. >> > Add some test data for this API. >> > >> > Signed-off-by: Huichao Cai <chcchc88@163.com> >> >> The code should just be checking that refcnt == 1 directly. >> >> There are cases where sender passes a cloned mbuf. This is independent >> of the fast free optimization. >> >> Similar to what Linux kernel does with skb_cow(). > >Olivier just confirmed that MBUF_FAST_FREE requires that the mbufs are direct and non-segmented, although these requirements are not yet documented. >
>This means that you should not generate segmented mbufs with this patch. I don't know what to do instead; probably fail with an appropriate errno.

When the bnxt driver sends mbuf, it will take the mbuf segments apart and hang it to the tx_buf_ring, so there is no mbuf segments when it is released.Does this mean that there can be mbuf segments?