]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
hv_netvsc: remove open_cnt reference count
authorStephen Hemminger <stephen@networkplumber.org>
Wed, 13 Dec 2017 00:48:39 +0000 (16:48 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 Dec 2017 20:57:39 +0000 (15:57 -0500)
There is only ever a single instance of network device object
referencing the internal rndis object. Therefore the open_cnt atomic
is not necessary.

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.c
drivers/net/hyperv/rndis_filter.c

index b090d90114ca22e9801cad7ff323cd239f4a1558..b10c99751e3ac98812bc8220f300c9c5b6a212c4 100644 (file)
@@ -823,8 +823,6 @@ struct netvsc_device {
        u32 max_pkt; /* max number of pkt in one send, e.g. 8 */
        u32 pkt_align; /* alignment bytes, e.g. 8 */
 
-       atomic_t open_cnt;
-
        struct netvsc_channel chan_table[VRSS_CHANNEL_MAX];
 
        struct rcu_head rcu;
index d1a740add1bcce6b3eb178c0e7a5194984beea2c..83fa55336c1b95f5cf1842845f9dffb538fc3ad0 100644 (file)
@@ -73,7 +73,7 @@ static struct netvsc_device *alloc_net_device(void)
 
        init_waitqueue_head(&net_device->wait_drain);
        net_device->destroy = false;
-       atomic_set(&net_device->open_cnt, 0);
+
        net_device->max_pkt = RNDIS_MAX_PKT_DEFAULT;
        net_device->pkt_align = RNDIS_PKT_ALIGN_DEFAULT;
 
index 025110a19d4a20c9f5ad56637424b74c72012c84..035976949177a92f4aa84ec4306474e7b528b6da 100644 (file)
@@ -1362,9 +1362,6 @@ int rndis_filter_open(struct netvsc_device *nvdev)
        if (!nvdev)
                return -EINVAL;
 
-       if (atomic_inc_return(&nvdev->open_cnt) != 1)
-               return 0;
-
        return rndis_filter_open_device(nvdev->extension);
 }
 
@@ -1373,13 +1370,12 @@ int rndis_filter_close(struct netvsc_device *nvdev)
        if (!nvdev)
                return -EINVAL;
 
-       if (atomic_dec_return(&nvdev->open_cnt) != 0)
-               return 0;
-
        return rndis_filter_close_device(nvdev->extension);
 }
 
 bool rndis_filter_opened(const struct netvsc_device *nvdev)
 {
-       return atomic_read(&nvdev->open_cnt) > 0;
+       const struct rndis_device *dev = nvdev->extension;
+
+       return dev->state == RNDIS_DEV_DATAINITIALIZED;
 }