net/netvsc: support VF device hot add/remove
authorLong Li <longli@microsoft.com>
Mon, 21 Dec 2020 21:33:22 +0000 (13:33 -0800)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 17 Jan 2021 21:37:28 +0000 (22:37 +0100)
commita2a23a794b3aababf7f515d4fa56f09f326a9fab
treea1632832f34d316c3389fa52d2dd10616aafa251
parent1fef6ced07f33f1d8ee4fa91f5f0d083bc62361c
net/netvsc: support VF device hot add/remove

When a VF device is present, netvsc can send or receive packets over the
VF device. The VF device driver communicates directly with the PCI device
via the PF from the host hypervisor. This is faster than exchanging data
with netvsp via vmbus, i.e. syntheic path.

In Azure and Hyper-v environments, VF device can be hot added or hot
removed at anytime while guest VM is running. This patch improves netvsc
to support VF device hot add/remove.

1. netvsc monitors all system hot add activities over the PCI bus. When it
detects a VF device is added to the system and is managed under this
netvsc device, it asks EAL to probe and start this VF device, then it
attaches and switches data path to the VF device.

2. After a VF device is attached to netvsc, netvsc monitors this device on
hot remove. When this VF device is hot removed, netvsc switches data path
to synthetic, stops this VF device and removes it from EAL.

3. If any failure happens during a VF device hot remove or add, the netvsc
falls back to synthetic path for all data traffic.

Signed-off-by: Long Li <longli@microsoft.com>
drivers/net/netvsc/hn_ethdev.c
drivers/net/netvsc/hn_nvs.c
drivers/net/netvsc/hn_nvs.h
drivers/net/netvsc/hn_rxtx.c
drivers/net/netvsc/hn_var.h
drivers/net/netvsc/hn_vf.c