|
@@ -5177,10 +5177,11 @@ out:
|
|
|
}
|
|
|
|
|
|
static void wl12xx_op_channel_switch(struct ieee80211_hw *hw,
|
|
|
+ struct ieee80211_vif *vif,
|
|
|
struct ieee80211_channel_switch *ch_switch)
|
|
|
{
|
|
|
struct wl1271 *wl = hw->priv;
|
|
|
- struct wl12xx_vif *wlvif;
|
|
|
+ struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif);
|
|
|
int ret;
|
|
|
|
|
|
wl1271_debug(DEBUG_MAC80211, "mac80211 channel switch");
|
|
@@ -5190,14 +5191,8 @@ static void wl12xx_op_channel_switch(struct ieee80211_hw *hw,
|
|
|
mutex_lock(&wl->mutex);
|
|
|
|
|
|
if (unlikely(wl->state == WLCORE_STATE_OFF)) {
|
|
|
- wl12xx_for_each_wlvif_sta(wl, wlvif) {
|
|
|
- struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);
|
|
|
-
|
|
|
- if (!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags))
|
|
|
- continue;
|
|
|
-
|
|
|
+ if (test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags))
|
|
|
ieee80211_chswitch_done(vif, false);
|
|
|
- }
|
|
|
goto out;
|
|
|
} else if (unlikely(wl->state != WLCORE_STATE_ON)) {
|
|
|
goto out;
|
|
@@ -5208,11 +5203,9 @@ static void wl12xx_op_channel_switch(struct ieee80211_hw *hw,
|
|
|
goto out;
|
|
|
|
|
|
/* TODO: change mac80211 to pass vif as param */
|
|
|
- wl12xx_for_each_wlvif_sta(wl, wlvif) {
|
|
|
- unsigned long delay_usec;
|
|
|
|
|
|
- if (!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags))
|
|
|
- continue;
|
|
|
+ if (test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags)) {
|
|
|
+ unsigned long delay_usec;
|
|
|
|
|
|
ret = wl->ops->channel_switch(wl, wlvif, ch_switch);
|
|
|
if (ret)
|
|
@@ -5222,10 +5215,10 @@ static void wl12xx_op_channel_switch(struct ieee80211_hw *hw,
|
|
|
|
|
|
/* indicate failure 5 seconds after channel switch time */
|
|
|
delay_usec = ieee80211_tu_to_usec(wlvif->beacon_int) *
|
|
|
- ch_switch->count;
|
|
|
+ ch_switch->count;
|
|
|
ieee80211_queue_delayed_work(hw, &wlvif->channel_switch_work,
|
|
|
- usecs_to_jiffies(delay_usec) +
|
|
|
- msecs_to_jiffies(5000));
|
|
|
+ usecs_to_jiffies(delay_usec) +
|
|
|
+ msecs_to_jiffies(5000));
|
|
|
}
|
|
|
|
|
|
out_sleep:
|