@ -2273,7 +2273,6 @@ int __ieee80211_request_smps_ap(struct ieee80211_sub_if_data *sdata,
{
struct sta_info * sta ;
enum ieee80211_smps_mode old_req ;
int i ;
if ( WARN_ON_ONCE ( sdata - > vif . type ! = NL80211_IFTYPE_AP ) )
return - EINVAL ;
@ -2301,48 +2300,40 @@ int __ieee80211_request_smps_ap(struct ieee80211_sub_if_data *sdata,
smps_mode , atomic_read ( & sdata - > u . ap . num_mcast_sta ) ) ;
mutex_lock ( & sdata - > local - > sta_mtx ) ;
for ( i = 0 ; i < STA_HASH_SIZE ; i + + ) {
for ( sta = rcu_dereference_protected ( sdata - > local - > sta_hash [ i ] ,
lockdep_is_held ( & sdata - > local - > sta_mtx ) ) ;
sta ;
sta = rcu_dereference_protected ( sta - > hnext ,
lockdep_is_held ( & sdata - > local - > sta_mtx ) ) ) {
/*
* Only stations associated to our AP and
* associated VLANs
*/
if ( sta - > sdata - > bss ! = & sdata - > u . ap )
continue ;
list_for_each_entry ( sta , & sdata - > local - > sta_list , list ) {
/*
* Only stations associated to our AP and
* associated VLANs
*/
if ( sta - > sdata - > bss ! = & sdata - > u . ap )
continue ;
/* This station doesn't support MIMO - skip it */
if ( sta_info_tx_streams ( sta ) = = 1 )
continue ;
/* This station doesn't support MIMO - skip it */
if ( sta_info_tx_streams ( sta ) = = 1 )
continue ;
/*
* Don ' t wake up a STA just to send the action frame
* unless we are getting more restrictive .
*/
if ( test_sta_flag ( sta , WLAN_STA_PS_STA ) & &
! ieee80211_smps_is_restrictive ( sta - > known_smps_mode ,
smps_mode ) ) {
ht_dbg ( sdata ,
" Won't send SMPS to sleeping STA %pM \n " ,
sta - > sta . addr ) ;
continue ;
}
/*
* Don ' t wake up a STA just to send the action frame
* unless we are getting more restrictive .
*/
if ( test_sta_flag ( sta , WLAN_STA_PS_STA ) & &
! ieee80211_smps_is_restrictive ( sta - > known_smps_mode ,
smps_mode ) ) {
ht_dbg ( sdata , " Won't send SMPS to sleeping STA %pM \n " ,
sta - > sta . addr ) ;
continue ;
}
/*
* If the STA is not authorized , wait until it gets
* authorized and the action frame will be sent then .
*/
if ( ! test_sta_flag ( sta , WLAN_STA_AUTHORIZED ) )
continue ;
/*
* If the STA is not authorized , wait until it gets
* authorized and the action frame will be sent then .
*/
if ( ! test_sta_flag ( sta , WLAN_STA_AUTHORIZED ) )
continue ;
ht_dbg ( sdata , " Sending SMPS to %pM \n " , sta - > sta . addr ) ;
ieee80211_send_smps_action ( sdata , smps_mode ,
sta - > sta . addr ,
sdata - > vif . bss_conf . bssid ) ;
}
ht_dbg ( sdata , " Sending SMPS to %pM \n " , sta - > sta . addr ) ;
ieee80211_send_smps_action ( sdata , smps_mode , sta - > sta . addr ,
sdata - > vif . bss_conf . bssid ) ;
}
mutex_unlock ( & sdata - > local - > sta_mtx ) ;