Lines Matching refs:sta
548 static struct sta_info *ieee80211_ibss_finish_sta(struct sta_info *sta) in ieee80211_ibss_finish_sta() argument
551 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_ibss_finish_sta()
554 memcpy(addr, sta->sta.addr, ETH_ALEN); in ieee80211_ibss_finish_sta()
558 sta_info_pre_move_state(sta, IEEE80211_STA_AUTH); in ieee80211_ibss_finish_sta()
559 sta_info_pre_move_state(sta, IEEE80211_STA_ASSOC); in ieee80211_ibss_finish_sta()
562 if (!sta->sdata->u.ibss.control_port) in ieee80211_ibss_finish_sta()
563 sta_info_pre_move_state(sta, IEEE80211_STA_AUTHORIZED); in ieee80211_ibss_finish_sta()
565 rate_control_rate_init(&sta->deflink); in ieee80211_ibss_finish_sta()
568 if (sta_info_insert_rcu(sta)) in ieee80211_ibss_finish_sta()
570 return sta; in ieee80211_ibss_finish_sta()
580 struct sta_info *sta; in ieee80211_ibss_add_sta() local
613 sta = sta_info_alloc(sdata, addr, GFP_KERNEL); in ieee80211_ibss_add_sta()
614 if (!sta) { in ieee80211_ibss_add_sta()
621 sta->sta.deflink.supp_rates[band] = supp_rates | in ieee80211_ibss_add_sta()
624 return ieee80211_ibss_finish_sta(sta); in ieee80211_ibss_add_sta()
631 struct sta_info *sta; in ieee80211_sta_active_ibss() local
637 list_for_each_entry_rcu(sta, &local->sta_list, list) { in ieee80211_sta_active_ibss()
638 unsigned long last_active = ieee80211_sta_last_active(sta, -1); in ieee80211_sta_active_ibss()
640 if (sta->sdata == sdata && in ieee80211_sta_active_ibss()
659 struct sta_info *sta; in ieee80211_ibss_disconnect() local
682 sta = list_first_entry(&ifibss->incomplete_stations, in ieee80211_ibss_disconnect()
684 list_del(&sta->list); in ieee80211_ibss_disconnect()
687 sta_info_free(local, sta); in ieee80211_ibss_disconnect()
961 struct sta_info *sta; in ieee80211_update_sta_info() local
979 sta = sta_info_get(sdata, mgmt->sa); in ieee80211_update_sta_info()
984 if (sta) { in ieee80211_update_sta_info()
987 prev_rates = sta->sta.deflink.supp_rates[band]; in ieee80211_update_sta_info()
989 sta->sta.deflink.supp_rates[band] = supp_rates | in ieee80211_update_sta_info()
991 if (sta->sta.deflink.supp_rates[band] != prev_rates) { in ieee80211_update_sta_info()
994 sta->sta.addr, prev_rates, in ieee80211_update_sta_info()
995 sta->sta.deflink.supp_rates[band]); in ieee80211_update_sta_info()
1000 sta = ieee80211_ibss_add_sta(sdata, mgmt->bssid, in ieee80211_update_sta_info()
1005 if (sta && !sta->sta.wme && in ieee80211_update_sta_info()
1008 sta->sta.wme = true; in ieee80211_update_sta_info()
1009 ieee80211_check_fast_xmit(sta); in ieee80211_update_sta_info()
1012 if (sta && elems->ht_operation && elems->ht_cap_elem && in ieee80211_update_sta_info()
1019 enum ieee80211_sta_rx_bandwidth bw = sta->sta.deflink.bandwidth; in ieee80211_update_sta_info()
1027 &sta->deflink); in ieee80211_update_sta_info()
1034 struct ieee80211_sta_vht_cap cap = sta->sta.deflink.vht_cap; in ieee80211_update_sta_info()
1045 &sta->deflink); in ieee80211_update_sta_info()
1046 if (memcmp(&cap, &sta->sta.deflink.vht_cap, sizeof(cap))) in ieee80211_update_sta_info()
1050 if (bw != sta->sta.deflink.bandwidth) in ieee80211_update_sta_info()
1058 if (sta && rates_updated) { in ieee80211_update_sta_info()
1060 u8 rx_nss = sta->sta.deflink.rx_nss; in ieee80211_update_sta_info()
1063 sta->sta.deflink.rx_nss = 0; in ieee80211_update_sta_info()
1064 rate_control_rate_init(&sta->deflink); in ieee80211_update_sta_info()
1065 if (sta->sta.deflink.rx_nss != rx_nss) in ieee80211_update_sta_info()
1068 drv_link_sta_rc_update(local, sdata, &sta->sta.deflink, in ieee80211_update_sta_info()
1175 struct sta_info *sta; in ieee80211_ibss_rx_no_sta() local
1205 sta = sta_info_alloc(sdata, addr, GFP_ATOMIC); in ieee80211_ibss_rx_no_sta()
1206 if (!sta) in ieee80211_ibss_rx_no_sta()
1211 sta->sta.deflink.supp_rates[band] = supp_rates | in ieee80211_ibss_rx_no_sta()
1215 list_add(&sta->list, &ifibss->incomplete_stations); in ieee80211_ibss_rx_no_sta()
1224 struct sta_info *sta, *tmp; in ieee80211_ibss_sta_expire() local
1230 list_for_each_entry_safe(sta, tmp, &local->sta_list, list) { in ieee80211_ibss_sta_expire()
1231 unsigned long last_active = ieee80211_sta_last_active(sta, -1); in ieee80211_ibss_sta_expire()
1233 if (sdata != sta->sdata) in ieee80211_ibss_sta_expire()
1238 sta->sta_state != IEEE80211_STA_AUTHORIZED)) { in ieee80211_ibss_sta_expire()
1241 sta_dbg(sta->sdata, "expiring inactive %sSTA %pM\n", in ieee80211_ibss_sta_expire()
1242 sta->sta_state != IEEE80211_STA_AUTHORIZED ? in ieee80211_ibss_sta_expire()
1243 "not authorized " : "", sta->sta.addr); in ieee80211_ibss_sta_expire()
1245 ieee80211_send_deauth_disassoc(sdata, sta->sta.addr, in ieee80211_ibss_sta_expire()
1250 WARN_ON(__sta_info_destroy(sta)); in ieee80211_ibss_sta_expire()
1637 struct sta_info *sta; in ieee80211_ibss_work() local
1649 sta = list_first_entry(&ifibss->incomplete_stations, in ieee80211_ibss_work()
1651 list_del(&sta->list); in ieee80211_ibss_work()
1654 ieee80211_ibss_finish_sta(sta); in ieee80211_ibss_work()