Lines Matching refs:vap

154 ieee80211_node_vattach(struct ieee80211vap *vap)  in ieee80211_node_vattach()  argument
157 vap->iv_max_aid = IEEE80211_AID_DEF; in ieee80211_node_vattach()
160 vap->iv_inact_init = IEEE80211_INACT_INIT; in ieee80211_node_vattach()
161 vap->iv_inact_auth = IEEE80211_INACT_AUTH; in ieee80211_node_vattach()
162 vap->iv_inact_run = IEEE80211_INACT_RUN; in ieee80211_node_vattach()
163 vap->iv_inact_probe = IEEE80211_INACT_PROBE; in ieee80211_node_vattach()
165 IEEE80211_DPRINTF(vap, IEEE80211_MSG_INACT, in ieee80211_node_vattach()
167 vap->iv_inact_init, vap->iv_inact_auth, in ieee80211_node_vattach()
168 vap->iv_inact_run, vap->iv_inact_probe); in ieee80211_node_vattach()
172 ieee80211_node_latevattach(struct ieee80211vap *vap) in ieee80211_node_latevattach() argument
176 IEEE80211_UNLOCK_ASSERT(vap->iv_ic); in ieee80211_node_latevattach()
178 if (vap->iv_opmode == IEEE80211_M_HOSTAP) { in ieee80211_node_latevattach()
180 if (vap->iv_max_aid < IEEE80211_AID_MIN) { in ieee80211_node_latevattach()
181 vap->iv_max_aid = IEEE80211_AID_MIN; in ieee80211_node_latevattach()
182 if_printf(vap->iv_ifp, in ieee80211_node_latevattach()
184 vap->iv_max_aid); in ieee80211_node_latevattach()
186 vap->iv_aid_bitmap = (uint32_t *) IEEE80211_MALLOC( in ieee80211_node_latevattach()
187 howmany(vap->iv_max_aid, 32) * sizeof(uint32_t), in ieee80211_node_latevattach()
190 if (vap->iv_aid_bitmap == NULL) { in ieee80211_node_latevattach()
193 __func__, vap->iv_max_aid); in ieee80211_node_latevattach()
194 vap->iv_max_aid = 0; in ieee80211_node_latevattach()
198 IEEE80211_LOCK(vap->iv_ic); in ieee80211_node_latevattach()
199 ieee80211_reset_bss(vap); in ieee80211_node_latevattach()
200 IEEE80211_UNLOCK(vap->iv_ic); in ieee80211_node_latevattach()
202 vap->iv_auth = ieee80211_authenticator_get(vap->iv_bss->ni_authmode); in ieee80211_node_latevattach()
206 ieee80211_node_vdetach(struct ieee80211vap *vap) in ieee80211_node_vdetach() argument
208 struct ieee80211com *ic = vap->iv_ic; in ieee80211_node_vdetach()
211 IEEE80211_UNLOCK_ASSERT(vap->iv_ic); in ieee80211_node_vdetach()
213 ieee80211_node_table_reset(&ic->ic_sta, vap); in ieee80211_node_vdetach()
215 if (vap->iv_bss != NULL) { in ieee80211_node_vdetach()
216 ieee80211_free_node(vap->iv_bss); in ieee80211_node_vdetach()
217 vap->iv_update_bss(vap, NULL); in ieee80211_node_vdetach()
220 if (vap->iv_aid_bitmap != NULL) { in ieee80211_node_vdetach()
221 IEEE80211_FREE(vap->iv_aid_bitmap, M_80211_NODE); in ieee80211_node_vdetach()
222 vap->iv_aid_bitmap = NULL; in ieee80211_node_vdetach()
233 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_authorize() local
236 ni->ni_inact_reload = vap->iv_inact_run; in ieee80211_node_authorize()
239 IEEE80211_NOTE(vap, IEEE80211_MSG_INACT, ni, in ieee80211_node_authorize()
246 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_unauthorize() local
249 ni->ni_inact_reload = vap->iv_inact_auth; in ieee80211_node_unauthorize()
253 IEEE80211_NOTE(vap, IEEE80211_MSG_INACT, ni, in ieee80211_node_unauthorize()
264 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_setuptxparms() local
293 ni->ni_txparms = &vap->iv_txparms[mode]; in ieee80211_node_setuptxparms()
306 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_set_chan() local
325 (vap->iv_flags_ht & IEEE80211_FHT_PUREN) == 0) in ieee80211_node_set_chan()
328 (vap->iv_flags_ht & IEEE80211_FHT_PUREN) == 0) in ieee80211_node_set_chan()
331 (vap->iv_flags & IEEE80211_F_PUREG) == 0) in ieee80211_node_set_chan()
334 ni->ni_txparms = &vap->iv_txparms[mode]; in ieee80211_node_set_chan()
350 ieee80211_create_ibss(struct ieee80211vap* vap, struct ieee80211_channel *chan) in ieee80211_create_ibss() argument
352 struct ieee80211com *ic = vap->iv_ic; in ieee80211_create_ibss()
355 IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN, in ieee80211_create_ibss()
357 ieee80211_opmode_name[vap->iv_opmode], in ieee80211_create_ibss()
362 ni = ieee80211_alloc_node(&ic->ic_sta, vap, vap->iv_myaddr, in ieee80211_create_ibss()
368 IEEE80211_ADDR_COPY(ni->ni_bssid, vap->iv_myaddr); in ieee80211_create_ibss()
369 ni->ni_esslen = vap->iv_des_ssid[0].len; in ieee80211_create_ibss()
370 memcpy(ni->ni_essid, vap->iv_des_ssid[0].ssid, ni->ni_esslen); in ieee80211_create_ibss()
371 if (vap->iv_bss != NULL) in ieee80211_create_ibss()
372 copy_bss(ni, vap->iv_bss); in ieee80211_create_ibss()
374 if (vap->iv_flags & IEEE80211_F_PRIVACY) in ieee80211_create_ibss()
380 if (vap->iv_opmode == IEEE80211_M_IBSS) { in ieee80211_create_ibss()
382 if (vap->iv_flags & IEEE80211_F_DESBSSID) in ieee80211_create_ibss()
383 IEEE80211_ADDR_COPY(ni->ni_bssid, vap->iv_des_bssid); in ieee80211_create_ibss()
390 } else if (vap->iv_opmode == IEEE80211_M_AHDEMO) { in ieee80211_create_ibss()
391 if (vap->iv_flags & IEEE80211_F_DESBSSID) in ieee80211_create_ibss()
392 IEEE80211_ADDR_COPY(ni->ni_bssid, vap->iv_des_bssid); in ieee80211_create_ibss()
395 if ((vap->iv_caps & IEEE80211_C_TDMA) == 0) in ieee80211_create_ibss()
399 } else if (vap->iv_opmode == IEEE80211_M_MBSS) { in ieee80211_create_ibss()
400 ni->ni_meshidlen = vap->iv_mesh->ms_idlen; in ieee80211_create_ibss()
401 memcpy(ni->ni_meshid, vap->iv_mesh->ms_id, ni->ni_meshidlen); in ieee80211_create_ibss()
425 if (vap->iv_flags & IEEE80211_F_PUREG) { in ieee80211_create_ibss()
464 ieee80211_reset_bss(struct ieee80211vap *vap) in ieee80211_reset_bss() argument
466 struct ieee80211com *ic = vap->iv_ic; in ieee80211_reset_bss()
471 ieee80211_node_table_reset(&ic->ic_sta, vap); in ieee80211_reset_bss()
473 ieee80211_vap_reset_erp(vap); in ieee80211_reset_bss()
475 ni = ieee80211_alloc_node(&ic->ic_sta, vap, vap->iv_myaddr, in ieee80211_reset_bss()
478 obss = vap->iv_update_bss(vap, ieee80211_ref_node(ni)); in ieee80211_reset_bss()
484 IEEE80211_ADDR_COPY(ni->ni_bssid, vap->iv_myaddr); in ieee80211_reset_bss()
505 check_bss(struct ieee80211vap *vap, struct ieee80211_node *ni) in check_bss() argument
512 if (vap->iv_opmode == IEEE80211_M_IBSS) { in check_bss()
519 if (vap->iv_flags & IEEE80211_F_PRIVACY) { in check_bss()
531 if (vap->iv_des_nssid != 0 && in check_bss()
532 !match_ssid(ni, vap->iv_des_nssid, vap->iv_des_ssid)) in check_bss()
534 if ((vap->iv_flags & IEEE80211_F_DESBSSID) && in check_bss()
535 !IEEE80211_ADDR_EQ(vap->iv_des_bssid, ni->ni_bssid)) in check_bss()
545 check_bss_debug(struct ieee80211vap *vap, struct ieee80211_node *ni) in check_bss_debug() argument
554 if (vap->iv_opmode == IEEE80211_M_IBSS) { in check_bss_debug()
561 if (vap->iv_flags & IEEE80211_F_PRIVACY) { in check_bss_debug()
573 if (vap->iv_des_nssid != 0 && in check_bss_debug()
574 !match_ssid(ni, vap->iv_des_nssid, vap->iv_des_ssid)) in check_bss_debug()
576 if ((vap->iv_flags & IEEE80211_F_DESBSSID) && in check_bss_debug()
577 !IEEE80211_ADDR_EQ(vap->iv_des_bssid, ni->ni_bssid)) in check_bss_debug()
602 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_ibss_merge_check() local
604 if (ni == vap->iv_bss || in ieee80211_ibss_merge_check()
605 IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bss->ni_bssid)) { in ieee80211_ibss_merge_check()
610 if (!check_bss(vap, ni)) { in ieee80211_ibss_merge_check()
612 IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, in ieee80211_ibss_merge_check()
615 if (ieee80211_msg_assoc(vap)) in ieee80211_ibss_merge_check()
616 check_bss_debug(vap, ni); in ieee80211_ibss_merge_check()
618 vap->iv_stats.is_ibss_capmismatch++; in ieee80211_ibss_merge_check()
639 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_ibss_node_check_new() local
645 if (vap->iv_des_nssid == 0 && scan->ssid == NULL) in ieee80211_ibss_node_check_new()
651 if (!! (vap->iv_des_nssid == 0) != !! (scan->ssid == NULL)) in ieee80211_ibss_node_check_new()
663 for (i = 0; i < vap->iv_des_nssid; i++) { in ieee80211_ibss_node_check_new()
665 if (vap->iv_des_ssid[i].len != scan->ssid[1]) in ieee80211_ibss_node_check_new()
669 if (memcmp(vap->iv_des_ssid[i].ssid, scan->ssid + 2, in ieee80211_ibss_node_check_new()
670 vap->iv_des_ssid[i].len) == 0) in ieee80211_ibss_node_check_new()
696 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_ibss_merge() local
702 IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, in ieee80211_ibss_merge()
705 vap->iv_flags&IEEE80211_F_SHPREAMBLE ? "short" : "long", in ieee80211_ibss_merge()
706 vap->iv_flags&IEEE80211_F_SHSLOT ? "short" : "long", in ieee80211_ibss_merge()
707 vap->iv_flags&IEEE80211_F_USEPROT ? ", protection" : "" in ieee80211_ibss_merge()
719 struct ieee80211vap *vap; in gethtadjustflags() local
724 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { in gethtadjustflags()
725 if (vap->iv_state < IEEE80211_S_RUN) in gethtadjustflags()
727 switch (vap->iv_opmode) { in gethtadjustflags()
734 flags |= ieee80211_htchanflags(vap->iv_bss->ni_chan); in gethtadjustflags()
750 struct ieee80211vap *vap; in getvhtadjustflags() local
755 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { in getvhtadjustflags()
756 if (vap->iv_state < IEEE80211_S_RUN) in getvhtadjustflags()
758 switch (vap->iv_opmode) { in getvhtadjustflags()
765 flags |= ieee80211_vhtchanflags(vap->iv_bss->ni_chan); in getvhtadjustflags()
862 struct ieee80211vap *vap = selbs->ni_vap; in ieee80211_sta_join1() local
871 obss = vap->iv_update_bss(vap, selbs); /* NB: caller assumed to bump refcnt */ in ieee80211_sta_join1()
879 vap->iv_state == IEEE80211_S_RUN && in ieee80211_sta_join1()
901 ieee80211_fix_rate(vap->iv_bss, &vap->iv_bss->ni_rates, in ieee80211_sta_join1()
910 ieee80211_vap_reset_erp(vap); in ieee80211_sta_join1()
911 ieee80211_wme_initparams(vap); in ieee80211_sta_join1()
913 if (vap->iv_opmode == IEEE80211_M_STA) { in ieee80211_sta_join1()
916 ieee80211_new_state(vap, IEEE80211_S_ASSOC, 1); in ieee80211_sta_join1()
924 IEEE80211_DPRINTF(vap, IEEE80211_MSG_AUTH, in ieee80211_sta_join1()
927 ieee80211_state_name[vap->iv_state]); in ieee80211_sta_join1()
928 ieee80211_new_state(vap, IEEE80211_S_AUTH, in ieee80211_sta_join1()
932 ieee80211_new_state(vap, IEEE80211_S_RUN, -1); in ieee80211_sta_join1()
937 ieee80211_sta_join(struct ieee80211vap *vap, struct ieee80211_channel *chan, in ieee80211_sta_join() argument
940 struct ieee80211com *ic = vap->iv_ic; in ieee80211_sta_join()
944 ni = ieee80211_alloc_node(&ic->ic_sta, vap, se->se_macaddr, in ieee80211_sta_join()
968 if (vap->iv_opmode == IEEE80211_M_STA) { in ieee80211_sta_join()
1001 vap->iv_dtim_period = se->se_dtimperiod; in ieee80211_sta_join()
1002 vap->iv_dtim_count = 0; in ieee80211_sta_join()
1020 vap->iv_flags_ht & IEEE80211_FHT_HT) { in ieee80211_sta_join()
1036 vap->iv_vht_flags & IEEE80211_FVHT_VHT) { in ieee80211_sta_join()
1099 node_alloc(struct ieee80211vap *vap, const uint8_t macaddr[IEEE80211_ADDR_LEN]) in node_alloc() argument
1235 struct ieee80211vap *vap = ni->ni_vap; in node_cleanup() local
1241 if (vap->iv_opmode != IEEE80211_M_STA) in node_cleanup()
1242 vap->iv_ps_sta--; in node_cleanup()
1244 IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni, in node_cleanup()
1245 "power save mode off, %u sta's in ps mode", vap->iv_ps_sta); in node_cleanup()
1262 if (vap->iv_opmode == IEEE80211_M_MBSS) in node_cleanup()
1283 if (ieee80211_node_psq_drain(ni) != 0 && vap->iv_set_tim != NULL) in node_cleanup()
1284 vap->iv_set_tim(ni, 0); in node_cleanup()
1329 struct ieee80211vap *vap = ni->ni_vap; in node_age() local
1335 ni->ni_psq.psq_len == 0 && vap->iv_set_tim != NULL) in node_age()
1336 vap->iv_set_tim(ni, 0); in node_age()
1425 struct ieee80211vap *vap, const uint8_t macaddr[IEEE80211_ADDR_LEN], in ieee80211_alloc_node() argument
1431 ni = ic->ic_node_alloc(vap, macaddr); in ieee80211_alloc_node()
1433 vap->iv_stats.is_rx_nodealloc++; in ieee80211_alloc_node()
1437 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, in ieee80211_alloc_node()
1444 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, in ieee80211_alloc_node()
1451 ni->ni_txparms = &vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)]; in ieee80211_alloc_node()
1452 ieee80211_crypto_resetkey(vap, &ni->ni_ucastkey, IEEE80211_KEYIX_NONE); in ieee80211_alloc_node()
1459 if (vap->iv_opmode == IEEE80211_M_MBSS) in ieee80211_alloc_node()
1460 ieee80211_mesh_node_init(vap, ni); in ieee80211_alloc_node()
1464 ni->ni_vap = vap; in ieee80211_alloc_node()
1470 vap->iv_stats.is_rx_nodealloc++; in ieee80211_alloc_node()
1477 IEEE80211_NOTE(vap, IEEE80211_MSG_INACT, ni, in ieee80211_alloc_node()
1490 ieee80211_tmp_node(struct ieee80211vap *vap, in ieee80211_tmp_node() argument
1493 struct ieee80211com *ic = vap->iv_ic; in ieee80211_tmp_node()
1496 ni = ic->ic_node_alloc(vap, macaddr); in ieee80211_tmp_node()
1498 struct ieee80211_node *bss = vap->iv_bss; in ieee80211_tmp_node()
1500 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, in ieee80211_tmp_node()
1505 ni->ni_vap = vap; in ieee80211_tmp_node()
1512 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, in ieee80211_tmp_node()
1518 ieee80211_crypto_resetkey(vap, &ni->ni_ucastkey, in ieee80211_tmp_node()
1528 vap->iv_stats.is_rx_nodealloc++; in ieee80211_tmp_node()
1537 vap->iv_stats.is_rx_nodealloc++; in ieee80211_tmp_node()
1543 ieee80211_dup_bss(struct ieee80211vap *vap, in ieee80211_dup_bss() argument
1546 struct ieee80211com *ic = vap->iv_ic; in ieee80211_dup_bss()
1549 ni = ieee80211_alloc_node(&ic->ic_sta, vap, macaddr, __func__, __LINE__); in ieee80211_dup_bss()
1551 struct ieee80211_node *bss = vap->iv_bss; in ieee80211_dup_bss()
1570 ieee80211_node_create_wds(struct ieee80211vap *vap, in ieee80211_node_create_wds() argument
1573 struct ieee80211com *ic = vap->iv_ic; in ieee80211_node_create_wds()
1577 ni = ieee80211_alloc_node(&ic->ic_sta, vap, bssid, __func__, __LINE__); in ieee80211_node_create_wds()
1579 ni->ni_wdsvap = vap; in ieee80211_node_create_wds()
1584 copy_bss(ni, vap->iv_bss); in ieee80211_node_create_wds()
1587 ni->ni_esslen = vap->iv_des_ssid[0].len; in ieee80211_node_create_wds()
1588 memcpy(ni->ni_essid, vap->iv_des_ssid[0].ssid, ni->ni_esslen); in ieee80211_node_create_wds()
1595 if (vap->iv_flags & IEEE80211_F_WME) in ieee80211_node_create_wds()
1598 if (vap->iv_flags & IEEE80211_F_FF) in ieee80211_node_create_wds()
1603 (vap->iv_flags_ht & IEEE80211_FHT_HT)) { in ieee80211_node_create_wds()
1610 if (vap->iv_vht_flags & IEEE80211_FVHT_VHT) { in ieee80211_node_create_wds()
1670 const struct ieee80211vap *vap, const uint8_t macaddr[IEEE80211_ADDR_LEN], in _ieee80211_find_vap_node_locked() argument
1680 if (ni->ni_vap == vap && in _ieee80211_find_vap_node_locked()
1698 const struct ieee80211vap *vap, const uint8_t macaddr[IEEE80211_ADDR_LEN], in _ieee80211_find_vap_node() argument
1704 ni = _ieee80211_find_vap_node_locked(nt, vap, macaddr, func, line); in _ieee80211_find_vap_node()
1716 ieee80211_fakeup_adhoc_node(struct ieee80211vap *vap, in ieee80211_fakeup_adhoc_node() argument
1721 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE | IEEE80211_MSG_ASSOC, in ieee80211_fakeup_adhoc_node()
1723 ni = ieee80211_dup_bss(vap, macaddr); in ieee80211_fakeup_adhoc_node()
1725 struct ieee80211com *ic = vap->iv_ic; in ieee80211_fakeup_adhoc_node()
1728 ni->ni_rates = vap->iv_bss->ni_rates; in ieee80211_fakeup_adhoc_node()
1731 if (vap->iv_opmode == IEEE80211_M_AHDEMO) { in ieee80211_fakeup_adhoc_node()
1742 if (vap->iv_flags & IEEE80211_F_WME) in ieee80211_fakeup_adhoc_node()
1745 if (vap->iv_flags & IEEE80211_F_FF) in ieee80211_fakeup_adhoc_node()
1780 if (vap->iv_opmode == IEEE80211_M_IBSS) { in ieee80211_fakeup_adhoc_node()
1782 vap->iv_myaddr, /* SA */ in ieee80211_fakeup_adhoc_node()
1784 vap->iv_bss->ni_bssid, /* BSSID */ in ieee80211_fakeup_adhoc_node()
1785 vap->iv_bss->ni_essid, in ieee80211_fakeup_adhoc_node()
1786 vap->iv_bss->ni_esslen); /* SSID */ in ieee80211_fakeup_adhoc_node()
1922 ieee80211_add_neighbor(struct ieee80211vap *vap, in ieee80211_add_neighbor() argument
1928 IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, in ieee80211_add_neighbor()
1930 ni = ieee80211_dup_bss(vap, wh->i_addr2);/* XXX alloc_node? */ in ieee80211_add_neighbor()
1932 struct ieee80211com *ic = vap->iv_ic; in ieee80211_add_neighbor()
2044 _ieee80211_find_txnode(struct ieee80211vap *vap, in _ieee80211_find_txnode() argument
2048 struct ieee80211_node_table *nt = &vap->iv_ic->ic_sta; in _ieee80211_find_txnode()
2059 if (vap->iv_opmode == IEEE80211_M_STA || in _ieee80211_find_txnode()
2060 vap->iv_opmode == IEEE80211_M_WDS || in _ieee80211_find_txnode()
2062 ni = ieee80211_ref_node(vap->iv_bss); in _ieee80211_find_txnode()
2068 if (vap->iv_opmode == IEEE80211_M_IBSS || in _ieee80211_find_txnode()
2069 vap->iv_opmode == IEEE80211_M_AHDEMO) { in _ieee80211_find_txnode()
2080 ni = ieee80211_fakeup_adhoc_node(vap, macaddr); in _ieee80211_find_txnode()
2084 IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_OUTPUT, macaddr, in _ieee80211_find_txnode()
2086 vap->iv_stats.is_tx_nonode++; in _ieee80211_find_txnode()
2118 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, in __ieee80211_free_node()
2124 struct ieee80211vap *vap = ni->ni_vap; in __ieee80211_free_node() local
2125 if (vap->iv_aid_bitmap != NULL) in __ieee80211_free_node()
2126 IEEE80211_AID_CLR(vap, ni->ni_associd); in __ieee80211_free_node()
2312 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_table_reset() local
2314 if (vap->iv_auth->ia_node_leave != NULL) in ieee80211_node_table_reset()
2315 vap->iv_auth->ia_node_leave(ni); in ieee80211_node_table_reset()
2316 if (vap->iv_aid_bitmap != NULL) in ieee80211_node_table_reset()
2317 IEEE80211_AID_CLR(vap, ni->ni_associd); in ieee80211_node_table_reset()
2360 struct ieee80211vap *vap = ni->ni_vap; in timeout_stations() local
2369 if (vap->iv_state != IEEE80211_S_RUN) in timeout_stations()
2377 if ((vap->iv_opmode == IEEE80211_M_HOSTAP || in timeout_stations()
2378 vap->iv_opmode == IEEE80211_M_STA) && in timeout_stations()
2393 IEEE80211_NOTE(vap, IEEE80211_MSG_INACT, ni, in timeout_stations()
2404 if (ni == vap->iv_bss) in timeout_stations()
2407 (vap->iv_opmode == IEEE80211_M_IBSS || in timeout_stations()
2408 vap->iv_opmode == IEEE80211_M_AHDEMO)) { in timeout_stations()
2425 if ((vap->iv_flags_ext & IEEE80211_FEXT_INACT) && in timeout_stations()
2427 ni->ni_inact <= vap->iv_inact_probe) && in timeout_stations()
2429 IEEE80211_NOTE(vap, in timeout_stations()
2448 if ((vap->iv_flags_ext & IEEE80211_FEXT_INACT) && in timeout_stations()
2450 IEEE80211_NOTE(vap, in timeout_stations()
2471 vap->iv_stats.is_node_timeout++; in timeout_stations()
2494 struct ieee80211vap *vap; in ieee80211_drain() local
2505 vap = ni->ni_vap; in ieee80211_drain()
2513 if (vap->iv_state != IEEE80211_S_RUN) in ieee80211_drain()
2516 if ((vap->iv_opmode == IEEE80211_M_HOSTAP || in ieee80211_drain()
2517 vap->iv_opmode == IEEE80211_M_STA) && in ieee80211_drain()
2540 ieee80211_vap_timeout(struct ieee80211vap *vap) in ieee80211_vap_timeout() argument
2543 IEEE80211_LOCK_ASSERT(vap->iv_ic); in ieee80211_vap_timeout()
2545 ieee80211_vap_erp_timeout(vap); in ieee80211_vap_timeout()
2546 ieee80211_ht_timeout(vap); in ieee80211_vap_timeout()
2547 ieee80211_vht_timeout(vap); in ieee80211_vap_timeout()
2557 struct ieee80211vap *vap; in ieee80211_node_timeout() local
2574 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) in ieee80211_node_timeout()
2575 ieee80211_vap_timeout(vap); in ieee80211_node_timeout()
2587 struct ieee80211vap *vap, ieee80211_iter_func *f, void *arg) in ieee80211_iterate_nodes_vap() argument
2612 if (vap != NULL && ni->ni_vap != vap) in ieee80211_iterate_nodes_vap()
2616 vap, i, count)); in ieee80211_iterate_nodes_vap()
2698 struct ieee80211vap *vap; in ieee80211_notify_erp_locked() local
2702 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) in ieee80211_notify_erp_locked()
2703 if (vap->iv_opmode == IEEE80211_M_HOSTAP) in ieee80211_notify_erp_locked()
2704 ieee80211_beacon_notify(vap, IEEE80211_BEACON_ERP); in ieee80211_notify_erp_locked()
2714 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_join_11g() local
2726 vap->iv_longslotsta++; in ieee80211_node_join_11g()
2729 vap->iv_longslotsta); in ieee80211_node_join_11g()
2739 ieee80211_vap_set_shortslottime(vap, 0); in ieee80211_node_join_11g()
2748 vap->iv_nonerpsta++; in ieee80211_node_join_11g()
2751 vap->iv_nonerpsta); in ieee80211_node_join_11g()
2759 vap->iv_flags |= IEEE80211_F_USEBARKER; in ieee80211_node_join_11g()
2760 vap->iv_flags &= ~IEEE80211_F_SHPREAMBLE; in ieee80211_node_join_11g()
2761 ieee80211_vap_update_preamble(vap); in ieee80211_node_join_11g()
2767 if (vap->iv_protmode != IEEE80211_PROT_NONE && in ieee80211_node_join_11g()
2768 vap->iv_nonerpsta == 1 && in ieee80211_node_join_11g()
2769 (vap->iv_flags_ext & IEEE80211_FEXT_NONERP_PR) == 0) { in ieee80211_node_join_11g()
2772 vap->iv_flags |= IEEE80211_F_USEPROT; in ieee80211_node_join_11g()
2773 ieee80211_vap_update_erp_protmode(vap); in ieee80211_node_join_11g()
2783 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_join() local
2789 KASSERT(vap->iv_aid_bitmap != NULL, ("no aid bitmap")); in ieee80211_node_join()
2794 for (aid = 1; aid < vap->iv_max_aid; aid++) { in ieee80211_node_join()
2795 if (!IEEE80211_AID_ISSET(vap, aid)) in ieee80211_node_join()
2798 if (aid >= vap->iv_max_aid) { in ieee80211_node_join()
2806 IEEE80211_AID_SET(vap, ni->ni_associd); in ieee80211_node_join()
2807 vap->iv_sta_assoc++; in ieee80211_node_join()
2825 IEEE80211_NOTE(vap, IEEE80211_MSG_ASSOC | IEEE80211_MSG_DEBUG, ni, in ieee80211_node_join()
2828 vap->iv_flags & IEEE80211_F_SHPREAMBLE ? "short" : "long", in ieee80211_node_join()
2829 vap->iv_flags & IEEE80211_F_SHSLOT ? "short" : "long", in ieee80211_node_join()
2830 vap->iv_flags & IEEE80211_F_USEPROT ? ", protection" : "", in ieee80211_node_join()
2840 IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_FF) ? in ieee80211_node_join()
2842 IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_TURBOP) ? in ieee80211_node_join()
2853 if (vap->iv_auth->ia_node_join != NULL) in ieee80211_node_join()
2854 vap->iv_auth->ia_node_join(ni); in ieee80211_node_join()
2860 disable_protection(struct ieee80211vap *vap) in disable_protection() argument
2862 struct ieee80211com *ic = vap->iv_ic; in disable_protection()
2864 KASSERT(vap->iv_nonerpsta == 0 && in disable_protection()
2865 (vap->iv_flags_ext & IEEE80211_FEXT_NONERP_PR) == 0, in disable_protection()
2866 ("%d non ERP stations, flags 0x%x", vap->iv_nonerpsta, in disable_protection()
2867 vap->iv_flags_ext)); in disable_protection()
2869 vap->iv_flags &= ~IEEE80211_F_USEPROT; in disable_protection()
2872 vap->iv_flags |= IEEE80211_F_SHPREAMBLE; in disable_protection()
2873 vap->iv_flags &= ~IEEE80211_F_USEBARKER; in disable_protection()
2875 ieee80211_vap_update_erp_protmode(vap); in disable_protection()
2876 ieee80211_vap_update_preamble(vap); in disable_protection()
2886 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_leave_11g() local
2898 KASSERT(vap->iv_longslotsta > 0, in ieee80211_node_leave_11g()
2899 ("bogus long slot station count %d", vap->iv_longslotsta)); in ieee80211_node_leave_11g()
2900 vap->iv_longslotsta--; in ieee80211_node_leave_11g()
2903 vap->iv_longslotsta); in ieee80211_node_leave_11g()
2907 if (vap->iv_longslotsta == 0) { in ieee80211_node_leave_11g()
2918 ieee80211_vap_set_shortslottime(vap, 1); in ieee80211_node_leave_11g()
2926 KASSERT(vap->iv_nonerpsta > 0, in ieee80211_node_leave_11g()
2927 ("bogus non-ERP station count %d", vap->iv_nonerpsta)); in ieee80211_node_leave_11g()
2928 vap->iv_nonerpsta--; in ieee80211_node_leave_11g()
2930 "non-ERP station leaves, count now %d%s", vap->iv_nonerpsta, in ieee80211_node_leave_11g()
2931 (vap->iv_flags_ext & IEEE80211_FEXT_NONERP_PR) ? in ieee80211_node_leave_11g()
2933 if (vap->iv_nonerpsta == 0 && in ieee80211_node_leave_11g()
2934 (vap->iv_flags_ext & IEEE80211_FEXT_NONERP_PR) == 0) { in ieee80211_node_leave_11g()
2937 disable_protection(vap); in ieee80211_node_leave_11g()
2951 ieee80211_vap_erp_timeout(struct ieee80211vap *vap) in ieee80211_vap_erp_timeout() argument
2954 IEEE80211_LOCK_ASSERT(vap->iv_ic); in ieee80211_vap_erp_timeout()
2956 if ((vap->iv_flags_ext & IEEE80211_FEXT_NONERP_PR) && in ieee80211_vap_erp_timeout()
2957 ieee80211_time_after(ticks, vap->iv_lastnonerp + IEEE80211_NONERP_PRESENT_AGE)) { in ieee80211_vap_erp_timeout()
2958 IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, in ieee80211_vap_erp_timeout()
2960 vap->iv_flags_ext &= ~IEEE80211_FEXT_NONERP_PR; in ieee80211_vap_erp_timeout()
2961 if (vap->iv_nonerpsta == 0) in ieee80211_vap_erp_timeout()
2962 disable_protection(vap); in ieee80211_vap_erp_timeout()
2974 struct ieee80211vap *vap = ni->ni_vap; in ieee80211_node_leave() local
2977 IEEE80211_NOTE(vap, IEEE80211_MSG_ASSOC | IEEE80211_MSG_DEBUG, ni, in ieee80211_node_leave()
2980 KASSERT(vap->iv_opmode != IEEE80211_M_STA, in ieee80211_node_leave()
2981 ("unexpected operating mode %u", vap->iv_opmode)); in ieee80211_node_leave()
2995 if (vap->iv_auth->ia_node_leave != NULL) in ieee80211_node_leave()
2996 vap->iv_auth->ia_node_leave(ni); in ieee80211_node_leave()
2999 IEEE80211_AID_CLR(vap, ni->ni_associd); in ieee80211_node_leave()
3000 vap->iv_sta_assoc--; in ieee80211_node_leave()
3041 struct ieee80211vap *vap = ni->ni_vap; in get_hostap_rssi() local
3047 rssi = vap->iv_ic->ic_node_getrssi(ni); in get_hostap_rssi()
3058 struct ieee80211vap *vap = ni->ni_vap; in get_adhoc_rssi() local
3065 rssi = vap->iv_ic->ic_node_getrssi(ni); in get_adhoc_rssi()
3077 struct ieee80211vap *vap = ni->ni_vap; in get_mesh_rssi() local
3083 rssi = vap->iv_ic->ic_node_getrssi(ni); in get_mesh_rssi()
3092 ieee80211_getrssi(struct ieee80211vap *vap) in ieee80211_getrssi() argument
3095 struct ieee80211com *ic = vap->iv_ic; in ieee80211_getrssi()
3100 switch (vap->iv_opmode) { in ieee80211_getrssi()
3103 ieee80211_iterate_nodes_vap(&ic->ic_sta, vap, get_adhoc_rssi, in ieee80211_getrssi()
3107 ieee80211_iterate_nodes_vap(&ic->ic_sta, vap, get_hostap_rssi, in ieee80211_getrssi()
3112 ieee80211_iterate_nodes_vap(&ic->ic_sta, vap, get_mesh_rssi, in ieee80211_getrssi()
3119 if (vap->iv_bss != NULL) in ieee80211_getrssi()
3120 info.rssi_total = ic->ic_node_getrssi(vap->iv_bss); in ieee80211_getrssi()
3129 ieee80211_getsignal(struct ieee80211vap *vap, int8_t *rssi, int8_t *noise) in ieee80211_getsignal() argument
3132 if (vap->iv_bss == NULL) /* NB: shouldn't happen */ in ieee80211_getsignal()
3134 vap->iv_ic->ic_node_getsignal(vap->iv_bss, rssi, noise); in ieee80211_getsignal()
3136 if (vap->iv_opmode != IEEE80211_M_STA) in ieee80211_getsignal()
3137 *rssi = ieee80211_getrssi(vap); in ieee80211_getsignal()