Skip to content

Commit

Permalink
Staging: hv: netvsc: Introduce state to manage the lifecycle of net d…
Browse files Browse the repository at this point in the history
…evice

Introduce state to manage the lifecycle of net device.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed Aug 29, 2011
1 parent 509ee38 commit c38b9c7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/staging/hv/hyperv_net.h
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,7 @@ struct netvsc_device {

atomic_t refcnt;
atomic_t num_outstanding_sends;
bool destroy;
/*
* List of free preallocated hv_netvsc_packet to represent receive
* packet
Expand Down
6 changes: 6 additions & 0 deletions drivers/staging/hv/netvsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ static struct netvsc_device *alloc_net_device(struct hv_device *device)
/* Set to 2 to allow both inbound and outbound traffic */
atomic_set(&net_device->refcnt, 2);

net_device->destroy = false;
net_device->dev = device;
device->ext = net_device;

Expand Down Expand Up @@ -396,6 +397,7 @@ int netvsc_device_remove(struct hv_device *device)
{
struct netvsc_device *net_device;
struct hv_netvsc_packet *netvsc_packet, *pos;
unsigned long flags;

/* Stop outbound traffic ie sends and receives completions */
net_device = release_outbound_net_device(device);
Expand All @@ -404,6 +406,10 @@ int netvsc_device_remove(struct hv_device *device)
return -ENODEV;
}

spin_lock_irqsave(&device->channel->inbound_lock, flags);
net_device->destroy = true;
spin_unlock_irqrestore(&device->channel->inbound_lock, flags);

/* Wait for all send completions */
while (atomic_read(&net_device->num_outstanding_sends)) {
dev_err(&device->device,
Expand Down

0 comments on commit c38b9c7

Please sign in to comment.