Skip to content

Commit

Permalink
staging: vt6656: make pControlURB available life time of driver.
Browse files Browse the repository at this point in the history
There is no need remove and add the control urb in device open/close.

Move to the probe and disconnect. This make the USB control in/out
functions always available to driver.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Malcolm Priestley authored and Greg Kroah-Hartman committed Oct 11, 2013
1 parent 4a54b61 commit 4ad0fdb
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions drivers/staging/vt6656/main_usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -707,6 +707,12 @@ vt6656_probe(struct usb_interface *intf, const struct usb_device_id *id)
INIT_WORK(&pDevice->read_work_item, RXvWorkItem);
INIT_WORK(&pDevice->rx_mng_work_item, RXvMngWorkItem);

pDevice->pControlURB = usb_alloc_urb(0, GFP_ATOMIC);
if (!pDevice->pControlURB) {
DBG_PRT(MSG_LEVEL_ERR, KERN_ERR"Failed to alloc control urb\n");
goto err_nomem;
}

pDevice->tx_80211 = device_dma0_tx_80211;
pDevice->vnt_mgmt.pAdapter = (void *) pDevice;

Expand Down Expand Up @@ -853,23 +859,15 @@ static bool device_alloc_bufs(struct vnt_private *pDevice)
pRCB++;
}

pDevice->pControlURB = usb_alloc_urb(0, GFP_ATOMIC);
if (pDevice->pControlURB == NULL) {
DBG_PRT(MSG_LEVEL_ERR,KERN_ERR"Failed to alloc control urb\n");
goto free_rx_tx;
}

pDevice->pInterruptURB = usb_alloc_urb(0, GFP_ATOMIC);
if (pDevice->pInterruptURB == NULL) {
DBG_PRT(MSG_LEVEL_ERR,KERN_ERR"Failed to alloc int urb\n");
usb_free_urb(pDevice->pControlURB);
goto free_rx_tx;
}

pDevice->intBuf.pDataBuf = kmalloc(MAX_INTERRUPT_SIZE, GFP_KERNEL);
if (pDevice->intBuf.pDataBuf == NULL) {
DBG_PRT(MSG_LEVEL_ERR,KERN_ERR"Failed to alloc int buf\n");
usb_free_urb(pDevice->pControlURB);
usb_free_urb(pDevice->pInterruptURB);
goto free_rx_tx;
}
Expand Down Expand Up @@ -1040,9 +1038,7 @@ static int device_open(struct net_device *dev)
device_free_rx_bufs(pDevice);
device_free_tx_bufs(pDevice);
device_free_int_bufs(pDevice);
usb_kill_urb(pDevice->pControlURB);
usb_kill_urb(pDevice->pInterruptURB);
usb_free_urb(pDevice->pControlURB);
usb_free_urb(pDevice->pInterruptURB);

DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "device_open fail.. \n");
Expand Down Expand Up @@ -1113,9 +1109,7 @@ static int device_close(struct net_device *dev)
device_free_int_bufs(pDevice);
device_free_frag_bufs(pDevice);

usb_kill_urb(pDevice->pControlURB);
usb_kill_urb(pDevice->pInterruptURB);
usb_free_urb(pDevice->pControlURB);
usb_free_urb(pDevice->pInterruptURB);

BSSvClearNodeDBTable(pDevice, 0);
Expand All @@ -1139,9 +1133,12 @@ static void vt6656_disconnect(struct usb_interface *intf)

if (device->dev) {
unregister_netdev(device->dev);

usb_kill_urb(device->pControlURB);
usb_free_urb(device->pControlURB);

free_netdev(device->dev);
}

}

static int device_dma0_tx_80211(struct sk_buff *skb, struct net_device *dev)
Expand Down

0 comments on commit 4ad0fdb

Please sign in to comment.