On Wed, 9 Nov 2022 14:04:34 +0800
Yangchao Zhou <[email protected]> wrote:
> In some scenarios, mbufs returned by rte_kni_rx_burst are not freed
> immediately. So kni_allocate_mbufs may be failed, but we don't know.
>
> Even worse, when alloc_q is completely exhausted, kni_net_tx in
> rte_kni.ko will drop all tx packets. kni_allocate_mbufs is never
> called again, even if the mbufs are eventually freed.
>
> In this patch, we always try to allocate mbufs for alloc_q.
>
> Don't worry about alloc_q being allocated too many mbufs, in fact,
> the old logic will gradually fill up alloc_q.
> Also, the cost of more calls to kni_allocate_mbufs should be acceptable.
>
> Fixes: 3e12a98fe397 ("kni: optimize Rx burst")
> Cc: [email protected]
> Cc: [email protected]
>
> Signed-off-by: Yangchao Zhou <[email protected]>
Since fifo_get returning 0 (no buffers) is very common would this
change impact performance.
If the problem is pool draining might be better to make the pool
bigger.