This series addresses the bug report "ntnic: virt queue data in BSS" (Bugzilla ID: 1975). The report lists five problems with keeping the virt queue state in static arrays; each is addressed as follows.
- BSS memory is slower than hugepages because of TLB overhead, which can cause performance loss in the hot path. The per-queue state, and the copy of the packet buffer descriptors indexed on every burst, are now allocated from the EAL heap. - Hard coding the size wastes space. The 128-entry Rx and Tx arrays are gone; one object is allocated per configured queue and freed when the queue is released. - Data in BSS is not visible to a secondary process. The state now lives in EAL memory. The PMD still does not support primary/secondary operation, but this no longer stands in the way. - NUMA aware allocation was not possible. Both allocations are made with rte_zmalloc_socket() on the NUMA node of the adapter, next to the rings and buffers they describe. - Cache alignment. The queue object is cache line aligned and no longer shares a line with a neighboring queue. Patch 1 drops two never-called setup ops so that only the managed setup and release paths own the queue state. Patch 2 makes a failed hardware setup visible to the caller, which patch 3 relies on to free the queue object on failure. Patch 3 is the fix itself; it also fixes a leak of the descriptor copy on queue re-setup and an ignored allocation failure that led to a NULL dereference in the burst functions. Serhii Iliushyk (3): net/ntnic: remove unused unmanaged virt queue setup ops net/ntnic: check virt queue hardware setup result net/ntnic: fix virt queue data in BSS drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c | 334 +++++++++++------- drivers/net/ntnic/ntnic_ethdev.c | 52 ++- drivers/net/ntnic/ntnic_mod_reg.h | 30 -- 3 files changed, 245 insertions(+), 171 deletions(-) -- 2.45.0

