net/netvsc: process link change messages in alarm
authorStephen Hemminger <stephen@networkplumber.org>
Tue, 19 May 2020 16:52:29 +0000 (09:52 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 28 May 2020 15:57:07 +0000 (17:57 +0200)
commit501a7e57356420dd40bdf31e965741669b0e6457
treefc8f5b4b37d7dd80c51b7a9f8a697444c30f6d56
parenta4f53bec7c0a8eebeb8ccff0afa46bfedf932916
net/netvsc: process link change messages in alarm

The original code would deadlock itself if a link change event
happened with link state interrupt enabled. The problem is that
the link state changed message would be seen while reading
the host to guest ring (under lock) and then the driver would
send a query to the host to see the new link state. The response
would never be seen (stuck in a while loop) waiting for the
response.

The solution is to use the link change indication to trigger
a DPDK alarm. The alarm will happen in a different thread and
in that context it can send request for new link state and
also do interrupt callback. This is similar to how the bonding
driver is handling the same thing.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
drivers/net/netvsc/hn_rndis.c