Lines Matching refs:sta
578 static struct sta_info *ieee80211_ibss_finish_sta(struct sta_info *sta) in ieee80211_ibss_finish_sta() argument
581 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_ibss_finish_sta()
584 memcpy(addr, sta->sta.addr, ETH_ALEN); in ieee80211_ibss_finish_sta()
588 sta_info_pre_move_state(sta, IEEE80211_STA_AUTH); in ieee80211_ibss_finish_sta()
589 sta_info_pre_move_state(sta, IEEE80211_STA_ASSOC); in ieee80211_ibss_finish_sta()
592 if (!sta->sdata->u.ibss.control_port) in ieee80211_ibss_finish_sta()
593 sta_info_pre_move_state(sta, IEEE80211_STA_AUTHORIZED); in ieee80211_ibss_finish_sta()
595 rate_control_rate_init(sta); in ieee80211_ibss_finish_sta()
598 if (sta_info_insert_rcu(sta)) in ieee80211_ibss_finish_sta()
600 return sta; in ieee80211_ibss_finish_sta()
610 struct sta_info *sta; in ieee80211_ibss_add_sta() local
645 sta = sta_info_alloc(sdata, addr, GFP_KERNEL); in ieee80211_ibss_add_sta()
646 if (!sta) { in ieee80211_ibss_add_sta()
651 sta->rx_stats.last_rx = jiffies; in ieee80211_ibss_add_sta()
655 sta->sta.supp_rates[band] = supp_rates | in ieee80211_ibss_add_sta()
658 return ieee80211_ibss_finish_sta(sta); in ieee80211_ibss_add_sta()
665 struct sta_info *sta; in ieee80211_sta_active_ibss() local
671 list_for_each_entry_rcu(sta, &local->sta_list, list) { in ieee80211_sta_active_ibss()
672 if (sta->sdata == sdata && in ieee80211_sta_active_ibss()
673 time_after(sta->rx_stats.last_rx + in ieee80211_sta_active_ibss()
692 struct sta_info *sta; in ieee80211_ibss_disconnect() local
713 sta = list_first_entry(&ifibss->incomplete_stations, in ieee80211_ibss_disconnect()
715 list_del(&sta->list); in ieee80211_ibss_disconnect()
718 sta_info_free(local, sta); in ieee80211_ibss_disconnect()
991 struct sta_info *sta; in ieee80211_update_sta_info() local
1006 sta = sta_info_get(sdata, mgmt->sa); in ieee80211_update_sta_info()
1011 if (sta) { in ieee80211_update_sta_info()
1014 prev_rates = sta->sta.supp_rates[band]; in ieee80211_update_sta_info()
1022 sta->sta.supp_rates[band] = supp_rates | in ieee80211_update_sta_info()
1024 if (sta->sta.supp_rates[band] != prev_rates) { in ieee80211_update_sta_info()
1027 sta->sta.addr, prev_rates, in ieee80211_update_sta_info()
1028 sta->sta.supp_rates[band]); in ieee80211_update_sta_info()
1033 sta = ieee80211_ibss_add_sta(sdata, mgmt->bssid, in ieee80211_update_sta_info()
1038 if (sta && !sta->sta.wme && in ieee80211_update_sta_info()
1040 sta->sta.wme = true; in ieee80211_update_sta_info()
1041 ieee80211_check_fast_xmit(sta); in ieee80211_update_sta_info()
1044 if (sta && elems->ht_operation && elems->ht_cap_elem && in ieee80211_update_sta_info()
1051 enum ieee80211_sta_rx_bandwidth bw = sta->sta.bandwidth; in ieee80211_update_sta_info()
1060 sta); in ieee80211_update_sta_info()
1067 struct ieee80211_sta_vht_cap cap = sta->sta.vht_cap; in ieee80211_update_sta_info()
1074 &cap_ie, sta); in ieee80211_update_sta_info()
1075 if (memcmp(&cap, &sta->sta.vht_cap, sizeof(cap))) in ieee80211_update_sta_info()
1079 if (bw != sta->sta.bandwidth) in ieee80211_update_sta_info()
1087 if (sta && rates_updated) { in ieee80211_update_sta_info()
1089 u8 rx_nss = sta->sta.rx_nss; in ieee80211_update_sta_info()
1092 sta->sta.rx_nss = 0; in ieee80211_update_sta_info()
1093 rate_control_rate_init(sta); in ieee80211_update_sta_info()
1094 if (sta->sta.rx_nss != rx_nss) in ieee80211_update_sta_info()
1097 drv_sta_rc_update(local, sdata, &sta->sta, changed); in ieee80211_update_sta_info()
1204 struct sta_info *sta; in ieee80211_ibss_rx_no_sta() local
1236 sta = sta_info_alloc(sdata, addr, GFP_ATOMIC); in ieee80211_ibss_rx_no_sta()
1237 if (!sta) in ieee80211_ibss_rx_no_sta()
1240 sta->rx_stats.last_rx = jiffies; in ieee80211_ibss_rx_no_sta()
1244 sta->sta.supp_rates[band] = supp_rates | in ieee80211_ibss_rx_no_sta()
1248 list_add(&sta->list, &ifibss->incomplete_stations); in ieee80211_ibss_rx_no_sta()
1256 struct sta_info *sta, *tmp; in ieee80211_ibss_sta_expire() local
1262 list_for_each_entry_safe(sta, tmp, &local->sta_list, list) { in ieee80211_ibss_sta_expire()
1263 if (sdata != sta->sdata) in ieee80211_ibss_sta_expire()
1266 if (time_after(jiffies, sta->rx_stats.last_rx + exp_time) || in ieee80211_ibss_sta_expire()
1267 (time_after(jiffies, sta->rx_stats.last_rx + exp_rsn) && in ieee80211_ibss_sta_expire()
1268 sta->sta_state != IEEE80211_STA_AUTHORIZED)) { in ieee80211_ibss_sta_expire()
1269 sta_dbg(sta->sdata, "expiring inactive %sSTA %pM\n", in ieee80211_ibss_sta_expire()
1270 sta->sta_state != IEEE80211_STA_AUTHORIZED ? in ieee80211_ibss_sta_expire()
1271 "not authorized " : "", sta->sta.addr); in ieee80211_ibss_sta_expire()
1273 WARN_ON(__sta_info_destroy(sta)); in ieee80211_ibss_sta_expire()
1670 struct sta_info *sta; in ieee80211_ibss_work() local
1684 sta = list_first_entry(&ifibss->incomplete_stations, in ieee80211_ibss_work()
1686 list_del(&sta->list); in ieee80211_ibss_work()
1689 ieee80211_ibss_finish_sta(sta); in ieee80211_ibss_work()