|
@@ -704,6 +704,7 @@ vt6656_probe(struct usb_interface *intf, const struct usb_device_id *id)
|
|
|
spin_lock_init(&pDevice->lock);
|
|
|
INIT_DELAYED_WORK(&pDevice->run_command_work, vRunCommand);
|
|
|
INIT_DELAYED_WORK(&pDevice->second_callback_work, BSSvSecondCallBack);
|
|
|
+ INIT_WORK(&pDevice->read_work_item, RXvWorkItem);
|
|
|
|
|
|
pDevice->tx_80211 = device_dma0_tx_80211;
|
|
|
pDevice->vnt_mgmt.pAdapter = (void *) pDevice;
|
|
@@ -984,7 +985,6 @@ static int device_open(struct net_device *dev)
|
|
|
|
|
|
vMgrObjectInit(pDevice);
|
|
|
tasklet_init(&pDevice->RxMngWorkItem, (void *)RXvMngWorkItem, (unsigned long)pDevice);
|
|
|
- tasklet_init(&pDevice->ReadWorkItem, (void *)RXvWorkItem, (unsigned long)pDevice);
|
|
|
tasklet_init(&pDevice->EventWorkItem, (void *)INTvWorkItem, (unsigned long)pDevice);
|
|
|
|
|
|
schedule_delayed_work(&pDevice->second_callback_work, HZ);
|
|
@@ -1004,7 +1004,7 @@ static int device_open(struct net_device *dev)
|
|
|
pDevice->bWPASuppWextEnabled = false;
|
|
|
pDevice->byReAssocCount = 0;
|
|
|
|
|
|
- RXvWorkItem(pDevice);
|
|
|
+ schedule_work(&pDevice->read_work_item);
|
|
|
INTvWorkItem(pDevice);
|
|
|
|
|
|
/* if WEP key already set by iwconfig but device not yet open */
|
|
@@ -1092,7 +1092,9 @@ static int device_close(struct net_device *dev)
|
|
|
del_timer(&pDevice->TimerSQ3Tmax3);
|
|
|
}
|
|
|
tasklet_kill(&pDevice->RxMngWorkItem);
|
|
|
- tasklet_kill(&pDevice->ReadWorkItem);
|
|
|
+
|
|
|
+ cancel_work_sync(&pDevice->read_work_item);
|
|
|
+
|
|
|
tasklet_kill(&pDevice->EventWorkItem);
|
|
|
|
|
|
pDevice->bRoaming = false;
|