libertas: remaining hunks of saner shutdown
Marcelo Tosatti
mtosatti at redhat.unroutablecom
Mon Dec 11 15:18:31 EST 2006
Commit: 55cf1c4375aab7c5540078a096e9d82abea158af
Parent: 20832e32a7df8f8eafc6c65073c8f467696c5066
commit 55cf1c4375aab7c5540078a096e9d82abea158af
Author: Marcelo Tosatti <mtosatti at redhat.com>
AuthorDate: Mon Dec 11 15:59:46 2006 -0200
Commit: Marcelo Tosatti <mtosatti at redhat.com>
CommitDate: Mon Dec 11 15:59:46 2006 -0200
libertas: remaining hunks of saner shutdown
Subject says it all.
Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
---
drivers/net/wireless/libertas/if_usb.c | 6 +++---
drivers/net/wireless/libertas/wlan_scan.c | 7 +++++--
drivers/net/wireless/libertas/wlan_thread.h | 2 ++
3 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
index 2722490..37cd820 100644
--- a/drivers/net/wireless/libertas/if_usb.c
+++ b/drivers/net/wireless/libertas/if_usb.c
@@ -351,13 +351,13 @@ static void if_usb_disconnect(struct usb
Adapter->SurpriseRemoved = 1;
}
- /* Unlink and free urb */
- if_usb_free(cardp);
-
/* card is removed and we can call wlan_remove_card */
dprintk(1, "call remove card\n");
cardp->remove(cardp);
+ /* Unlink and free urb */
+ if_usb_free(cardp);
+
usb_set_intfdata(intf, NULL);
usb_put_dev(interface_to_usbdev(intf));
diff --git a/drivers/net/wireless/libertas/wlan_scan.c b/drivers/net/wireless/libertas/wlan_scan.c
index d8bb118..020aa7f 100644
--- a/drivers/net/wireless/libertas/wlan_scan.c
+++ b/drivers/net/wireless/libertas/wlan_scan.c
@@ -1431,6 +1431,8 @@ int libertas_find_best_network_SSID(wlan
memset(pSSID, 0, sizeof(struct WLAN_802_11_SSID));
wlan_scan_networks(priv, NULL);
+ if (Adapter->SurpriseRemoved)
+ return WLAN_STATUS_FAILURE;
wait_event_interruptible(Adapter->cmd_pending, !Adapter->is_cmd_pending);
i = libertas_find_best_SSID_in_list(Adapter, preferred_mode);
@@ -1524,10 +1526,9 @@ int libertas_send_specific_SSID_scan(wla
scanCfg.keepPreviousScan = keepPreviousScan;
wlan_scan_networks(priv, &scanCfg);
- wait_event_interruptible(Adapter->cmd_pending, !Adapter->is_cmd_pending);
-
if (Adapter->SurpriseRemoved)
return WLAN_STATUS_FAILURE;
+ wait_event_interruptible(Adapter->cmd_pending, !Adapter->is_cmd_pending);
LEAVE();
return WLAN_STATUS_SUCCESS;
@@ -1557,6 +1558,8 @@ int libertas_send_specific_BSSID_scan(wl
scanCfg.keepPreviousScan = keepPreviousScan;
wlan_scan_networks(priv, &scanCfg);
+ if (priv->adapter->SurpriseRemoved)
+ return WLAN_STATUS_FAILURE;
wait_event_interruptible(priv->adapter->cmd_pending,
!priv->adapter->is_cmd_pending);
diff --git a/drivers/net/wireless/libertas/wlan_thread.h b/drivers/net/wireless/libertas/wlan_thread.h
index d91d739..c3c0597 100644
--- a/drivers/net/wireless/libertas/wlan_thread.h
+++ b/drivers/net/wireless/libertas/wlan_thread.h
@@ -42,6 +42,8 @@ static inline void wlan_deactivate_threa
{
ENTER();
+ thr->pid = 0;
+
LEAVE();
}
More information about the Commits-kernel
mailing list