netvsc: simplify rndis_filter_remove
authorstephen hemminger <stephen@networkplumber.org>
Tue, 24 Jan 2017 21:06:10 +0000 (13:06 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Jan 2017 21:29:00 +0000 (16:29 -0500)
All caller's already have pointer to netvsc_device so pass it.

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc_drv.c
drivers/net/hyperv/rndis_filter.c

index 28cbd6a2ecf8a6ce5785ba16251053711bacc721..757205c9cb9371270326683563bcb4089db68519 100644 (file)
@@ -198,7 +198,8 @@ int rndis_filter_open(struct netvsc_device *nvdev);
 int rndis_filter_close(struct netvsc_device *nvdev);
 int rndis_filter_device_add(struct hv_device *dev,
                            struct netvsc_device_info *info);
-void rndis_filter_device_remove(struct hv_device *dev);
+void rndis_filter_device_remove(struct hv_device *dev,
+                               struct netvsc_device *nvdev);
 int rndis_filter_set_rss_param(struct rndis_device *rdev,
                               const u8 *key, int num_queue);
 int rndis_filter_receive(struct net_device *ndev,
index 4bc1fdbc8cd7b054c6ba56443731674208edd79f..11755783c2f6057566d583fc0a5d89da42eb0d55 100644 (file)
@@ -780,7 +780,7 @@ static int netvsc_set_channels(struct net_device *net,
                return ret;
 
        net_device_ctx->start_remove = true;
-       rndis_filter_device_remove(dev);
+       rndis_filter_device_remove(dev, nvdev);
 
        ret = netvsc_set_queues(net, dev, count);
        if (ret == 0)
@@ -865,7 +865,7 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu)
                goto out;
 
        ndevctx->start_remove = true;
-       rndis_filter_device_remove(hdev);
+       rndis_filter_device_remove(hdev, nvdev);
 
        ndev->mtu = mtu;
 
@@ -1493,7 +1493,7 @@ static int netvsc_probe(struct hv_device *dev,
        ret = register_netdev(net);
        if (ret != 0) {
                pr_err("Unable to register netdev.\n");
-               rndis_filter_device_remove(dev);
+               rndis_filter_device_remove(dev, nvdev);
                netvsc_free_netdev(net);
        }
 
@@ -1533,7 +1533,7 @@ static int netvsc_remove(struct hv_device *dev)
         * Call to the vsc driver to let it know that the device is being
         * removed
         */
-       rndis_filter_device_remove(dev);
+       rndis_filter_device_remove(dev, ndev_ctx->nvdev);
 
        hv_set_drvdata(dev, NULL);
 
index e3b29f35366ce929a7fb41d1bfd15fd7b5be732d..70b099a731a9217cf3985bfcbb7da466ccc2aade 100644 (file)
@@ -1053,7 +1053,7 @@ int rndis_filter_device_add(struct hv_device *dev,
        /* Send the rndis initialization message */
        ret = rndis_filter_init_device(rndis_device);
        if (ret != 0) {
-               rndis_filter_device_remove(dev);
+               rndis_filter_device_remove(dev, net_device);
                return ret;
        }
 
@@ -1068,7 +1068,7 @@ int rndis_filter_device_add(struct hv_device *dev,
        /* Get the mac address */
        ret = rndis_filter_query_device_mac(rndis_device);
        if (ret != 0) {
-               rndis_filter_device_remove(dev);
+               rndis_filter_device_remove(dev, net_device);
                return ret;
        }
 
@@ -1077,7 +1077,7 @@ int rndis_filter_device_add(struct hv_device *dev,
        /* Find HW offload capabilities */
        ret = rndis_query_hwcaps(rndis_device, &hwcaps);
        if (ret != 0) {
-               rndis_filter_device_remove(dev);
+               rndis_filter_device_remove(dev, net_device);
                return ret;
        }
 
@@ -1233,13 +1233,13 @@ out:
        return 0; /* return 0 because primary channel can be used alone */
 
 err_dev_remv:
-       rndis_filter_device_remove(dev);
+       rndis_filter_device_remove(dev, net_device);
        return ret;
 }
 
-void rndis_filter_device_remove(struct hv_device *dev)
+void rndis_filter_device_remove(struct hv_device *dev,
+                               struct netvsc_device *net_dev)
 {
-       struct netvsc_device *net_dev = hv_device_to_netvsc_device(dev);
        struct rndis_device *rndis_dev = net_dev->extension;
 
        /* If not all subchannel offers are complete, wait for them until