diff options
-rw-r--r-- | drivers/net/wireless/libertas/if_usb.c | 26 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/if_usb.h | 3 |
2 files changed, 4 insertions, 25 deletions
diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c index f7d2b46340e8..4d4f757a9279 100644 --- a/drivers/net/wireless/libertas/if_usb.c +++ b/drivers/net/wireless/libertas/if_usb.c | |||
@@ -5,7 +5,6 @@ | |||
5 | #include <linux/moduleparam.h> | 5 | #include <linux/moduleparam.h> |
6 | #include <linux/firmware.h> | 6 | #include <linux/firmware.h> |
7 | #include <linux/netdevice.h> | 7 | #include <linux/netdevice.h> |
8 | #include <linux/list.h> | ||
9 | #include <linux/usb.h> | 8 | #include <linux/usb.h> |
10 | 9 | ||
11 | #define DRV_NAME "usb8xxx" | 10 | #define DRV_NAME "usb8xxx" |
@@ -23,15 +22,6 @@ static const char usbdriver_name[] = "usb8xxx"; | |||
23 | static char *lbs_fw_name = "usb8388.bin"; | 22 | static char *lbs_fw_name = "usb8388.bin"; |
24 | module_param_named(fw_name, lbs_fw_name, charp, 0644); | 23 | module_param_named(fw_name, lbs_fw_name, charp, 0644); |
25 | 24 | ||
26 | /* | ||
27 | * We need to send a RESET command to all USB devices before | ||
28 | * we tear down the USB connection. Otherwise we would not | ||
29 | * be able to re-init device the device if the module gets | ||
30 | * loaded again. This is a list of all initialized USB devices, | ||
31 | * for the reset code see if_usb_reset_device() | ||
32 | */ | ||
33 | static LIST_HEAD(usb_devices); | ||
34 | |||
35 | static struct usb_device_id if_usb_table[] = { | 25 | static struct usb_device_id if_usb_table[] = { |
36 | /* Enter the device signature inside */ | 26 | /* Enter the device signature inside */ |
37 | { USB_DEVICE(0x1286, 0x2001) }, | 27 | { USB_DEVICE(0x1286, 0x2001) }, |
@@ -244,8 +234,6 @@ static int if_usb_probe(struct usb_interface *intf, | |||
244 | if (lbs_start_card(priv)) | 234 | if (lbs_start_card(priv)) |
245 | goto err_start_card; | 235 | goto err_start_card; |
246 | 236 | ||
247 | list_add_tail(&cardp->list, &usb_devices); | ||
248 | |||
249 | usb_get_dev(udev); | 237 | usb_get_dev(udev); |
250 | usb_set_intfdata(intf, cardp); | 238 | usb_set_intfdata(intf, cardp); |
251 | 239 | ||
@@ -279,8 +267,6 @@ static void if_usb_disconnect(struct usb_interface *intf) | |||
279 | /* Update Surprise removed to TRUE */ | 267 | /* Update Surprise removed to TRUE */ |
280 | cardp->surprise_removed = 1; | 268 | cardp->surprise_removed = 1; |
281 | 269 | ||
282 | list_del(&cardp->list); | ||
283 | |||
284 | if (priv) { | 270 | if (priv) { |
285 | lbs_adapter *adapter = priv->adapter; | 271 | lbs_adapter *adapter = priv->adapter; |
286 | 272 | ||
@@ -290,6 +276,10 @@ static void if_usb_disconnect(struct usb_interface *intf) | |||
290 | lbs_remove_card(priv); | 276 | lbs_remove_card(priv); |
291 | } | 277 | } |
292 | 278 | ||
279 | /* this is (apparently?) necessary for future usage of the device */ | ||
280 | lbs_prepare_and_send_command(priv, CMD_802_11_RESET, CMD_ACT_HALT, | ||
281 | 0, 0, NULL); | ||
282 | |||
293 | /* Unlink and free urb */ | 283 | /* Unlink and free urb */ |
294 | if_usb_free(cardp); | 284 | if_usb_free(cardp); |
295 | 285 | ||
@@ -1034,16 +1024,8 @@ static int __init if_usb_init_module(void) | |||
1034 | 1024 | ||
1035 | static void __exit if_usb_exit_module(void) | 1025 | static void __exit if_usb_exit_module(void) |
1036 | { | 1026 | { |
1037 | struct usb_card_rec *cardp, *cardp_temp; | ||
1038 | |||
1039 | lbs_deb_enter(LBS_DEB_MAIN); | 1027 | lbs_deb_enter(LBS_DEB_MAIN); |
1040 | 1028 | ||
1041 | list_for_each_entry_safe(cardp, cardp_temp, &usb_devices, list) { | ||
1042 | lbs_prepare_and_send_command(cardp->priv, CMD_802_11_RESET, | ||
1043 | CMD_ACT_HALT, 0, 0, NULL); | ||
1044 | } | ||
1045 | |||
1046 | /* API unregisters the driver from USB subsystem */ | ||
1047 | usb_deregister(&if_usb_driver); | 1029 | usb_deregister(&if_usb_driver); |
1048 | 1030 | ||
1049 | lbs_deb_leave(LBS_DEB_MAIN); | 1031 | lbs_deb_leave(LBS_DEB_MAIN); |
diff --git a/drivers/net/wireless/libertas/if_usb.h b/drivers/net/wireless/libertas/if_usb.h index 9b4230864c43..f53ddb251586 100644 --- a/drivers/net/wireless/libertas/if_usb.h +++ b/drivers/net/wireless/libertas/if_usb.h | |||
@@ -1,8 +1,6 @@ | |||
1 | #ifndef _LBS_IF_USB_H | 1 | #ifndef _LBS_IF_USB_H |
2 | #define _LBS_IF_USB_H | 2 | #define _LBS_IF_USB_H |
3 | 3 | ||
4 | #include <linux/list.h> | ||
5 | |||
6 | /** | 4 | /** |
7 | * This file contains definition for USB interface. | 5 | * This file contains definition for USB interface. |
8 | */ | 6 | */ |
@@ -44,7 +42,6 @@ struct read_cb_info { | |||
44 | 42 | ||
45 | /** USB card description structure*/ | 43 | /** USB card description structure*/ |
46 | struct usb_card_rec { | 44 | struct usb_card_rec { |
47 | struct list_head list; | ||
48 | struct net_device *eth_dev; | 45 | struct net_device *eth_dev; |
49 | struct usb_device *udev; | 46 | struct usb_device *udev; |
50 | struct urb *rx_urb, *tx_urb; | 47 | struct urb *rx_urb, *tx_urb; |