diff options
author | Jeff Garzik <jeff@garzik.org> | 2007-02-09 16:12:09 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-02-09 16:12:09 -0500 |
commit | a3cc2de9138f1ee1581f55927f33f7d72ed6207d (patch) | |
tree | 4f0dbdb1b18bf24987485facb5e7800e242d932f /drivers/net/wireless/zd1211rw/zd_usb.c | |
parent | e45d9ab4051d99c9f237c96e75c4dd6671661236 (diff) | |
parent | 46b8c85e1df091fe2d53ae7d02addb0dc58a9123 (diff) | |
download | kernel-crypto-a3cc2de9138f1ee1581f55927f33f7d72ed6207d.tar.gz kernel-crypto-a3cc2de9138f1ee1581f55927f33f7d72ed6207d.tar.xz kernel-crypto-a3cc2de9138f1ee1581f55927f33f7d72ed6207d.zip |
Merge branch 'upstream' of master.kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6 into upstream
Diffstat (limited to 'drivers/net/wireless/zd1211rw/zd_usb.c')
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_usb.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c index 75ef55624d7..aac8a1c5ba0 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.c +++ b/drivers/net/wireless/zd1211rw/zd_usb.c @@ -313,6 +313,12 @@ out: static inline void handle_retry_failed_int(struct urb *urb) { + struct zd_usb *usb = urb->context; + struct zd_mac *mac = zd_usb_to_mac(usb); + struct ieee80211_device *ieee = zd_mac_to_ieee80211(mac); + + ieee->stats.tx_errors++; + ieee->ieee_stats.tx_retry_limit_exceeded++; dev_dbg_f(urb_dev(urb), "retry failed interrupt\n"); } @@ -487,6 +493,9 @@ static void handle_rx_packet(struct zd_usb *usb, const u8 *buffer, if (length < sizeof(struct rx_length_info)) { /* It's not a complete packet anyhow. */ + struct ieee80211_device *ieee = zd_mac_to_ieee80211(mac); + ieee->stats.rx_errors++; + ieee->stats.rx_length_errors++; return; } length_info = (struct rx_length_info *) @@ -923,6 +932,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; @@ -1024,6 +1035,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; |