hv_netvsc: Use Windows version instead of NVSP version on GPAD teardown
authorMohammed Gamal <mgamal@redhat.com>
Thu, 5 Apr 2018 19:09:18 +0000 (21:09 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Apr 2018 02:21:00 +0000 (22:21 -0400)
When changing network interface settings, Windows guests
older than WS2016 can no longer shutdown. This was addressed
by commit 0ef58b0a05c12 ("hv_netvsc: change GPAD teardown order
on older versions"), however the issue also occurs on WS2012
guests that share NVSP protocol versions with WS2016 guests.
Hence we use Windows version directly to differentiate them.

Fixes: 0ef58b0a05c12 ("hv_netvsc: change GPAD teardown order on older versions")
Signed-off-by: Mohammed Gamal <mgamal@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/netvsc.c

index c9910c33e671f3f161f83249491d63e557274bbf..d65b7fc6c4a451f0000d7ef981d5807ea76e7787 100644 (file)
@@ -590,13 +590,13 @@ void netvsc_device_remove(struct hv_device *device)
        netdev_dbg(ndev, "net device safe to remove\n");
 
        /* older versions require that buffer be revoked before close */
-       if (net_device->nvsp_version < NVSP_PROTOCOL_VERSION_4)
+       if (vmbus_proto_version < VERSION_WIN10)
                netvsc_teardown_gpadl(device, net_device);
 
        /* Now, we can close the channel safely */
        vmbus_close(device->channel);
 
-       if (net_device->nvsp_version >= NVSP_PROTOCOL_VERSION_4)
+       if (vmbus_proto_version >= VERSION_WIN10)
                netvsc_teardown_gpadl(device, net_device);
 
        /* Release all resources */