]> err.no Git - linux-2.6/blobdiff - drivers/net/wireless/zd1211rw/zd_usb.c
[PATCH] zd1211rw: Reset device in the probe call
[linux-2.6] / drivers / net / wireless / zd1211rw / zd_usb.c
index aa782e88754b3d777722eb3e41fd66c7ee669291..3ac308af24aecf737c9ad953f729061bfb098583 100644 (file)
@@ -598,13 +598,13 @@ static void handle_rx_packet(struct zd_usb *usb, const u8 *buffer,
                        n = l+k;
                        if (n > length)
                                return;
-                       zd_mac_rx(mac, buffer+l, k);
+                       zd_mac_rx_irq(mac, buffer+l, k);
                        if (i >= 2)
                                return;
                        l = (n+3) & ~3;
                }
        } else {
-               zd_mac_rx(mac, buffer, length);
+               zd_mac_rx_irq(mac, buffer, length);
        }
 }
 
@@ -1027,6 +1027,8 @@ static int probe(struct usb_interface *intf, const struct usb_device_id *id)
                goto error;
        }
 
+       usb_reset_device(interface_to_usbdev(intf));
+
        netdev = zd_netdev_alloc(intf);
        if (netdev == NULL) {
                r = -ENOMEM;
@@ -1128,6 +1130,7 @@ static int __init usb_init(void)
 
        r = usb_register(&driver);
        if (r) {
+               destroy_workqueue(zd_workqueue);
                printk(KERN_ERR "%s usb_register() failed. Error number %d\n",
                       driver.name, r);
                return r;