Browse Source

wlcore: clear roc_vif on iface removal

When removing an interface currently performing a ROC operation, clear
the current ROC state. This is useful especially during recovery and
keeps mac80211 in sync to our state.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Arik Nemtsov 12 years ago
parent
commit
5d979f3517
1 changed files with 5 additions and 0 deletions
  1. 5 0
      drivers/net/wireless/ti/wlcore/main.c

+ 5 - 0
drivers/net/wireless/ti/wlcore/main.c

@@ -2414,6 +2414,11 @@ static void __wl1271_op_remove_interface(struct wl1271 *wl,
 		wl->sched_vif = NULL;
 	}
 
+	if (wl->roc_vif == vif) {
+		wl->roc_vif = NULL;
+		ieee80211_remain_on_channel_expired(wl->hw);
+	}
+
 	if (!test_bit(WL1271_FLAG_RECOVERY_IN_PROGRESS, &wl->flags)) {
 		/* disable active roles */
 		ret = wl1271_ps_elp_wakeup(wl);