Lines Matching refs:sdata
88 struct ieee80211_sub_if_data *sdata = sta->sdata; in __cleanup_single_sta() local
89 struct ieee80211_local *local = sdata->local; in __cleanup_single_sta()
95 if (sta->sdata->vif.type == NL80211_IFTYPE_AP || in __cleanup_single_sta()
96 sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in __cleanup_single_sta()
97 ps = &sdata->bss->ps; in __cleanup_single_sta()
98 else if (ieee80211_vif_is_mesh(&sdata->vif)) in __cleanup_single_sta()
99 ps = &sdata->u.mesh.ps; in __cleanup_single_sta()
116 atomic_sub(n, &sdata->txqs_len[txqi->txq.ac]); in __cleanup_single_sta()
126 if (ieee80211_vif_is_mesh(&sdata->vif)) in __cleanup_single_sta()
149 struct ieee80211_sub_if_data *sdata = sta->sdata; in cleanup_single_sta() local
150 struct ieee80211_local *local = sdata->local; in cleanup_single_sta()
157 struct sta_info *sta_info_get(struct ieee80211_sub_if_data *sdata, in sta_info_get() argument
160 struct ieee80211_local *local = sdata->local; in sta_info_get()
169 if (sta->sdata == sdata) { in sta_info_get()
185 struct sta_info *sta_info_get_bss(struct ieee80211_sub_if_data *sdata, in sta_info_get_bss() argument
188 struct ieee80211_local *local = sdata->local; in sta_info_get_bss()
197 if (sta->sdata == sdata || in sta_info_get_bss()
198 (sta->sdata->bss && sta->sdata->bss == sdata->bss)) { in sta_info_get_bss()
210 struct sta_info *sta_info_get_by_idx(struct ieee80211_sub_if_data *sdata, in sta_info_get_by_idx() argument
213 struct ieee80211_local *local = sdata->local; in sta_info_get_by_idx()
218 if (sdata != sta->sdata) in sta_info_get_by_idx()
246 sta_dbg(sta->sdata, "Destroyed STA %pM\n", sta->sta.addr); in sta_info_free()
296 struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata, in sta_info_alloc() argument
299 struct ieee80211_local *local = sdata->local; in sta_info_alloc()
315 if (ieee80211_vif_is_mesh(&sdata->vif) && in sta_info_alloc()
316 !sdata->u.mesh.user_mpm) in sta_info_alloc()
323 sta->sdata = sdata; in sta_info_alloc()
349 ieee80211_init_tx_queue(sdata, sta, txq, i); in sta_info_alloc()
373 if (sdata->vif.type == NL80211_IFTYPE_AP || in sta_info_alloc()
374 sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { in sta_info_alloc()
376 hw->wiphy->bands[ieee80211_get_sdata_band(sdata)]; in sta_info_alloc()
398 sta_dbg(sdata, "Allocated STA %pM\n", sta->sta.addr); in sta_info_alloc()
412 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_info_insert_check() local
419 if (unlikely(!ieee80211_sdata_running(sdata))) in sta_info_insert_check()
422 if (WARN_ON(ether_addr_equal(sta->sta.addr, sdata->vif.addr) || in sta_info_insert_check()
430 struct ieee80211_sub_if_data *sdata, in sta_info_insert_drv_state() argument
437 err = drv_sta_state(local, sdata, sta, state, state + 1); in sta_info_insert_drv_state()
452 if (sdata->vif.type == NL80211_IFTYPE_ADHOC) { in sta_info_insert_drv_state()
453 sdata_info(sdata, in sta_info_insert_drv_state()
461 WARN_ON(drv_sta_state(local, sdata, sta, state, state - 1)); in sta_info_insert_drv_state()
474 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_info_insert_finish() local
481 if (sta_info_get_bss(sdata, sta->sta.addr)) { in sta_info_insert_finish()
501 err = sta_info_insert_drv_state(local, sdata, sta); in sta_info_insert_finish()
509 ieee80211_recalc_min_chandef(sdata); in sta_info_insert_finish()
516 cfg80211_new_sta(sdata->dev, sta->sta.addr, &sinfo, GFP_KERNEL); in sta_info_insert_finish()
518 sta_dbg(sdata, "Inserted STA %pM\n", sta->sta.addr); in sta_info_insert_finish()
524 if (ieee80211_vif_is_mesh(&sdata->vif)) in sta_info_insert_finish()
525 mesh_accept_plinks_update(sdata); in sta_info_insert_finish()
629 if (sta->sdata->vif.type == NL80211_IFTYPE_AP || in __sta_info_recalc_tim()
630 sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { in __sta_info_recalc_tim()
631 if (WARN_ON_ONCE(!sta->sdata->bss)) in __sta_info_recalc_tim()
634 ps = &sta->sdata->bss->ps; in __sta_info_recalc_tim()
637 } else if (ieee80211_vif_is_mesh(&sta->sdata->vif)) { in __sta_info_recalc_tim()
638 ps = &sta->sdata->u.mesh.ps; in __sta_info_recalc_tim()
722 sta->sdata->vif.bss_conf.beacon_int * in sta_info_buffer_expired()
787 ps_dbg(sta->sdata, "Buffered frame expired (STA %pM)\n", in sta_info_cleanup_expire_buffered_ac()
815 if (!sta->sdata->bss && in sta_info_cleanup_expire_buffered()
816 !ieee80211_vif_is_mesh(&sta->sdata->vif)) in sta_info_cleanup_expire_buffered()
829 struct ieee80211_sub_if_data *sdata; in __sta_info_destroy_part1() local
838 sdata = sta->sdata; in __sta_info_destroy_part1()
860 drv_tdls_cancel_channel_switch(local, sdata, &sta->sta); in __sta_info_destroy_part1()
866 drv_sta_pre_rcu_remove(local, sta->sdata, sta); in __sta_info_destroy_part1()
868 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN && in __sta_info_destroy_part1()
869 rcu_access_pointer(sdata->u.vlan.sta) == sta) in __sta_info_destroy_part1()
870 RCU_INIT_POINTER(sdata->u.vlan.sta, NULL); in __sta_info_destroy_part1()
878 struct ieee80211_sub_if_data *sdata = sta->sdata; in __sta_info_destroy_part2() local
910 ret = drv_sta_state(local, sdata, sta, IEEE80211_STA_NONE, in __sta_info_destroy_part2()
915 sta_dbg(sdata, "Removed STA %pM\n", sta->sta.addr); in __sta_info_destroy_part2()
918 cfg80211_del_sta_sinfo(sdata->dev, sta->sta.addr, &sinfo, GFP_KERNEL); in __sta_info_destroy_part2()
922 ieee80211_recalc_min_chandef(sdata); in __sta_info_destroy_part2()
941 int sta_info_destroy_addr(struct ieee80211_sub_if_data *sdata, const u8 *addr) in sta_info_destroy_addr() argument
946 mutex_lock(&sdata->local->sta_mtx); in sta_info_destroy_addr()
947 sta = sta_info_get(sdata, addr); in sta_info_destroy_addr()
949 mutex_unlock(&sdata->local->sta_mtx); in sta_info_destroy_addr()
954 int sta_info_destroy_addr_bss(struct ieee80211_sub_if_data *sdata, in sta_info_destroy_addr_bss() argument
960 mutex_lock(&sdata->local->sta_mtx); in sta_info_destroy_addr_bss()
961 sta = sta_info_get_bss(sdata, addr); in sta_info_destroy_addr_bss()
963 mutex_unlock(&sdata->local->sta_mtx); in sta_info_destroy_addr_bss()
1019 int __sta_info_flush(struct ieee80211_sub_if_data *sdata, bool vlans) in __sta_info_flush() argument
1021 struct ieee80211_local *local = sdata->local; in __sta_info_flush()
1028 WARN_ON(vlans && sdata->vif.type != NL80211_IFTYPE_AP); in __sta_info_flush()
1029 WARN_ON(vlans && !sdata->bss); in __sta_info_flush()
1033 if (sdata == sta->sdata || in __sta_info_flush()
1034 (vlans && sdata->bss == sta->sdata->bss)) { in __sta_info_flush()
1051 void ieee80211_sta_expire(struct ieee80211_sub_if_data *sdata, in ieee80211_sta_expire() argument
1054 struct ieee80211_local *local = sdata->local; in ieee80211_sta_expire()
1060 if (sdata != sta->sdata) in ieee80211_sta_expire()
1064 sta_dbg(sta->sdata, "expiring inactive STA %pM\n", in ieee80211_sta_expire()
1067 if (ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_sta_expire()
1069 atomic_dec(&sdata->u.mesh.ps.num_sta_ps); in ieee80211_sta_expire()
1095 !ether_addr_equal(sta->sdata->vif.addr, localaddr)) in ieee80211_find_sta_by_ifaddr()
1128 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_sta_ps_deliver_wakeup() local
1129 struct ieee80211_local *local = sdata->local; in ieee80211_sta_ps_deliver_wakeup()
1135 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in ieee80211_sta_ps_deliver_wakeup()
1136 sdata = container_of(sdata->bss, struct ieee80211_sub_if_data, in ieee80211_sta_ps_deliver_wakeup()
1139 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_sta_ps_deliver_wakeup()
1140 ps = &sdata->bss->ps; in ieee80211_sta_ps_deliver_wakeup()
1141 else if (ieee80211_vif_is_mesh(&sdata->vif)) in ieee80211_sta_ps_deliver_wakeup()
1142 ps = &sdata->u.mesh.ps; in ieee80211_sta_ps_deliver_wakeup()
1153 drv_sta_notify(local, sdata, STA_NOTIFY_AWAKE, &sta->sta); in ieee80211_sta_ps_deliver_wakeup()
1203 if (!ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_sta_ps_deliver_wakeup()
1205 sdata->smps_mode) && in ieee80211_sta_ps_deliver_wakeup()
1206 sta->known_smps_mode != sdata->bss->req_smps && in ieee80211_sta_ps_deliver_wakeup()
1208 ht_dbg(sdata, in ieee80211_sta_ps_deliver_wakeup()
1211 ieee80211_send_smps_action(sdata, sdata->bss->req_smps, in ieee80211_sta_ps_deliver_wakeup()
1213 sdata->vif.bss_conf.bssid); in ieee80211_sta_ps_deliver_wakeup()
1220 ps_dbg(sdata, in ieee80211_sta_ps_deliver_wakeup()
1225 static void ieee80211_send_null_response(struct ieee80211_sub_if_data *sdata, in ieee80211_send_null_response() argument
1230 struct ieee80211_local *local = sdata->local; in ieee80211_send_null_response()
1260 memcpy(nullfunc->addr2, sdata->vif.addr, ETH_ALEN); in ieee80211_send_null_response()
1261 memcpy(nullfunc->addr3, sdata->vif.addr, ETH_ALEN); in ieee80211_send_null_response()
1292 skb->dev = sdata->dev; in ieee80211_send_null_response()
1295 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_send_null_response()
1303 ieee80211_xmit(sdata, sta, skb); in ieee80211_send_null_response()
1323 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_sta_ps_deliver_response() local
1324 struct ieee80211_local *local = sdata->local; in ieee80211_sta_ps_deliver_response()
1416 ieee80211_send_null_response(sdata, sta, tid, reason, true); in ieee80211_sta_ps_deliver_response()
1516 sdata, sta, find_highest_prio_tid(tids), in ieee80211_sta_ps_deliver_response()
1706 sta_dbg(sta->sdata, "moving STA %pM to state %d\n", in sta_info_move_state()
1714 int err = drv_sta_state(sta->local, sta->sdata, sta, in sta_info_move_state()
1737 if (sta->sdata->vif.type == NL80211_IFTYPE_AP || in sta_info_move_state()
1738 (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && in sta_info_move_state()
1739 !sta->sdata->u.vlan.sta)) in sta_info_move_state()
1740 atomic_dec(&sta->sdata->bss->num_mcast_sta); in sta_info_move_state()
1746 if (sta->sdata->vif.type == NL80211_IFTYPE_AP || in sta_info_move_state()
1747 (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && in sta_info_move_state()
1748 !sta->sdata->u.vlan.sta)) in sta_info_move_state()
1749 atomic_inc(&sta->sdata->bss->num_mcast_sta); in sta_info_move_state()
1799 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_set_sinfo() local
1800 struct ieee80211_local *local = sdata->local; in sta_set_sinfo()
1809 sinfo->generation = sdata->local->sta_generation; in sta_set_sinfo()
1815 if (sdata->vif.type == NL80211_IFTYPE_STATION) in sta_set_sinfo()
1816 sinfo->rx_beacon = sdata->u.mgd.count_beacon_signal; in sta_set_sinfo()
1818 drv_sta_statistics(local, sdata, &sta->sta, sinfo); in sta_set_sinfo()
1870 if (sdata->vif.type == NL80211_IFTYPE_STATION && in sta_set_sinfo()
1871 !(sdata->vif.driver_flags & IEEE80211_VIF_BEACON_FILTER)) { in sta_set_sinfo()
1874 sinfo->rx_beacon_signal_avg = ieee80211_ave_rssi(&sdata->vif); in sta_set_sinfo()
1945 if (ieee80211_vif_is_mesh(&sdata->vif)) { in sta_set_sinfo()
1968 if (sdata->vif.bss_conf.use_cts_prot) in sta_set_sinfo()
1970 if (sdata->vif.bss_conf.use_short_preamble) in sta_set_sinfo()
1972 if (sdata->vif.bss_conf.use_short_slot) in sta_set_sinfo()
1974 sinfo->bss_param.dtim_period = sdata->vif.bss_conf.dtim_period; in sta_set_sinfo()
1975 sinfo->bss_param.beacon_interval = sdata->vif.bss_conf.beacon_int; in sta_set_sinfo()