On Wed,  9 Nov 2022 14:04:34 +0800
Yangchao Zhou <zhouya...@gmail.com> 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: hem...@freescale.com
> Cc: sta...@dpdk.org
> 
> Signed-off-by: Yangchao Zhou <zhouya...@gmail.com>

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.

Reply via email to