Lines Matching refs:sta

70 		RCU_INIT_POINTER(sdata->u.vlan.sta, NULL);  in ieee80211_change_iface()
149 struct sta_info *sta = NULL; in ieee80211_add_key() local
192 sta = sta_info_get(sdata, mac_addr); in ieee80211_add_key()
194 sta = sta_info_get_bss(sdata, mac_addr); in ieee80211_add_key()
205 if (!sta || !test_sta_flag(sta, WLAN_STA_ASSOC)) { in ieee80211_add_key()
220 if (key->sta && test_sta_flag(key->sta, WLAN_STA_MFP)) in ieee80211_add_key()
245 if (sta) in ieee80211_add_key()
246 sta->cipher_scheme = cs; in ieee80211_add_key()
248 err = ieee80211_key_link(key, sdata, sta); in ieee80211_add_key()
261 struct sta_info *sta; in ieee80211_del_key() local
271 sta = sta_info_get_bss(sdata, mac_addr); in ieee80211_del_key()
272 if (!sta) in ieee80211_del_key()
276 key = key_mtx_dereference(local, sta->ptk[key_idx]); in ieee80211_del_key()
278 key = key_mtx_dereference(local, sta->gtk[key_idx]); in ieee80211_del_key()
304 struct sta_info *sta = NULL; in ieee80211_get_key() local
318 sta = sta_info_get_bss(sdata, mac_addr); in ieee80211_get_key()
319 if (!sta) in ieee80211_get_key()
323 key = rcu_dereference(sta->ptk[key_idx]); in ieee80211_get_key()
326 key = rcu_dereference(sta->gtk[key_idx]); in ieee80211_get_key()
440 void sta_set_rate_info_tx(struct sta_info *sta, in sta_set_rate_info_tx() argument
454 int shift = ieee80211_vif_get_shift(&sta->sdata->vif); in sta_set_rate_info_tx()
457 sband = sta->local->hw.wiphy->bands[ in sta_set_rate_info_tx()
458 ieee80211_get_sdata_band(sta->sdata)]; in sta_set_rate_info_tx()
474 void sta_set_rate_info_rx(struct sta_info *sta, struct rate_info *rinfo) in sta_set_rate_info_rx() argument
478 if (sta->last_rx_rate_flag & RX_FLAG_HT) { in sta_set_rate_info_rx()
480 rinfo->mcs = sta->last_rx_rate_idx; in sta_set_rate_info_rx()
481 } else if (sta->last_rx_rate_flag & RX_FLAG_VHT) { in sta_set_rate_info_rx()
483 rinfo->nss = sta->last_rx_rate_vht_nss; in sta_set_rate_info_rx()
484 rinfo->mcs = sta->last_rx_rate_idx; in sta_set_rate_info_rx()
487 int shift = ieee80211_vif_get_shift(&sta->sdata->vif); in sta_set_rate_info_rx()
490 sband = sta->local->hw.wiphy->bands[ in sta_set_rate_info_rx()
491 ieee80211_get_sdata_band(sta->sdata)]; in sta_set_rate_info_rx()
492 brate = sband->bitrates[sta->last_rx_rate_idx].bitrate; in sta_set_rate_info_rx()
496 if (sta->last_rx_rate_flag & RX_FLAG_SHORT_GI) in sta_set_rate_info_rx()
499 if (sta->last_rx_rate_flag & RX_FLAG_5MHZ) in sta_set_rate_info_rx()
501 else if (sta->last_rx_rate_flag & RX_FLAG_10MHZ) in sta_set_rate_info_rx()
503 else if (sta->last_rx_rate_flag & RX_FLAG_40MHZ) in sta_set_rate_info_rx()
505 else if (sta->last_rx_rate_vht_flag & RX_VHT_FLAG_80MHZ) in sta_set_rate_info_rx()
507 else if (sta->last_rx_rate_vht_flag & RX_VHT_FLAG_160MHZ) in sta_set_rate_info_rx()
518 struct sta_info *sta; in ieee80211_dump_station() local
523 sta = sta_info_get_by_idx(sdata, idx); in ieee80211_dump_station()
524 if (sta) { in ieee80211_dump_station()
526 memcpy(mac, sta->sta.addr, ETH_ALEN); in ieee80211_dump_station()
527 sta_set_sinfo(sta, sinfo); in ieee80211_dump_station()
548 struct sta_info *sta; in ieee80211_get_station() local
553 sta = sta_info_get_bss(sdata, mac); in ieee80211_get_station()
554 if (sta) { in ieee80211_get_station()
556 sta_set_sinfo(sta, sinfo); in ieee80211_get_station()
931 static void ieee80211_send_layer2_update(struct sta_info *sta) in ieee80211_send_layer2_update() argument
948 memcpy(msg->sa, sta->sta.addr, ETH_ALEN); in ieee80211_send_layer2_update()
958 skb->dev = sta->sdata->dev; in ieee80211_send_layer2_update()
959 skb->protocol = eth_type_trans(skb, sta->sdata->dev); in ieee80211_send_layer2_update()
965 struct sta_info *sta, in sta_apply_auth_flags() argument
972 !test_sta_flag(sta, WLAN_STA_AUTH)) { in sta_apply_auth_flags()
973 ret = sta_info_move_state(sta, IEEE80211_STA_AUTH); in sta_apply_auth_flags()
980 !test_sta_flag(sta, WLAN_STA_ASSOC)) { in sta_apply_auth_flags()
986 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER)) in sta_apply_auth_flags()
987 rate_control_rate_init(sta); in sta_apply_auth_flags()
989 ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC); in sta_apply_auth_flags()
996 ret = sta_info_move_state(sta, IEEE80211_STA_AUTHORIZED); in sta_apply_auth_flags()
997 else if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) in sta_apply_auth_flags()
998 ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC); in sta_apply_auth_flags()
1007 test_sta_flag(sta, WLAN_STA_ASSOC)) { in sta_apply_auth_flags()
1008 ret = sta_info_move_state(sta, IEEE80211_STA_AUTH); in sta_apply_auth_flags()
1015 test_sta_flag(sta, WLAN_STA_AUTH)) { in sta_apply_auth_flags()
1016 ret = sta_info_move_state(sta, IEEE80211_STA_NONE); in sta_apply_auth_flags()
1025 struct sta_info *sta, in sta_apply_parameters() argument
1030 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_apply_parameters()
1048 } else if (test_sta_flag(sta, WLAN_STA_TDLS_PEER)) { in sta_apply_parameters()
1064 sta->sta.wme = set & BIT(NL80211_STA_FLAG_WME); in sta_apply_parameters()
1067 if (!test_sta_flag(sta, WLAN_STA_TDLS_PEER)) { in sta_apply_parameters()
1068 ret = sta_apply_auth_flags(local, sta, mask, set); in sta_apply_parameters()
1075 set_sta_flag(sta, WLAN_STA_SHORT_PREAMBLE); in sta_apply_parameters()
1077 clear_sta_flag(sta, WLAN_STA_SHORT_PREAMBLE); in sta_apply_parameters()
1081 sta->sta.mfp = !!(set & BIT(NL80211_STA_FLAG_MFP)); in sta_apply_parameters()
1083 set_sta_flag(sta, WLAN_STA_MFP); in sta_apply_parameters()
1085 clear_sta_flag(sta, WLAN_STA_MFP); in sta_apply_parameters()
1090 set_sta_flag(sta, WLAN_STA_TDLS_PEER); in sta_apply_parameters()
1092 clear_sta_flag(sta, WLAN_STA_TDLS_PEER); in sta_apply_parameters()
1096 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) && in sta_apply_parameters()
1100 set_sta_flag(sta, WLAN_STA_TDLS_CHAN_SWITCH); in sta_apply_parameters()
1103 sta->sta.uapsd_queues = params->uapsd_queues; in sta_apply_parameters()
1104 sta->sta.max_sp = params->max_sp; in sta_apply_parameters()
1112 sta->sta.aid = params->aid; in sta_apply_parameters()
1123 sta->listen_interval = params->listen_interval; in sta_apply_parameters()
1129 &sta->sta.supp_rates[band]); in sta_apply_parameters()
1134 params->ht_capa, sta); in sta_apply_parameters()
1138 params->vht_capa, sta); in sta_apply_parameters()
1144 __ieee80211_vht_handle_opmode(sdata, sta, in sta_apply_parameters()
1156 if (sta->plink_state != NL80211_PLINK_ESTAB) in sta_apply_parameters()
1159 sta->plink_state = params->plink_state; in sta_apply_parameters()
1161 ieee80211_mps_sta_status_update(sta); in sta_apply_parameters()
1162 changed |= ieee80211_mps_set_sta_local_pm(sta, in sta_apply_parameters()
1171 if (sta->plink_state == NL80211_PLINK_ESTAB) in sta_apply_parameters()
1174 sta->plink_state = params->plink_state; in sta_apply_parameters()
1176 ieee80211_mps_sta_status_update(sta); in sta_apply_parameters()
1177 changed |= ieee80211_mps_set_sta_local_pm(sta, in sta_apply_parameters()
1191 changed |= mesh_plink_open(sta); in sta_apply_parameters()
1194 changed |= mesh_plink_block(sta); in sta_apply_parameters()
1200 ieee80211_mps_set_sta_local_pm(sta, in sta_apply_parameters()
1207 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER)) { in sta_apply_parameters()
1208 ret = sta_apply_auth_flags(local, sta, mask, set); in sta_apply_parameters()
1221 struct sta_info *sta; in ieee80211_add_station() local
1241 sta = sta_info_alloc(sdata, mac, GFP_KERNEL); in ieee80211_add_station()
1242 if (!sta) in ieee80211_add_station()
1250 sta_info_pre_move_state(sta, IEEE80211_STA_AUTH); in ieee80211_add_station()
1251 sta_info_pre_move_state(sta, IEEE80211_STA_ASSOC); in ieee80211_add_station()
1253 sta->sta.tdls = true; in ieee80211_add_station()
1256 err = sta_apply_parameters(local, sta, params); in ieee80211_add_station()
1258 sta_info_free(local, sta); in ieee80211_add_station()
1266 if (!test_sta_flag(sta, WLAN_STA_TDLS_PEER)) in ieee80211_add_station()
1267 rate_control_rate_init(sta); in ieee80211_add_station()
1272 err = sta_info_insert_rcu(sta); in ieee80211_add_station()
1279 ieee80211_send_layer2_update(sta); in ieee80211_add_station()
1306 struct sta_info *sta; in ieee80211_change_station() local
1313 sta = sta_info_get_bss(sdata, mac); in ieee80211_change_station()
1314 if (!sta) { in ieee80211_change_station()
1330 if (!test_sta_flag(sta, WLAN_STA_TDLS_PEER)) { in ieee80211_change_station()
1334 if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) in ieee80211_change_station()
1352 if (params->vlan && params->vlan != sta->sdata->dev) { in ieee80211_change_station()
1359 if (vlansdata->u.vlan.sta) { in ieee80211_change_station()
1364 rcu_assign_pointer(vlansdata->u.vlan.sta, sta); in ieee80211_change_station()
1368 if (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && in ieee80211_change_station()
1369 sta->sdata->u.vlan.sta) { in ieee80211_change_station()
1370 RCU_INIT_POINTER(sta->sdata->u.vlan.sta, NULL); in ieee80211_change_station()
1374 sta->sdata = vlansdata; in ieee80211_change_station()
1376 if (sta->sta_state == IEEE80211_STA_AUTHORIZED && in ieee80211_change_station()
1379 atomic_dec(&sta->sdata->bss->num_mcast_sta); in ieee80211_change_station()
1381 atomic_inc(&sta->sdata->bss->num_mcast_sta); in ieee80211_change_station()
1384 ieee80211_send_layer2_update(sta); in ieee80211_change_station()
1387 err = sta_apply_parameters(local, sta, params); in ieee80211_change_station()
1395 sta->known_smps_mode != sta->sdata->bss->req_smps && in ieee80211_change_station()
1396 test_sta_flag(sta, WLAN_STA_AUTHORIZED) && in ieee80211_change_station()
1397 sta_info_tx_streams(sta) != 1) { in ieee80211_change_station()
1398 ht_dbg(sta->sdata, in ieee80211_change_station()
1400 sta->sta.addr); in ieee80211_change_station()
1401 ieee80211_send_smps_action(sta->sdata, in ieee80211_change_station()
1402 sta->sdata->bss->req_smps, in ieee80211_change_station()
1403 sta->sta.addr, in ieee80211_change_station()
1404 sta->sdata->vif.bss_conf.bssid); in ieee80211_change_station()
1425 struct sta_info *sta; in ieee80211_add_mpath() local
1430 sta = sta_info_get(sdata, next_hop); in ieee80211_add_mpath()
1431 if (!sta) { in ieee80211_add_mpath()
1442 mesh_path_fix_nexthop(mpath, sta); in ieee80211_add_mpath()
1465 struct sta_info *sta; in ieee80211_change_mpath() local
1471 sta = sta_info_get(sdata, next_hop); in ieee80211_change_mpath()
1472 if (!sta) { in ieee80211_change_mpath()
1483 mesh_path_fix_nexthop(mpath, sta); in ieee80211_change_mpath()
1495 memcpy(next_hop, next_hop_sta->sta.addr, ETH_ALEN); in mpath_set_pinfo()
2280 struct sta_info *sta; in __ieee80211_request_smps_ap() local
2309 list_for_each_entry(sta, &sdata->local->sta_list, list) { in __ieee80211_request_smps_ap()
2314 if (sta->sdata->bss != &sdata->u.ap) in __ieee80211_request_smps_ap()
2318 if (sta_info_tx_streams(sta) == 1) in __ieee80211_request_smps_ap()
2325 if (test_sta_flag(sta, WLAN_STA_PS_STA) && in __ieee80211_request_smps_ap()
2326 !ieee80211_smps_is_restrictive(sta->known_smps_mode, in __ieee80211_request_smps_ap()
2329 sta->sta.addr); in __ieee80211_request_smps_ap()
2337 if (!test_sta_flag(sta, WLAN_STA_AUTHORIZED)) in __ieee80211_request_smps_ap()
2340 ht_dbg(sdata, "Sending SMPS to %pM\n", sta->sta.addr); in __ieee80211_request_smps_ap()
2341 ieee80211_send_smps_action(sdata, smps_mode, sta->sta.addr, in __ieee80211_request_smps_ap()
3254 struct sta_info *sta; in ieee80211_mgmt_tx() local
3295 sta = sta_info_get(sdata, mgmt->da); in ieee80211_mgmt_tx()
3297 if (!sta) in ieee80211_mgmt_tx()
3485 struct sta_info *sta; in ieee80211_probe_client() local
3496 sta = sta_info_get_bss(sdata, peer); in ieee80211_probe_client()
3497 if (sta) { in ieee80211_probe_client()
3498 qos = sta->sta.wme; in ieee80211_probe_client()
3528 memcpy(nullfunc->addr1, sta->sta.addr, ETH_ALEN); in ieee80211_probe_client()
3545 ieee80211_xmit(sdata, sta, skb); in ieee80211_probe_client()