kni: memzone pool for alloc and release
authorMarc Sune <marc.sune@bisdn.de>
Tue, 21 Oct 2014 10:46:55 +0000 (12:46 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 21 Oct 2014 15:24:53 +0000 (17:24 +0200)
commit0c6bc8ef70ba3f3043d3fbd25cc535a4f1b8098d
tree61c323c1c2c1fbf757b5193cb79f293849eb544d
parent3ead3080aaf77c984044f1e911a276a54a3c625b
kni: memzone pool for alloc and release

The previous implementation of rte_kni_alloc() was allocating memzones with a
name composed of a fixed string and the interface name. When an application was
allocating and deallocating multiple interfaces with different names, memzones
were quickly exhausted, even though memzones from deallocated interfaces were
never used anymore (unless an interface with the same name was re-allocated).
As a result, the application was unable to allocate more KNI interfaces with
different names.

This patch implements the KNI memzone pool in order to prevent memzone
exhaustion when allocating/deallocating KNI interfaces. It adds a new API call,
rte_kni_init(max_kni_ifaces) that shall be called before any call to
rte_kni_alloc() if KNI is used. The memzones are pre-allocated with interface-
independent names so that they can be reused.

Signed-off-by: Marc Sune <marc.sune@bisdn.de>
Acked-by: Helin Zhang <helin.zhang@intel.com>
app/test/test_kni.c
examples/kni/main.c
lib/librte_kni/rte_kni.c
lib/librte_kni/rte_kni.h