Skip to content

Commit

Permalink
wl1271: Separate interface removal to another function
Browse files Browse the repository at this point in the history
Do this so the interface removal can be triggered from an upcoming hardware
failure recovery mechanism.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Reviewed-by: Teemu Paasikivi <ext-teemu.3.paasikivi@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
  • Loading branch information
Juuso Oikarinen authored and Luciano Coelho committed Sep 28, 2010
1 parent 8c7f4f3 commit 52a2a37
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
17 changes: 11 additions & 6 deletions drivers/net/wireless/wl12xx/wl1271_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -960,15 +960,10 @@ static int wl1271_op_add_interface(struct ieee80211_hw *hw,
return ret;
}

static void wl1271_op_remove_interface(struct ieee80211_hw *hw,
struct ieee80211_vif *vif)
static void __wl1271_op_remove_interface(struct wl1271 *wl)
{
struct wl1271 *wl = hw->priv;
int i;

cancel_work_sync(&wl->scan_complete_work);

mutex_lock(&wl->mutex);
wl1271_debug(DEBUG_MAC80211, "mac80211 remove interface");

wl1271_info("down");
Expand All @@ -994,6 +989,7 @@ static void wl1271_op_remove_interface(struct ieee80211_hw *hw,

mutex_unlock(&wl->mutex);

cancel_work_sync(&wl->scan_complete_work);
cancel_work_sync(&wl->irq_work);
cancel_work_sync(&wl->tx_work);
cancel_delayed_work_sync(&wl->pspoll_work);
Expand Down Expand Up @@ -1039,7 +1035,16 @@ static void wl1271_op_remove_interface(struct ieee80211_hw *hw,
wl->tx_res_if = NULL;
kfree(wl->target_mem_map);
wl->target_mem_map = NULL;
}

static void wl1271_op_remove_interface(struct ieee80211_hw *hw,
struct ieee80211_vif *vif)
{
struct wl1271 *wl = hw->priv;

mutex_lock(&wl->mutex);
WARN_ON(wl->vif != vif);
__wl1271_op_remove_interface(wl);
mutex_unlock(&wl->mutex);
}

Expand Down
6 changes: 6 additions & 0 deletions drivers/net/wireless/wl12xx/wl1271_scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ void wl1271_scan_complete_work(struct work_struct *work)
wl1271_debug(DEBUG_SCAN, "Scanning complete");

mutex_lock(&wl->mutex);

if (wl->scan.state == WL1271_SCAN_STATE_IDLE) {
mutex_unlock(&wl->mutex);
return;
}

wl->scan.state = WL1271_SCAN_STATE_IDLE;
kfree(wl->scan.scanned_ch);
wl->scan.scanned_ch = NULL;
Expand Down

0 comments on commit 52a2a37

Please sign in to comment.