hv_netvsc: pass struct net_device to rndis_filter_set_device_mac()
[cascardo/linux.git] / drivers / net / hyperv / rndis_filter.c
index 97c292b..f1692bc 100644 (file)
@@ -543,11 +543,9 @@ static int rndis_filter_query_device_mac(struct rndis_device *dev)
 #define NWADR_STR "NetworkAddress"
 #define NWADR_STRLEN 14
 
-int rndis_filter_set_device_mac(struct hv_device *hdev, char *mac)
+int rndis_filter_set_device_mac(struct net_device *ndev, char *mac)
 {
-       struct net_device *ndev = hv_get_drvdata(hdev);
-       struct net_device_context *net_device_ctx = netdev_priv(ndev);
-       struct netvsc_device *nvdev = net_device_ctx->nvdev;
+       struct netvsc_device *nvdev = net_device_to_netvsc_device(ndev);
        struct rndis_device *rdev = nvdev->extension;
        struct rndis_request *request;
        struct rndis_set_request *set;
@@ -626,8 +624,7 @@ rndis_filter_set_offload_params(struct hv_device *hdev,
                                struct ndis_offload_params *req_offloads)
 {
        struct net_device *ndev = hv_get_drvdata(hdev);
-       struct net_device_context *net_device_ctx = netdev_priv(ndev);
-       struct netvsc_device *nvdev = net_device_ctx->nvdev;
+       struct netvsc_device *nvdev = net_device_to_netvsc_device(ndev);
        struct rndis_device *rdev = nvdev->extension;
        struct rndis_request *request;
        struct rndis_set_request *set;
@@ -851,8 +848,7 @@ static int rndis_filter_init_device(struct rndis_device *dev)
        u32 status;
        int ret;
        unsigned long t;
-       struct net_device_context *net_device_ctx = netdev_priv(dev->ndev);
-       struct netvsc_device *nvdev = net_device_ctx->nvdev;
+       struct netvsc_device *nvdev = net_device_to_netvsc_device(dev->ndev);
 
        request = get_rndis_request(dev, RNDIS_MSG_INIT,
                        RNDIS_MESSAGE_SIZE(struct rndis_initialize_request));
@@ -977,8 +973,7 @@ static void netvsc_sc_open(struct vmbus_channel *new_sc)
 {
        struct net_device *ndev =
                hv_get_drvdata(new_sc->primary_channel->device_obj);
-       struct net_device_context *net_device_ctx = netdev_priv(ndev);
-       struct netvsc_device *nvscdev = net_device_ctx->nvdev;
+       struct netvsc_device *nvscdev = net_device_to_netvsc_device(ndev);
        u16 chn_index = new_sc->offermsg.offer.sub_channel_index;
        int ret;
        unsigned long flags;
@@ -1196,9 +1191,7 @@ err_dev_remv:
 
 void rndis_filter_device_remove(struct hv_device *dev)
 {
-       struct net_device *ndev = hv_get_drvdata(dev);
-       struct net_device_context *net_device_ctx = netdev_priv(ndev);
-       struct netvsc_device *net_dev = net_device_ctx->nvdev;
+       struct netvsc_device *net_dev = hv_device_to_netvsc_device(dev);
        struct rndis_device *rndis_dev = net_dev->extension;
        unsigned long t;
 
@@ -1222,27 +1215,19 @@ void rndis_filter_device_remove(struct hv_device *dev)
 }
 
 
-int rndis_filter_open(struct hv_device *dev)
+int rndis_filter_open(struct netvsc_device *nvdev)
 {
-       struct net_device *ndev = hv_get_drvdata(dev);
-       struct net_device_context *net_device_ctx = netdev_priv(ndev);
-       struct netvsc_device *net_device = net_device_ctx->nvdev;
-
-       if (!net_device)
+       if (!nvdev)
                return -EINVAL;
 
-       if (atomic_inc_return(&net_device->open_cnt) != 1)
+       if (atomic_inc_return(&nvdev->open_cnt) != 1)
                return 0;
 
-       return rndis_filter_open_device(net_device->extension);
+       return rndis_filter_open_device(nvdev->extension);
 }
 
-int rndis_filter_close(struct hv_device *dev)
+int rndis_filter_close(struct netvsc_device *nvdev)
 {
-       struct net_device *ndev = hv_get_drvdata(dev);
-       struct net_device_context *net_device_ctx = netdev_priv(ndev);
-       struct netvsc_device *nvdev = net_device_ctx->nvdev;
-
        if (!nvdev)
                return -EINVAL;