Lines Matching refs:sdata

89 	struct ieee80211_sub_if_data *sdata = sta->sdata;  in __cleanup_single_sta()  local
90 struct ieee80211_local *local = sdata->local; in __cleanup_single_sta()
96 if (sta->sdata->vif.type == NL80211_IFTYPE_AP || in __cleanup_single_sta()
97 sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in __cleanup_single_sta()
98 ps = &sdata->bss->ps; in __cleanup_single_sta()
99 else if (ieee80211_vif_is_mesh(&sdata->vif)) in __cleanup_single_sta()
100 ps = &sdata->u.mesh.ps; in __cleanup_single_sta()
117 atomic_sub(n, &sdata->txqs_len[txqi->txq.ac]); in __cleanup_single_sta()
127 if (ieee80211_vif_is_mesh(&sdata->vif)) in __cleanup_single_sta()
150 struct ieee80211_sub_if_data *sdata = sta->sdata; in cleanup_single_sta() local
151 struct ieee80211_local *local = sdata->local; in cleanup_single_sta()
158 struct sta_info *sta_info_get(struct ieee80211_sub_if_data *sdata, in sta_info_get() argument
161 struct ieee80211_local *local = sdata->local; in sta_info_get()
170 if (sta->sdata == sdata) { in sta_info_get()
186 struct sta_info *sta_info_get_bss(struct ieee80211_sub_if_data *sdata, in sta_info_get_bss() argument
189 struct ieee80211_local *local = sdata->local; in sta_info_get_bss()
198 if (sta->sdata == sdata || in sta_info_get_bss()
199 (sta->sdata->bss && sta->sdata->bss == sdata->bss)) { in sta_info_get_bss()
211 struct sta_info *sta_info_get_by_idx(struct ieee80211_sub_if_data *sdata, in sta_info_get_by_idx() argument
214 struct ieee80211_local *local = sdata->local; in sta_info_get_by_idx()
219 if (sdata != sta->sdata) in sta_info_get_by_idx()
247 sta_dbg(sta->sdata, "Destroyed STA %pM\n", sta->sta.addr); in sta_info_free()
300 struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata, in sta_info_alloc() argument
303 struct ieee80211_local *local = sdata->local; in sta_info_alloc()
318 if (ieee80211_vif_is_mesh(&sdata->vif)) { in sta_info_alloc()
323 if (ieee80211_vif_is_mesh(&sdata->vif) && in sta_info_alloc()
324 !sdata->u.mesh.user_mpm) in sta_info_alloc()
333 sta->sdata = sdata; in sta_info_alloc()
358 ieee80211_init_tx_queue(sdata, sta, txq, i); in sta_info_alloc()
382 if (sdata->vif.type == NL80211_IFTYPE_AP || in sta_info_alloc()
383 sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { in sta_info_alloc()
385 hw->wiphy->bands[ieee80211_get_sdata_band(sdata)]; in sta_info_alloc()
407 sta_dbg(sdata, "Allocated STA %pM\n", sta->sta.addr); in sta_info_alloc()
424 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_info_insert_check() local
431 if (unlikely(!ieee80211_sdata_running(sdata))) in sta_info_insert_check()
434 if (WARN_ON(ether_addr_equal(sta->sta.addr, sdata->vif.addr) || in sta_info_insert_check()
442 struct ieee80211_sub_if_data *sdata, in sta_info_insert_drv_state() argument
449 err = drv_sta_state(local, sdata, sta, state, state + 1); in sta_info_insert_drv_state()
464 if (sdata->vif.type == NL80211_IFTYPE_ADHOC) { in sta_info_insert_drv_state()
465 sdata_info(sdata, in sta_info_insert_drv_state()
473 WARN_ON(drv_sta_state(local, sdata, sta, state, state - 1)); in sta_info_insert_drv_state()
486 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_info_insert_finish() local
499 if (sta_info_get_bss(sdata, sta->sta.addr)) { in sta_info_insert_finish()
519 err = sta_info_insert_drv_state(local, sdata, sta); in sta_info_insert_finish()
527 ieee80211_recalc_min_chandef(sdata); in sta_info_insert_finish()
532 cfg80211_new_sta(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL); in sta_info_insert_finish()
535 sta_dbg(sdata, "Inserted STA %pM\n", sta->sta.addr); in sta_info_insert_finish()
541 if (ieee80211_vif_is_mesh(&sdata->vif)) in sta_info_insert_finish()
542 mesh_accept_plinks_update(sdata); in sta_info_insert_finish()
646 if (sta->sdata->vif.type == NL80211_IFTYPE_AP || in __sta_info_recalc_tim()
647 sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { in __sta_info_recalc_tim()
648 if (WARN_ON_ONCE(!sta->sdata->bss)) in __sta_info_recalc_tim()
651 ps = &sta->sdata->bss->ps; in __sta_info_recalc_tim()
653 } else if (ieee80211_vif_is_mesh(&sta->sdata->vif)) { in __sta_info_recalc_tim()
654 ps = &sta->sdata->u.mesh.ps; in __sta_info_recalc_tim()
736 sta->sdata->vif.bss_conf.beacon_int * in sta_info_buffer_expired()
801 ps_dbg(sta->sdata, "Buffered frame expired (STA %pM)\n", in sta_info_cleanup_expire_buffered_ac()
829 if (!sta->sdata->bss && in sta_info_cleanup_expire_buffered()
830 !ieee80211_vif_is_mesh(&sta->sdata->vif)) in sta_info_cleanup_expire_buffered()
843 struct ieee80211_sub_if_data *sdata; in __sta_info_destroy_part1() local
852 sdata = sta->sdata; in __sta_info_destroy_part1()
874 drv_tdls_cancel_channel_switch(local, sdata, &sta->sta); in __sta_info_destroy_part1()
880 drv_sta_pre_rcu_remove(local, sta->sdata, sta); in __sta_info_destroy_part1()
882 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN && in __sta_info_destroy_part1()
883 rcu_access_pointer(sdata->u.vlan.sta) == sta) in __sta_info_destroy_part1()
884 RCU_INIT_POINTER(sdata->u.vlan.sta, NULL); in __sta_info_destroy_part1()
892 struct ieee80211_sub_if_data *sdata = sta->sdata; in __sta_info_destroy_part2() local
924 ret = drv_sta_state(local, sdata, sta, IEEE80211_STA_NONE, in __sta_info_destroy_part2()
929 sta_dbg(sdata, "Removed STA %pM\n", sta->sta.addr); in __sta_info_destroy_part2()
934 cfg80211_del_sta_sinfo(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL); in __sta_info_destroy_part2()
939 ieee80211_recalc_min_chandef(sdata); in __sta_info_destroy_part2()
958 int sta_info_destroy_addr(struct ieee80211_sub_if_data *sdata, const u8 *addr) in sta_info_destroy_addr() argument
963 mutex_lock(&sdata->local->sta_mtx); in sta_info_destroy_addr()
964 sta = sta_info_get(sdata, addr); in sta_info_destroy_addr()
966 mutex_unlock(&sdata->local->sta_mtx); in sta_info_destroy_addr()
971 int sta_info_destroy_addr_bss(struct ieee80211_sub_if_data *sdata, in sta_info_destroy_addr_bss() argument
977 mutex_lock(&sdata->local->sta_mtx); in sta_info_destroy_addr_bss()
978 sta = sta_info_get_bss(sdata, addr); in sta_info_destroy_addr_bss()
980 mutex_unlock(&sdata->local->sta_mtx); in sta_info_destroy_addr_bss()
1036 int __sta_info_flush(struct ieee80211_sub_if_data *sdata, bool vlans) in __sta_info_flush() argument
1038 struct ieee80211_local *local = sdata->local; in __sta_info_flush()
1045 WARN_ON(vlans && sdata->vif.type != NL80211_IFTYPE_AP); in __sta_info_flush()
1046 WARN_ON(vlans && !sdata->bss); in __sta_info_flush()
1050 if (sdata == sta->sdata || in __sta_info_flush()
1051 (vlans && sdata->bss == sta->sdata->bss)) { in __sta_info_flush()
1068 void ieee80211_sta_expire(struct ieee80211_sub_if_data *sdata, in ieee80211_sta_expire() argument
1071 struct ieee80211_local *local = sdata->local; in ieee80211_sta_expire()
1077 if (sdata != sta->sdata) in ieee80211_sta_expire()
1081 sta_dbg(sta->sdata, "expiring inactive STA %pM\n", in ieee80211_sta_expire()
1084 if (ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_sta_expire()
1086 atomic_dec(&sdata->u.mesh.ps.num_sta_ps); in ieee80211_sta_expire()
1112 !ether_addr_equal(sta->sdata->vif.addr, localaddr)) in ieee80211_find_sta_by_ifaddr()
1145 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_sta_ps_deliver_wakeup() local
1146 struct ieee80211_local *local = sdata->local; in ieee80211_sta_ps_deliver_wakeup()
1152 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in ieee80211_sta_ps_deliver_wakeup()
1153 sdata = container_of(sdata->bss, struct ieee80211_sub_if_data, in ieee80211_sta_ps_deliver_wakeup()
1156 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_sta_ps_deliver_wakeup()
1157 ps = &sdata->bss->ps; in ieee80211_sta_ps_deliver_wakeup()
1158 else if (ieee80211_vif_is_mesh(&sdata->vif)) in ieee80211_sta_ps_deliver_wakeup()
1159 ps = &sdata->u.mesh.ps; in ieee80211_sta_ps_deliver_wakeup()
1170 drv_sta_notify(local, sdata, STA_NOTIFY_AWAKE, &sta->sta); in ieee80211_sta_ps_deliver_wakeup()
1220 if (!ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_sta_ps_deliver_wakeup()
1222 sdata->smps_mode) && in ieee80211_sta_ps_deliver_wakeup()
1223 sta->known_smps_mode != sdata->bss->req_smps && in ieee80211_sta_ps_deliver_wakeup()
1225 ht_dbg(sdata, in ieee80211_sta_ps_deliver_wakeup()
1228 ieee80211_send_smps_action(sdata, sdata->bss->req_smps, in ieee80211_sta_ps_deliver_wakeup()
1230 sdata->vif.bss_conf.bssid); in ieee80211_sta_ps_deliver_wakeup()
1237 ps_dbg(sdata, in ieee80211_sta_ps_deliver_wakeup()
1244 static void ieee80211_send_null_response(struct ieee80211_sub_if_data *sdata, in ieee80211_send_null_response() argument
1249 struct ieee80211_local *local = sdata->local; in ieee80211_send_null_response()
1279 memcpy(nullfunc->addr2, sdata->vif.addr, ETH_ALEN); in ieee80211_send_null_response()
1280 memcpy(nullfunc->addr3, sdata->vif.addr, ETH_ALEN); in ieee80211_send_null_response()
1311 skb->dev = sdata->dev; in ieee80211_send_null_response()
1314 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_send_null_response()
1322 ieee80211_xmit(sdata, sta, skb); in ieee80211_send_null_response()
1342 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_sta_ps_deliver_response() local
1343 struct ieee80211_local *local = sdata->local; in ieee80211_sta_ps_deliver_response()
1435 ieee80211_send_null_response(sdata, sta, tid, reason, true); in ieee80211_sta_ps_deliver_response()
1535 sdata, sta, find_highest_prio_tid(tids), in ieee80211_sta_ps_deliver_response()
1727 sta_dbg(sta->sdata, "moving STA %pM to state %d\n", in sta_info_move_state()
1735 int err = drv_sta_state(sta->local, sta->sdata, sta, in sta_info_move_state()
1758 if (sta->sdata->vif.type == NL80211_IFTYPE_AP || in sta_info_move_state()
1759 (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && in sta_info_move_state()
1760 !sta->sdata->u.vlan.sta)) in sta_info_move_state()
1761 atomic_dec(&sta->sdata->bss->num_mcast_sta); in sta_info_move_state()
1768 if (sta->sdata->vif.type == NL80211_IFTYPE_AP || in sta_info_move_state()
1769 (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && in sta_info_move_state()
1770 !sta->sdata->u.vlan.sta)) in sta_info_move_state()
1771 atomic_inc(&sta->sdata->bss->num_mcast_sta); in sta_info_move_state()
1833 int shift = ieee80211_vif_get_shift(&sta->sdata->vif); in sta_set_rate_info_rx()
1837 ieee80211_get_sdata_band(sta->sdata)]; in sta_set_rate_info_rx()
1861 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_set_sinfo() local
1862 struct ieee80211_local *local = sdata->local; in sta_set_sinfo()
1870 sinfo->generation = sdata->local->sta_generation; in sta_set_sinfo()
1876 if (sdata->vif.type == NL80211_IFTYPE_STATION) in sta_set_sinfo()
1877 sinfo->rx_beacon = sdata->u.mgd.count_beacon_signal; in sta_set_sinfo()
1879 drv_sta_statistics(local, sdata, &sta->sta, sinfo); in sta_set_sinfo()
1887 if (sdata->vif.type == NL80211_IFTYPE_STATION) { in sta_set_sinfo()
1888 sinfo->beacon_loss_count = sdata->u.mgd.beacon_loss_count; in sta_set_sinfo()
1934 if (sdata->vif.type == NL80211_IFTYPE_STATION && in sta_set_sinfo()
1935 !(sdata->vif.driver_flags & IEEE80211_VIF_BEACON_FILTER)) { in sta_set_sinfo()
1938 sinfo->rx_beacon_signal_avg = ieee80211_ave_rssi(&sdata->vif); in sta_set_sinfo()
2014 if (ieee80211_vif_is_mesh(&sdata->vif)) { in sta_set_sinfo()
2037 if (sdata->vif.bss_conf.use_cts_prot) in sta_set_sinfo()
2039 if (sdata->vif.bss_conf.use_short_preamble) in sta_set_sinfo()
2041 if (sdata->vif.bss_conf.use_short_slot) in sta_set_sinfo()
2043 sinfo->bss_param.dtim_period = sdata->vif.bss_conf.dtim_period; in sta_set_sinfo()
2044 sinfo->bss_param.beacon_interval = sdata->vif.bss_conf.beacon_int; in sta_set_sinfo()