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