wlcore: cancel recovery_work on stop() instead of remove_interface()
recovery_work should be cancelled when stopping the device, not when removing an interface (this is probably a leftover from the single-role days) Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <luca@coelho.fi>
This commit is contained in:
parent
9ae48aeaa3
commit
6dbc5fc259
1 changed files with 2 additions and 4 deletions
|
@ -1857,6 +1857,8 @@ static void wlcore_op_stop_locked(struct wl1271 *wl)
|
||||||
mutex_unlock(&wl->mutex);
|
mutex_unlock(&wl->mutex);
|
||||||
|
|
||||||
wlcore_synchronize_interrupts(wl);
|
wlcore_synchronize_interrupts(wl);
|
||||||
|
if (!test_bit(WL1271_FLAG_RECOVERY_IN_PROGRESS, &wl->flags))
|
||||||
|
cancel_work_sync(&wl->recovery_work);
|
||||||
wl1271_flush_deferred_work(wl);
|
wl1271_flush_deferred_work(wl);
|
||||||
cancel_delayed_work_sync(&wl->scan_complete_work);
|
cancel_delayed_work_sync(&wl->scan_complete_work);
|
||||||
cancel_work_sync(&wl->netstack_work);
|
cancel_work_sync(&wl->netstack_work);
|
||||||
|
@ -2437,7 +2439,6 @@ static void wl1271_op_remove_interface(struct ieee80211_hw *hw,
|
||||||
struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif);
|
struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif);
|
||||||
struct wl12xx_vif *iter;
|
struct wl12xx_vif *iter;
|
||||||
struct vif_counter_data vif_count;
|
struct vif_counter_data vif_count;
|
||||||
bool cancel_recovery = true;
|
|
||||||
|
|
||||||
wl12xx_get_vif_count(hw, vif, &vif_count);
|
wl12xx_get_vif_count(hw, vif, &vif_count);
|
||||||
mutex_lock(&wl->mutex);
|
mutex_lock(&wl->mutex);
|
||||||
|
@ -2462,12 +2463,9 @@ static void wl1271_op_remove_interface(struct ieee80211_hw *hw,
|
||||||
wl12xx_force_active_psm(wl);
|
wl12xx_force_active_psm(wl);
|
||||||
set_bit(WL1271_FLAG_INTENDED_FW_RECOVERY, &wl->flags);
|
set_bit(WL1271_FLAG_INTENDED_FW_RECOVERY, &wl->flags);
|
||||||
wl12xx_queue_recovery_work(wl);
|
wl12xx_queue_recovery_work(wl);
|
||||||
cancel_recovery = false;
|
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
mutex_unlock(&wl->mutex);
|
mutex_unlock(&wl->mutex);
|
||||||
if (cancel_recovery)
|
|
||||||
cancel_work_sync(&wl->recovery_work);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wl12xx_op_change_interface(struct ieee80211_hw *hw,
|
static int wl12xx_op_change_interface(struct ieee80211_hw *hw,
|
||||||
|
|
Loading…
Reference in a new issue