Lines Matching refs:sta
576 static struct sta_info *ieee80211_ibss_finish_sta(struct sta_info *sta) in ieee80211_ibss_finish_sta() argument
579 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_ibss_finish_sta()
582 memcpy(addr, sta->sta.addr, ETH_ALEN); in ieee80211_ibss_finish_sta()
586 sta_info_pre_move_state(sta, IEEE80211_STA_AUTH); in ieee80211_ibss_finish_sta()
587 sta_info_pre_move_state(sta, IEEE80211_STA_ASSOC); in ieee80211_ibss_finish_sta()
590 if (!sta->sdata->u.ibss.control_port) in ieee80211_ibss_finish_sta()
591 sta_info_pre_move_state(sta, IEEE80211_STA_AUTHORIZED); in ieee80211_ibss_finish_sta()
593 rate_control_rate_init(sta); in ieee80211_ibss_finish_sta()
596 if (sta_info_insert_rcu(sta)) in ieee80211_ibss_finish_sta()
598 return sta; in ieee80211_ibss_finish_sta()
608 struct sta_info *sta; in ieee80211_ibss_add_sta() local
643 sta = sta_info_alloc(sdata, addr, GFP_KERNEL); in ieee80211_ibss_add_sta()
644 if (!sta) { in ieee80211_ibss_add_sta()
649 sta->last_rx = jiffies; in ieee80211_ibss_add_sta()
653 sta->sta.supp_rates[band] = supp_rates | in ieee80211_ibss_add_sta()
656 return ieee80211_ibss_finish_sta(sta); in ieee80211_ibss_add_sta()
663 struct sta_info *sta; in ieee80211_sta_active_ibss() local
669 list_for_each_entry_rcu(sta, &local->sta_list, list) { in ieee80211_sta_active_ibss()
670 if (sta->sdata == sdata && in ieee80211_sta_active_ibss()
671 time_after(sta->last_rx + IEEE80211_IBSS_MERGE_INTERVAL, in ieee80211_sta_active_ibss()
689 struct sta_info *sta; in ieee80211_ibss_disconnect() local
710 sta = list_first_entry(&ifibss->incomplete_stations, in ieee80211_ibss_disconnect()
712 list_del(&sta->list); in ieee80211_ibss_disconnect()
715 sta_info_free(local, sta); in ieee80211_ibss_disconnect()
988 struct sta_info *sta; in ieee80211_update_sta_info() local
1003 sta = sta_info_get(sdata, mgmt->sa); in ieee80211_update_sta_info()
1008 if (sta) { in ieee80211_update_sta_info()
1011 prev_rates = sta->sta.supp_rates[band]; in ieee80211_update_sta_info()
1019 sta->sta.supp_rates[band] = supp_rates | in ieee80211_update_sta_info()
1021 if (sta->sta.supp_rates[band] != prev_rates) { in ieee80211_update_sta_info()
1024 sta->sta.addr, prev_rates, in ieee80211_update_sta_info()
1025 sta->sta.supp_rates[band]); in ieee80211_update_sta_info()
1030 sta = ieee80211_ibss_add_sta(sdata, mgmt->bssid, in ieee80211_update_sta_info()
1035 if (sta && elems->wmm_info && local->hw.queues >= IEEE80211_NUM_ACS) in ieee80211_update_sta_info()
1036 sta->sta.wme = true; in ieee80211_update_sta_info()
1038 if (sta && elems->ht_operation && elems->ht_cap_elem && in ieee80211_update_sta_info()
1045 enum ieee80211_sta_rx_bandwidth bw = sta->sta.bandwidth; in ieee80211_update_sta_info()
1054 sta); in ieee80211_update_sta_info()
1061 struct ieee80211_sta_vht_cap cap = sta->sta.vht_cap; in ieee80211_update_sta_info()
1068 &cap_ie, sta); in ieee80211_update_sta_info()
1069 if (memcmp(&cap, &sta->sta.vht_cap, sizeof(cap))) in ieee80211_update_sta_info()
1073 if (bw != sta->sta.bandwidth) in ieee80211_update_sta_info()
1081 if (sta && rates_updated) { in ieee80211_update_sta_info()
1083 u8 rx_nss = sta->sta.rx_nss; in ieee80211_update_sta_info()
1086 sta->sta.rx_nss = 0; in ieee80211_update_sta_info()
1087 rate_control_rate_init(sta); in ieee80211_update_sta_info()
1088 if (sta->sta.rx_nss != rx_nss) in ieee80211_update_sta_info()
1091 drv_sta_rc_update(local, sdata, &sta->sta, changed); in ieee80211_update_sta_info()
1198 struct sta_info *sta; in ieee80211_ibss_rx_no_sta() local
1230 sta = sta_info_alloc(sdata, addr, GFP_ATOMIC); in ieee80211_ibss_rx_no_sta()
1231 if (!sta) in ieee80211_ibss_rx_no_sta()
1234 sta->last_rx = jiffies; in ieee80211_ibss_rx_no_sta()
1238 sta->sta.supp_rates[band] = supp_rates | in ieee80211_ibss_rx_no_sta()
1242 list_add(&sta->list, &ifibss->incomplete_stations); in ieee80211_ibss_rx_no_sta()
1250 struct sta_info *sta, *tmp; in ieee80211_ibss_sta_expire() local
1256 list_for_each_entry_safe(sta, tmp, &local->sta_list, list) { in ieee80211_ibss_sta_expire()
1257 if (sdata != sta->sdata) in ieee80211_ibss_sta_expire()
1260 if (time_after(jiffies, sta->last_rx + exp_time) || in ieee80211_ibss_sta_expire()
1261 (time_after(jiffies, sta->last_rx + exp_rsn_time) && in ieee80211_ibss_sta_expire()
1262 sta->sta_state != IEEE80211_STA_AUTHORIZED)) { in ieee80211_ibss_sta_expire()
1263 sta_dbg(sta->sdata, "expiring inactive %sSTA %pM\n", in ieee80211_ibss_sta_expire()
1264 sta->sta_state != IEEE80211_STA_AUTHORIZED ? in ieee80211_ibss_sta_expire()
1265 "not authorized " : "", sta->sta.addr); in ieee80211_ibss_sta_expire()
1267 WARN_ON(__sta_info_destroy(sta)); in ieee80211_ibss_sta_expire()
1657 struct sta_info *sta; in ieee80211_ibss_work() local
1671 sta = list_first_entry(&ifibss->incomplete_stations, in ieee80211_ibss_work()
1673 list_del(&sta->list); in ieee80211_ibss_work()
1676 ieee80211_ibss_finish_sta(sta); in ieee80211_ibss_work()