@ -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 :