Lines Matching defs:sdata

121 	struct ieee80211_sub_if_data *sdata = sta->sdata;
122 struct ieee80211_local *local = sdata->local;
128 if (sta->sdata->vif.type == NL80211_IFTYPE_AP ||
129 sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
130 ps = &sdata->bss->ps;
131 else if (ieee80211_vif_is_mesh(&sdata->vif))
132 ps = &sdata->u.mesh.ps;
160 if (ieee80211_vif_is_mesh(&sdata->vif))
183 struct ieee80211_sub_if_data *sdata = sta->sdata;
184 struct ieee80211_local *local = sdata->local;
197 struct sta_info *sta_info_get(struct ieee80211_sub_if_data *sdata,
200 struct ieee80211_local *local = sdata->local;
206 if (sta->sdata == sdata) {
222 struct sta_info *sta_info_get_bss(struct ieee80211_sub_if_data *sdata,
225 struct ieee80211_local *local = sdata->local;
231 if (sta->sdata == sdata ||
232 (sta->sdata->bss && sta->sdata->bss == sdata->bss)) {
252 link_sta_info_get_bss(struct ieee80211_sub_if_data *sdata, const u8 *addr)
254 struct ieee80211_local *local = sdata->local;
262 if (sta->sdata == sdata ||
263 (sta->sdata->bss && sta->sdata->bss == sdata->bss)) {
296 link = rcu_dereference(sta->sdata->link[_link_id]);
319 if (ether_addr_equal(vif_addr, sta->sdata->vif.addr))
326 struct sta_info *sta_info_get_by_idx(struct ieee80211_sub_if_data *sdata,
329 struct ieee80211_local *local = sdata->local;
335 if (sdata != sta->sdata)
431 sta_dbg(sta->sdata, "Destroyed STA %pM\n", sta->sta.addr);
528 __sta_info_alloc(struct ieee80211_sub_if_data *sdata,
532 struct ieee80211_local *local = sdata->local;
544 sta->sdata = sdata;
565 if (ieee80211_vif_is_mesh(&sdata->vif)) {
571 if (!sdata->u.mesh.user_mpm)
601 if (sdata->vif.type == NL80211_IFTYPE_MESH_POINT)
620 ieee80211_txq_init(sdata, sta, txq, i);
689 sta_dbg(sdata, "Allocated STA %pM\n", sta->sta.addr);
704 struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
707 return __sta_info_alloc(sdata, addr, -1, addr, gfp);
710 struct sta_info *sta_info_alloc_with_link(struct ieee80211_sub_if_data *sdata,
716 return __sta_info_alloc(sdata, mld_addr, link_id, link_addr, gfp);
721 struct ieee80211_sub_if_data *sdata = sta->sdata;
728 if (unlikely(!ieee80211_sdata_running(sdata)))
731 if (WARN_ON(ether_addr_equal(sta->sta.addr, sdata->vif.addr) ||
740 lockdep_assert_held(&sdata->local->sta_mtx);
741 if (ieee80211_hw_check(&sdata->local->hw, NEEDS_UNIQUE_STA_ADDR) &&
742 ieee80211_find_sta_by_ifaddr(&sdata->local->hw, sta->addr, NULL)) {
752 struct ieee80211_sub_if_data *sdata,
759 err = drv_sta_state(local, sdata, sta, state, state + 1);
774 if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
775 sdata_info(sdata,
783 WARN_ON(drv_sta_state(local, sdata, sta, state, state - 1));
789 ieee80211_recalc_p2p_go_ps_allowed(struct ieee80211_sub_if_data *sdata)
791 struct ieee80211_local *local = sdata->local;
792 bool allow_p2p_go_ps = sdata->vif.p2p;
797 if (sdata != sta->sdata ||
807 if (allow_p2p_go_ps != sdata->vif.bss_conf.allow_p2p_go_ps) {
808 sdata->vif.bss_conf.allow_p2p_go_ps = allow_p2p_go_ps;
809 ieee80211_link_info_change_notify(sdata, &sdata->deflink,
822 struct ieee80211_sub_if_data *sdata = sta->sdata;
829 if (sta_info_get_bss(sdata, sta->sta.addr)) {
866 ieee80211_recalc_min_chandef(sta->sdata, -1);
868 ieee80211_recalc_p2p_go_ps_allowed(sta->sdata);
872 err = sta_info_insert_drv_state(local, sdata, sta);
896 if (sdata->vif.active_links & BIT(i))
905 cfg80211_new_sta(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL);
908 sta_dbg(sdata, "Inserted STA %pM\n", sta->sta.addr);
914 if (ieee80211_vif_is_mesh(&sdata->vif))
915 mesh_accept_plinks_update(sdata);
1019 if (sta->sdata->vif.type == NL80211_IFTYPE_AP ||
1020 sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
1021 if (WARN_ON_ONCE(!sta->sdata->bss))
1024 ps = &sta->sdata->bss->ps;
1026 } else if (ieee80211_vif_is_mesh(&sta->sdata->vif)) {
1027 ps = &sta->sdata->u.mesh.ps;
1109 sta->sdata->vif.bss_conf.beacon_int *
1174 ps_dbg(sta->sdata, "Buffered frame expired (STA %pM)\n",
1202 if (!sta->sdata->bss &&
1203 !ieee80211_vif_is_mesh(&sta->sdata->vif))
1216 struct ieee80211_sub_if_data *sdata;
1225 sdata = sta->sdata;
1266 drv_tdls_cancel_channel_switch(local, sdata, &sta->sta);
1274 drv_sta_pre_rcu_remove(local, sta->sdata, sta);
1276 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
1277 rcu_access_pointer(sdata->u.vlan.sta) == sta)
1278 RCU_INIT_POINTER(sdata->u.vlan.sta, NULL);
1318 sta_dbg(sta->sdata, "moving STA %pM to state %d\n",
1325 int err = drv_sta_state(sta->local, sta->sdata, sta,
1344 ieee80211_recalc_min_chandef(sta->sdata, -1);
1346 ieee80211_recalc_p2p_go_ps_allowed(sta->sdata);
1355 ieee80211_recalc_min_chandef(sta->sdata, -1);
1357 ieee80211_recalc_p2p_go_ps_allowed(sta->sdata);
1360 ieee80211_vif_dec_num_mcast(sta->sdata);
1368 ieee80211_vif_inc_num_mcast(sta->sdata);
1373 if (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN ||
1374 sta->sdata->vif.type == NL80211_IFTYPE_AP)
1375 cfg80211_send_layer2_update(sta->sdata->dev,
1396 struct ieee80211_sub_if_data *sdata = sta->sdata;
1420 drv_flush_sta(local, sta->sdata, sta);
1422 ieee80211_flush_queues(local, sta->sdata, false);
1445 ret = drv_sta_state(local, sdata, sta, IEEE80211_STA_NONE,
1450 sta_dbg(sdata, "Removed STA %pM\n", sta->sta.addr);
1455 cfg80211_del_sta_sinfo(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL);
1479 int sta_info_destroy_addr(struct ieee80211_sub_if_data *sdata, const u8 *addr)
1484 mutex_lock(&sdata->local->sta_mtx);
1485 sta = sta_info_get(sdata, addr);
1487 mutex_unlock(&sdata->local->sta_mtx);
1492 int sta_info_destroy_addr_bss(struct ieee80211_sub_if_data *sdata,
1498 mutex_lock(&sdata->local->sta_mtx);
1499 sta = sta_info_get_bss(sdata, addr);
1501 mutex_unlock(&sdata->local->sta_mtx);
1558 int __sta_info_flush(struct ieee80211_sub_if_data *sdata, bool vlans)
1560 struct ieee80211_local *local = sdata->local;
1567 WARN_ON(vlans && sdata->vif.type != NL80211_IFTYPE_AP);
1568 WARN_ON(vlans && !sdata->bss);
1572 if (sdata == sta->sdata ||
1573 (vlans && sdata->bss == sta->sdata->bss)) {
1590 ieee80211_recalc_min_chandef(sdata, -1);
1592 ieee80211_recalc_p2p_go_ps_allowed(sdata);
1599 void ieee80211_sta_expire(struct ieee80211_sub_if_data *sdata,
1602 struct ieee80211_local *local = sdata->local;
1610 if (sdata != sta->sdata)
1614 sta_dbg(sta->sdata, "expiring inactive STA %pM\n",
1617 if (ieee80211_vif_is_mesh(&sdata->vif) &&
1619 atomic_dec(&sdata->u.mesh.ps.num_sta_ps);
1642 !ether_addr_equal(sta->sdata->vif.addr, localaddr))
1675 struct ieee80211_sub_if_data *sdata = sta->sdata;
1676 struct ieee80211_local *local = sdata->local;
1682 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
1683 sdata = container_of(sdata->bss, struct ieee80211_sub_if_data,
1686 if (sdata->vif.type == NL80211_IFTYPE_AP)
1687 ps = &sdata->bss->ps;
1688 else if (ieee80211_vif_is_mesh(&sdata->vif))
1689 ps = &sdata->u.mesh.ps;
1700 drv_sta_notify(local, sdata, STA_NOTIFY_AWAKE, &sta->sta);
1749 ps_dbg(sdata,
1760 struct ieee80211_sub_if_data *sdata = sta->sdata;
1761 struct ieee80211_local *local = sdata->local;
1791 memcpy(nullfunc->addr2, sdata->vif.addr, ETH_ALEN);
1792 memcpy(nullfunc->addr3, sdata->vif.addr, ETH_ALEN);
1827 skb->dev = sdata->dev;
1830 chanctx_conf = rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
1838 ieee80211_xmit(sdata, sta, skb);
1892 struct ieee80211_sub_if_data *sdata = sta->sdata;
1893 struct ieee80211_local *local = sdata->local;
1947 struct ieee80211_sub_if_data *sdata = sta->sdata;
1948 struct ieee80211_local *local = sdata->local;
2265 struct ieee80211_local *local = sta->sdata->local;
2336 __ieee80211_sta_recalc_aggregates(sta, sta->sdata->vif.active_links);
2556 struct ieee80211_sub_if_data *sdata = sta->sdata;
2557 struct ieee80211_local *local = sdata->local;
2564 sinfo->generation = sdata->local->sta_generation;
2570 if (sdata->vif.type == NL80211_IFTYPE_STATION)
2571 sinfo->rx_beacon = sdata->deflink.u.mgd.count_beacon_signal;
2573 drv_sta_statistics(local, sdata, &sta->sta, sinfo);
2581 if (sdata->vif.type == NL80211_IFTYPE_STATION) {
2583 sdata->deflink.u.mgd.beacon_loss_count;
2675 if (sdata->vif.type == NL80211_IFTYPE_STATION &&
2676 !(sdata->vif.driver_flags & IEEE80211_VIF_BEACON_FILTER)) {
2679 sinfo->rx_beacon_signal_avg = ieee80211_ave_rssi(&sdata->vif);
2736 if (ieee80211_vif_is_mesh(&sdata->vif)) {
2763 if (sdata->vif.bss_conf.use_cts_prot)
2765 if (sdata->vif.bss_conf.use_short_preamble)
2767 if (sdata->vif.bss_conf.use_short_slot)
2769 sinfo->bss_param.dtim_period = sdata->vif.bss_conf.dtim_period;
2770 sinfo->bss_param.beacon_interval = sdata->vif.bss_conf.beacon_int;
2817 if (ieee80211_vif_is_mesh(&sdata->vif)) {
2826 struct ieee80211_sub_if_data *sdata = sta->sdata;
2827 struct ieee80211_local *local = sdata->local;
2876 struct ieee80211_sub_if_data *sdata = sta->sdata;
2880 lockdep_assert_held(&sdata->local->sta_mtx);
2894 ret = sta_info_alloc_link(sdata->local, &alloc->info, GFP_KERNEL);
2909 lockdep_assert_held(&sta->sdata->local->sta_mtx);
2916 struct ieee80211_sub_if_data *sdata = sta->sdata;
2923 lockdep_is_held(&sdata->local->sta_mtx));
2929 if (link_sta_info_hash_lookup(sdata->local, link_sta->addr)) {
2941 ieee80211_recalc_min_chandef(sdata, link_id);
2948 ret = drv_change_sta_links(sdata->local, sdata, &sta->sta,
2957 ret = link_sta_info_hash_add(sdata->local, link_sta);
2964 struct ieee80211_sub_if_data *sdata = sta->sdata;
2967 lockdep_assert_held(&sdata->local->sta_mtx);
2972 drv_change_sta_links(sdata->local, sdata, &sta->sta,