Lines Matching refs:sta
69 RCU_INIT_POINTER(sdata->u.vlan.sta, NULL); in ieee80211_change_iface()
151 struct sta_info *sta = NULL; in ieee80211_add_key() local
194 sta = sta_info_get(sdata, mac_addr); in ieee80211_add_key()
196 sta = sta_info_get_bss(sdata, mac_addr); in ieee80211_add_key()
207 if (!sta || !test_sta_flag(sta, WLAN_STA_ASSOC)) { in ieee80211_add_key()
222 if (key->sta && test_sta_flag(key->sta, WLAN_STA_MFP)) in ieee80211_add_key()
247 if (sta) in ieee80211_add_key()
248 sta->cipher_scheme = cs; in ieee80211_add_key()
250 err = ieee80211_key_link(key, sdata, sta); in ieee80211_add_key()
263 struct sta_info *sta; in ieee80211_del_key() local
273 sta = sta_info_get_bss(sdata, mac_addr); in ieee80211_del_key()
274 if (!sta) in ieee80211_del_key()
278 key = key_mtx_dereference(local, sta->ptk[key_idx]); in ieee80211_del_key()
280 key = key_mtx_dereference(local, sta->gtk[key_idx]); in ieee80211_del_key()
306 struct sta_info *sta = NULL; in ieee80211_get_key() local
321 sta = sta_info_get_bss(sdata, mac_addr); in ieee80211_get_key()
322 if (!sta) in ieee80211_get_key()
326 key = rcu_dereference(sta->ptk[key_idx]); in ieee80211_get_key()
329 key = rcu_dereference(sta->gtk[key_idx]); in ieee80211_get_key()
437 void sta_set_rate_info_tx(struct sta_info *sta, in sta_set_rate_info_tx() argument
451 int shift = ieee80211_vif_get_shift(&sta->sdata->vif); in sta_set_rate_info_tx()
454 sband = sta->local->hw.wiphy->bands[ in sta_set_rate_info_tx()
455 ieee80211_get_sdata_band(sta->sdata)]; in sta_set_rate_info_tx()
476 struct sta_info *sta; in ieee80211_dump_station() local
481 sta = sta_info_get_by_idx(sdata, idx); in ieee80211_dump_station()
482 if (sta) { in ieee80211_dump_station()
484 memcpy(mac, sta->sta.addr, ETH_ALEN); in ieee80211_dump_station()
485 sta_set_sinfo(sta, sinfo); in ieee80211_dump_station()
506 struct sta_info *sta; in ieee80211_get_station() local
511 sta = sta_info_get_bss(sdata, mac); in ieee80211_get_station()
512 if (sta) { in ieee80211_get_station()
514 sta_set_sinfo(sta, sinfo); in ieee80211_get_station()
889 static void ieee80211_send_layer2_update(struct sta_info *sta) in ieee80211_send_layer2_update() argument
906 memcpy(msg->sa, sta->sta.addr, ETH_ALEN); in ieee80211_send_layer2_update()
916 skb->dev = sta->sdata->dev; in ieee80211_send_layer2_update()
917 skb->protocol = eth_type_trans(skb, sta->sdata->dev); in ieee80211_send_layer2_update()
923 struct sta_info *sta, in sta_apply_auth_flags() argument
930 !test_sta_flag(sta, WLAN_STA_AUTH)) { in sta_apply_auth_flags()
931 ret = sta_info_move_state(sta, IEEE80211_STA_AUTH); in sta_apply_auth_flags()
938 !test_sta_flag(sta, WLAN_STA_ASSOC)) { in sta_apply_auth_flags()
944 if (!test_sta_flag(sta, WLAN_STA_RATE_CONTROL)) in sta_apply_auth_flags()
945 rate_control_rate_init(sta); in sta_apply_auth_flags()
947 ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC); in sta_apply_auth_flags()
954 ret = sta_info_move_state(sta, IEEE80211_STA_AUTHORIZED); in sta_apply_auth_flags()
955 else if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) in sta_apply_auth_flags()
956 ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC); in sta_apply_auth_flags()
965 test_sta_flag(sta, WLAN_STA_ASSOC)) { in sta_apply_auth_flags()
966 ret = sta_info_move_state(sta, IEEE80211_STA_AUTH); in sta_apply_auth_flags()
973 test_sta_flag(sta, WLAN_STA_AUTH)) { in sta_apply_auth_flags()
974 ret = sta_info_move_state(sta, IEEE80211_STA_NONE); in sta_apply_auth_flags()
983 struct sta_info *sta, in sta_apply_mesh_params() argument
987 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_apply_mesh_params()
993 if (sta->mesh->plink_state != NL80211_PLINK_ESTAB) in sta_apply_mesh_params()
995 sta->mesh->plink_state = params->plink_state; in sta_apply_mesh_params()
997 ieee80211_mps_sta_status_update(sta); in sta_apply_mesh_params()
998 changed |= ieee80211_mps_set_sta_local_pm(sta, in sta_apply_mesh_params()
1007 if (sta->mesh->plink_state == NL80211_PLINK_ESTAB) in sta_apply_mesh_params()
1009 sta->mesh->plink_state = params->plink_state; in sta_apply_mesh_params()
1011 ieee80211_mps_sta_status_update(sta); in sta_apply_mesh_params()
1012 changed |= ieee80211_mps_set_sta_local_pm(sta, in sta_apply_mesh_params()
1026 changed |= mesh_plink_open(sta); in sta_apply_mesh_params()
1029 changed |= mesh_plink_block(sta); in sta_apply_mesh_params()
1034 changed |= ieee80211_mps_set_sta_local_pm(sta, in sta_apply_mesh_params()
1042 struct sta_info *sta, in sta_apply_parameters() argument
1047 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_apply_parameters()
1065 } else if (test_sta_flag(sta, WLAN_STA_TDLS_PEER)) { in sta_apply_parameters()
1081 sta->sta.wme = set & BIT(NL80211_STA_FLAG_WME); in sta_apply_parameters()
1085 if (!test_sta_flag(sta, WLAN_STA_TDLS_PEER) && in sta_apply_parameters()
1088 ret = sta_apply_auth_flags(local, sta, mask, set); in sta_apply_parameters()
1095 set_sta_flag(sta, WLAN_STA_SHORT_PREAMBLE); in sta_apply_parameters()
1097 clear_sta_flag(sta, WLAN_STA_SHORT_PREAMBLE); in sta_apply_parameters()
1101 sta->sta.mfp = !!(set & BIT(NL80211_STA_FLAG_MFP)); in sta_apply_parameters()
1103 set_sta_flag(sta, WLAN_STA_MFP); in sta_apply_parameters()
1105 clear_sta_flag(sta, WLAN_STA_MFP); in sta_apply_parameters()
1110 set_sta_flag(sta, WLAN_STA_TDLS_PEER); in sta_apply_parameters()
1112 clear_sta_flag(sta, WLAN_STA_TDLS_PEER); in sta_apply_parameters()
1116 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) && in sta_apply_parameters()
1120 set_sta_flag(sta, WLAN_STA_TDLS_CHAN_SWITCH); in sta_apply_parameters()
1122 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) && in sta_apply_parameters()
1127 set_sta_flag(sta, WLAN_STA_TDLS_WIDER_BW); in sta_apply_parameters()
1130 sta->sta.uapsd_queues = params->uapsd_queues; in sta_apply_parameters()
1131 sta->sta.max_sp = params->max_sp; in sta_apply_parameters()
1139 sta->sta.aid = params->aid; in sta_apply_parameters()
1150 sta->listen_interval = params->listen_interval; in sta_apply_parameters()
1156 &sta->sta.supp_rates[band]); in sta_apply_parameters()
1161 params->ht_capa, sta); in sta_apply_parameters()
1165 params->vht_capa, sta); in sta_apply_parameters()
1171 __ieee80211_vht_handle_opmode(sdata, sta, in sta_apply_parameters()
1176 sta_apply_mesh_params(local, sta, params); in sta_apply_parameters()
1179 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) || in sta_apply_parameters()
1181 ret = sta_apply_auth_flags(local, sta, mask, set); in sta_apply_parameters()
1194 struct sta_info *sta; in ieee80211_add_station() local
1214 sta = sta_info_alloc(sdata, mac, GFP_KERNEL); in ieee80211_add_station()
1215 if (!sta) in ieee80211_add_station()
1225 sta_info_pre_move_state(sta, IEEE80211_STA_AUTH); in ieee80211_add_station()
1226 sta_info_pre_move_state(sta, IEEE80211_STA_ASSOC); in ieee80211_add_station()
1229 sta->sta.tdls = true; in ieee80211_add_station()
1231 err = sta_apply_parameters(local, sta, params); in ieee80211_add_station()
1233 sta_info_free(local, sta); in ieee80211_add_station()
1242 if (!test_sta_flag(sta, WLAN_STA_TDLS_PEER) && in ieee80211_add_station()
1243 test_sta_flag(sta, WLAN_STA_ASSOC)) in ieee80211_add_station()
1244 rate_control_rate_init(sta); in ieee80211_add_station()
1249 err = sta_info_insert_rcu(sta); in ieee80211_add_station()
1256 ieee80211_send_layer2_update(sta); in ieee80211_add_station()
1283 struct sta_info *sta; in ieee80211_change_station() local
1290 sta = sta_info_get_bss(sdata, mac); in ieee80211_change_station()
1291 if (!sta) { in ieee80211_change_station()
1307 if (!test_sta_flag(sta, WLAN_STA_TDLS_PEER)) { in ieee80211_change_station()
1311 if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) in ieee80211_change_station()
1318 if (test_sta_flag(sta, WLAN_STA_ASSOC)) in ieee80211_change_station()
1332 if (params->vlan && params->vlan != sta->sdata->dev) { in ieee80211_change_station()
1339 if (vlansdata->u.vlan.sta) { in ieee80211_change_station()
1344 rcu_assign_pointer(vlansdata->u.vlan.sta, sta); in ieee80211_change_station()
1348 if (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && in ieee80211_change_station()
1349 sta->sdata->u.vlan.sta) { in ieee80211_change_station()
1350 RCU_INIT_POINTER(sta->sdata->u.vlan.sta, NULL); in ieee80211_change_station()
1354 sta->sdata = vlansdata; in ieee80211_change_station()
1355 ieee80211_check_fast_xmit(sta); in ieee80211_change_station()
1357 if (sta->sta_state == IEEE80211_STA_AUTHORIZED && in ieee80211_change_station()
1360 atomic_dec(&sta->sdata->bss->num_mcast_sta); in ieee80211_change_station()
1362 atomic_inc(&sta->sdata->bss->num_mcast_sta); in ieee80211_change_station()
1365 ieee80211_send_layer2_update(sta); in ieee80211_change_station()
1368 err = sta_apply_parameters(local, sta, params); in ieee80211_change_station()
1376 sta->known_smps_mode != sta->sdata->bss->req_smps && in ieee80211_change_station()
1377 test_sta_flag(sta, WLAN_STA_AUTHORIZED) && in ieee80211_change_station()
1378 sta_info_tx_streams(sta) != 1) { in ieee80211_change_station()
1379 ht_dbg(sta->sdata, in ieee80211_change_station()
1381 sta->sta.addr); in ieee80211_change_station()
1382 ieee80211_send_smps_action(sta->sdata, in ieee80211_change_station()
1383 sta->sdata->bss->req_smps, in ieee80211_change_station()
1384 sta->sta.addr, in ieee80211_change_station()
1385 sta->sdata->vif.bss_conf.bssid); in ieee80211_change_station()
1406 struct sta_info *sta; in ieee80211_add_mpath() local
1411 sta = sta_info_get(sdata, next_hop); in ieee80211_add_mpath()
1412 if (!sta) { in ieee80211_add_mpath()
1423 mesh_path_fix_nexthop(mpath, sta); in ieee80211_add_mpath()
1446 struct sta_info *sta; in ieee80211_change_mpath() local
1452 sta = sta_info_get(sdata, next_hop); in ieee80211_change_mpath()
1453 if (!sta) { in ieee80211_change_mpath()
1464 mesh_path_fix_nexthop(mpath, sta); in ieee80211_change_mpath()
1476 memcpy(next_hop, next_hop_sta->sta.addr, ETH_ALEN); in mpath_set_pinfo()
2265 struct sta_info *sta; in __ieee80211_request_smps_ap() local
2294 list_for_each_entry(sta, &sdata->local->sta_list, list) { in __ieee80211_request_smps_ap()
2299 if (sta->sdata->bss != &sdata->u.ap) in __ieee80211_request_smps_ap()
2303 if (sta_info_tx_streams(sta) == 1) in __ieee80211_request_smps_ap()
2310 if (test_sta_flag(sta, WLAN_STA_PS_STA) && in __ieee80211_request_smps_ap()
2311 !ieee80211_smps_is_restrictive(sta->known_smps_mode, in __ieee80211_request_smps_ap()
2314 sta->sta.addr); in __ieee80211_request_smps_ap()
2322 if (!test_sta_flag(sta, WLAN_STA_AUTHORIZED)) in __ieee80211_request_smps_ap()
2325 ht_dbg(sdata, "Sending SMPS to %pM\n", sta->sta.addr); in __ieee80211_request_smps_ap()
2326 ieee80211_send_smps_action(sdata, smps_mode, sta->sta.addr, in __ieee80211_request_smps_ap()
2343 struct sta_info *sta; in __ieee80211_request_smps_mgd() local
2370 list_for_each_entry_rcu(sta, &sdata->local->sta_list, list) { in __ieee80211_request_smps_mgd()
2371 if (!sta->sta.tdls || sta->sdata != sdata || !sta->uploaded || in __ieee80211_request_smps_mgd()
2372 !test_sta_flag(sta, WLAN_STA_AUTHORIZED)) in __ieee80211_request_smps_mgd()
3306 struct sta_info *sta; in ieee80211_mgmt_tx() local
3347 sta = sta_info_get(sdata, mgmt->da); in ieee80211_mgmt_tx()
3349 if (!sta) in ieee80211_mgmt_tx()
3576 struct sta_info *sta; in ieee80211_probe_client() local
3591 sta = sta_info_get_bss(sdata, peer); in ieee80211_probe_client()
3592 if (sta) { in ieee80211_probe_client()
3593 qos = sta->sta.wme; in ieee80211_probe_client()
3623 memcpy(nullfunc->addr1, sta->sta.addr, ETH_ALEN); in ieee80211_probe_client()
3647 ieee80211_xmit(sdata, sta, skb); in ieee80211_probe_client()