net/netvsc: fix multiple channel Rx
authorLong Li <longli@microsoft.com>
Tue, 11 Aug 2020 02:33:11 +0000 (19:33 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 18 Sep 2020 16:55:06 +0000 (18:55 +0200)
commitac837bdd22400b220d60336f22c18091a92a40c9
tree76795c0b4119419494d3ecf40266156edacc013f
parent09c00246e170fe6b15eeaf7c3d86f47fc02ef2bd
net/netvsc: fix multiple channel Rx

netvsc uses rxbuf_info buffer to track received packets attached via
rte_pktmbuf_attach_extbuf() and ack the host based on usage count. It
uses the transaction_id in the VMBus packet to locate where to use
memory in the rxbuf_info.

This is not correct in multiple channel setup, as different channels may
return identical transaction_ids at a time, and may corrupt the
rxbuf_info buffer.

Fix this by defining rxbuf_info for each queue.

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