kni: allocate no more mbuf than empty slots in queue
authorGowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Thu, 11 May 2017 11:51:26 +0000 (17:21 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Sat, 1 Jul 2017 10:54:51 +0000 (12:54 +0200)
commit49da4e82cf94a5b7d8fc611c2ca16433ef52881c
treec24a7b5b188731d0d1e6097af3731fbce8fefab8
parent814baffdb6910c1a949bd7c5ce3c6807f703c799
kni: allocate no more mbuf than empty slots in queue

In kni_allocate_mbufs(), we attempt to add max_burst (32) count of mbuf
always into alloc_q, which is excessively leading too many rte_pktmbuf_
free() when alloc_q is contending at high packet rate (for eg 10Gig data).
In a situation when alloc_q fifo can only accommodate very few (or zero)
mbuf, create only what needed and add in fifo.

With this patch, we could stop random network stall in KNI at higher packet
rate (eg 1G or 10G data between vEth0 and PMD) sufficiently exhausting
alloc_q on above condition. I tested i40e PMD for this purpose in ppc64le.

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
lib/librte_kni/rte_kni.c