net/netvsc: split send buffers from Tx descriptors
authorStephen Hemminger <stephen@networkplumber.org>
Tue, 31 Mar 2020 17:13:59 +0000 (10:13 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 21 Apr 2020 11:57:06 +0000 (13:57 +0200)
commitcc0251813277fcf43b930b43ab4a423ed7536120
tree2de0942d96ac926c26ec5ef98c9b2019c756d913
parent107f3cf31047e09a146e8ebc3d232f3de9d55466
net/netvsc: split send buffers from Tx descriptors

The VMBus has reserved transmit area (per device) and transmit
descriptors (per queue). The previous code was always having a 1:1
mapping between send buffers and descriptors.
This can lead to one queue starving another and also buffer bloat.

Change to working more like FreeBSD where there is a pool of transmit
descriptors per queue. If send buffer is not available then no
aggregation happens but the queue can still drain.

Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
drivers/net/netvsc/hn_ethdev.c
drivers/net/netvsc/hn_rxtx.c
drivers/net/netvsc/hn_var.h