Lines Matching defs:vap

250 ieee80211_ht_vattach(struct ieee80211vap *vap)
254 vap->iv_ampdu_rxmax = IEEE80211_HTCAP_MAXRXAMPDU_8K;
255 vap->iv_ampdu_density = IEEE80211_HTCAP_MPDUDENSITY_NA;
256 vap->iv_ampdu_limit = vap->iv_ampdu_rxmax;
257 vap->iv_amsdu_limit = vap->iv_htcaps & IEEE80211_HTCAP_MAXAMSDU;
259 vap->iv_ampdu_mintraffic[WME_AC_BK] = 128;
260 vap->iv_ampdu_mintraffic[WME_AC_BE] = 64;
261 vap->iv_ampdu_mintraffic[WME_AC_VO] = 32;
262 vap->iv_ampdu_mintraffic[WME_AC_VI] = 32;
264 vap->iv_htprotmode = IEEE80211_PROT_RTSCTS;
265 vap->iv_curhtprotmode = IEEE80211_HTINFO_OPMODE_PURE;
267 if (vap->iv_htcaps & IEEE80211_HTC_HT) {
273 vap->iv_flags_ht |= IEEE80211_FHT_HT
276 if (vap->iv_htcaps & IEEE80211_HTCAP_SHORTGI20)
277 vap->iv_flags_ht |= IEEE80211_FHT_SHORTGI20;
279 if (vap->iv_htcaps & IEEE80211_HTCAP_CHWIDTH40) {
280 vap->iv_flags_ht |= IEEE80211_FHT_USEHT40;
281 if (vap->iv_htcaps & IEEE80211_HTCAP_SHORTGI40)
282 vap->iv_flags_ht |= IEEE80211_FHT_SHORTGI40;
285 if (vap->iv_htcaps & IEEE80211_HTC_RIFS)
286 vap->iv_flags_ht |= IEEE80211_FHT_RIFS;
289 vap->iv_flags_ht |= IEEE80211_FHT_AMPDU_RX;
290 if (vap->iv_htcaps & IEEE80211_HTC_AMPDU)
291 vap->iv_flags_ht |= IEEE80211_FHT_AMPDU_TX;
292 vap->iv_flags_ht |= IEEE80211_FHT_AMSDU_RX;
293 if (vap->iv_htcaps & IEEE80211_HTC_AMSDU)
294 vap->iv_flags_ht |= IEEE80211_FHT_AMSDU_TX;
296 if (vap->iv_htcaps & IEEE80211_HTCAP_TXSTBC)
297 vap->iv_flags_ht |= IEEE80211_FHT_STBC_TX;
298 if (vap->iv_htcaps & IEEE80211_HTCAP_RXSTBC)
299 vap->iv_flags_ht |= IEEE80211_FHT_STBC_RX;
301 if (vap->iv_htcaps & IEEE80211_HTCAP_LDPC)
302 vap->iv_flags_ht |= IEEE80211_FHT_LDPC_RX;
303 if (vap->iv_htcaps & IEEE80211_HTC_TXLDPC)
304 vap->iv_flags_ht |= IEEE80211_FHT_LDPC_TX;
307 if (vap->iv_flags_ext & IEEE80211_FEXT_WDSLEGACY)
308 vap->iv_flags_ht &= ~IEEE80211_FHT_HT;
312 ieee80211_ht_vdetach(struct ieee80211vap *vap)
468 struct ieee80211vap *vap = ni->ni_vap;
475 vap->iv_stats.is_amsdu_decap++;
486 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY,
488 vap->iv_stats.is_amsdu_tooshort++;
495 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY,
498 vap->iv_stats.is_amsdu_split++;
502 vap->iv_deliver_data(vap, ni, m);
545 struct ieee80211vap *vap = ni->ni_vap;
602 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT | IEEE80211_MSG_11N,
617 vap->iv_stats.is_ampdu_rx_reorder++;
630 IEEE80211_DISCARD_MAC(vap,
637 IEEE80211_DISCARD_MAC(vap,
644 IEEE80211_DISCARD_MAC(vap,
650 vap->iv_stats.is_rx_dup++;
696 struct ieee80211vap *vap = ni->ni_vap;
713 if ((vap->iv_htcaps & IEEE80211_HTC_RX_AMSDU_AMPDU) &&
833 struct ieee80211vap *vap = ni->ni_vap;
859 vap->iv_stats.is_ampdu_rx_copy += rap->rxa_qframes;
874 struct ieee80211vap *vap = ni->ni_vap;
894 vap->iv_stats.is_ampdu_rx_oor += r2;
939 struct ieee80211vap *vap = ni->ni_vap;
958 vap->iv_stats.is_ampdu_rx_oor += r;
1002 struct ieee80211vap *vap = ni->ni_vap;
1048 IEEE80211_DISCARD_MAC(vap,
1052 vap->iv_stats.is_ampdu_rx_drop++;
1136 vap->iv_stats.is_ampdu_rx_age +=
1177 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
1182 vap->iv_stats.is_ampdu_rx_move++;
1201 IEEE80211_DISCARD_MAC(vap,
1208 vap->iv_stats.is_ampdu_rx_drop++;
1225 struct ieee80211vap *vap = ni->ni_vap;
1233 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_11N,
1236 vap->iv_stats.is_ampdu_bar_bad++;
1247 IEEE80211_DISCARD_MAC(vap,
1250 vap->iv_stats.is_ampdu_bar_bad++;
1253 vap->iv_stats.is_ampdu_bar_rx++;
1264 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
1269 vap->iv_stats.is_ampdu_bar_move++;
1285 IEEE80211_DISCARD_MAC(vap,
1292 vap->iv_stats.is_ampdu_bar_oow++;
1374 struct ieee80211vap *vap = ni->ni_vap;
1397 vap->iv_stats.is_ampdu_rx_age += rap->rxa_qframes;
1411 * Adjust a channel to be HT/non-HT according to the vap's configuration.
1455 struct ieee80211vap *vap = ni->ni_vap;
1459 KASSERT(vap->iv_flags_ht & IEEE80211_FHT_HT, ("no HT requested"));
1472 if (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20)
1481 if (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40)
1488 if (vap->iv_flags_ht & IEEE80211_FHT_RIFS)
1512 ieee80211_htinfo_notify(struct ieee80211vap *vap)
1515 IEEE80211_LOCK_ASSERT(vap->iv_ic);
1517 if (vap->iv_opmode != IEEE80211_M_HOSTAP)
1519 if (vap->iv_state != IEEE80211_S_RUN ||
1520 !IEEE80211_IS_CHAN_HT(vap->iv_bss->ni_chan))
1523 IEEE80211_NOTE(vap,
1525 vap->iv_bss,
1528 , vap->iv_sta_assoc
1529 , vap->iv_ht_sta_assoc
1530 , vap->iv_ht40_sta_assoc
1531 , (vap->iv_flags_ht & IEEE80211_FHT_NONHT_PR) ?
1533 , vap->iv_curhtprotmode);
1535 ieee80211_beacon_notify(vap, IEEE80211_BEACON_HTINFO);
1543 htinfo_update(struct ieee80211vap *vap)
1545 struct ieee80211com *ic = vap->iv_ic;
1548 if (vap->iv_sta_assoc != vap->iv_ht_sta_assoc) {
1551 } else if (vap->iv_flags_ht & IEEE80211_FHT_NONHT_PR) {
1556 vap->iv_sta_assoc != vap->iv_ht40_sta_assoc) {
1561 if (protmode != vap->iv_curhtprotmode) {
1562 vap->iv_curhtprotmode = protmode;
1564 ieee80211_vap_update_ht_protmode(vap);
1574 struct ieee80211vap *vap = ni->ni_vap;
1576 IEEE80211_LOCK_ASSERT(vap->iv_ic);
1579 vap->iv_ht_sta_assoc++;
1581 vap->iv_ht40_sta_assoc++;
1583 htinfo_update(vap);
1592 struct ieee80211vap *vap = ni->ni_vap;
1594 IEEE80211_LOCK_ASSERT(vap->iv_ic);
1597 vap->iv_ht_sta_assoc--;
1599 vap->iv_ht40_sta_assoc--;
1601 htinfo_update(vap);
1618 ieee80211_htprot_update(struct ieee80211vap *vap, int protmode)
1620 struct ieee80211com *ic = vap->iv_ic;
1627 vap->iv_flags_ht |= IEEE80211_FHT_NONHT_PR;
1628 vap->iv_lastnonht = ticks;
1630 if (protmode != vap->iv_curhtprotmode &&
1631 (OPMODE(vap->iv_curhtprotmode) != IEEE80211_HTINFO_OPMODE_MIXED ||
1633 vap->iv_curhtprotmode = protmode;
1635 ieee80211_vap_update_ht_protmode(vap);
1650 ieee80211_ht_timeout(struct ieee80211vap *vap)
1653 IEEE80211_LOCK_ASSERT(vap->iv_ic);
1655 if ((vap->iv_flags_ht & IEEE80211_FHT_NONHT_PR) &&
1656 ieee80211_time_after(ticks, vap->iv_lastnonht + IEEE80211_NONHT_PRESENT_AGE)) {
1657 IEEE80211_DPRINTF(vap, IEEE80211_MSG_11N,
1659 vap->iv_flags_ht &= ~IEEE80211_FHT_NONHT_PR;
1660 htinfo_update(vap);
1864 struct ieee80211vap *vap = ni->ni_vap;
1868 (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20))
1871 (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40))
1882 struct ieee80211vap *vap = ni->ni_vap;
1885 (vap->iv_flags_ht & IEEE80211_FHT_LDPC_TX))
1902 struct ieee80211vap *vap = ni->ni_vap;
1906 if (vap->iv_htcaps & IEEE80211_HTC_SMPS)
1922 (vap->iv_flags_ht & IEEE80211_FHT_RIFS))
1931 struct ieee80211vap *vap = ni->ni_vap;
1935 if (ni->ni_flags & IEEE80211_NODE_VHT && vap->iv_vht_flags & IEEE80211_FVHT_VHT) {
1937 IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160MHZ(vap->iv_vht_cap.vht_cap_info) &&
1938 (vap->iv_vht_flags & IEEE80211_FVHT_USEVHT160)) {
1947 IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160_80P80MHZ(vap->iv_vht_cap.vht_cap_info) &&
1948 (vap->iv_vht_flags & IEEE80211_FVHT_USEVHT80P80)) {
1957 (vap->iv_vht_flags & IEEE80211_FVHT_USEVHT80)) {
1975 (vap->iv_vht_flags & IEEE80211_FVHT_USEVHT40)) {
1979 (vap->iv_vht_flags & IEEE80211_FVHT_USEVHT40)) {
2011 struct ieee80211vap *vap = ni->ni_vap;
2018 htflags = (vap->iv_flags_ht & IEEE80211_FHT_HT) ?
2023 (vap->iv_flags_ht & IEEE80211_FHT_USEHT40)) {
2052 struct ieee80211vap *vap = ni->ni_vap;
2055 if (vap->iv_htcaps & IEEE80211_HTC_SMPS)
2069 struct ieee80211vap *vap = ni->ni_vap;
2075 htflags = (vap->iv_flags_ht & IEEE80211_FHT_HT) ?
2078 (vap->iv_flags_ht & IEEE80211_FHT_USEHT40)) {
2079 if (IEEE80211_IS_CHAN_HT40U(vap->iv_bss->ni_chan))
2081 else if (IEEE80211_IS_CHAN_HT40D(vap->iv_bss->ni_chan))
2101 struct ieee80211vap *vap = ni->ni_vap;
2127 IEEE80211_NOTE(vap,
2131 vap->iv_stats.is_rx_rstoobig++;
2345 struct ieee80211vap *vap = ni->ni_vap;
2360 /* TODO: this should be a vap flag */
2361 if ((vap->iv_htcaps & IEEE80211_HTC_TX_AMSDU_AMPDU) &&
2402 struct ieee80211vap *vap = ni->ni_vap;
2416 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2436 (vap->iv_flags_ht & IEEE80211_FHT_AMPDU_RX)) {
2443 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
2448 vap->iv_stats.is_addba_reject++;
2463 (vap->iv_htcaps & IEEE80211_HTC_RX_AMSDU_AMPDU))
2479 struct ieee80211vap *vap = ni->ni_vap;
2501 IEEE80211_DISCARD_MAC(vap,
2506 vap->iv_stats.is_addba_norequest++;
2510 IEEE80211_DISCARD_MAC(vap,
2516 vap->iv_stats.is_addba_badtoken++;
2521 IEEE80211_DISCARD_MAC(vap,
2528 vap->iv_stats.is_addba_badpolicy++;
2534 IEEE80211_DISCARD_MAC(vap,
2540 vap->iv_stats.is_addba_badbawinsize++;
2545 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2659 struct ieee80211vap *vap = ni->ni_vap;
2662 vap->iv_ampdu_mintraffic[TID_TO_WME_AC(tap->txa_tid)])
2674 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
2756 struct ieee80211vap *vap = ni->ni_vap;
2762 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
2766 vap->iv_stats.is_ampdu_stop++;
2775 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
2779 vap->iv_stats.is_ampdu_stop_failed++;
2915 #define senderr(_x, _v) do { vap->iv_stats._v++; ret = _x; goto bad; } while (0)
2916 struct ieee80211vap *vap = ni->ni_vap;
2954 IEEE80211_ADDR_COPY(bar->i_ta, vap->iv_myaddr);
2981 IEEE80211_NOTE(vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_11N,
2990 ret = ieee80211_raw_output(vap, ni, m, NULL);
2993 IEEE80211_NOTE(vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_11N,
2998 vap->iv_stats.is_ampdu_bar_tx_fail++;
3010 vap->iv_stats.is_ampdu_bar_tx_fail++;
3046 struct ieee80211vap *vap = ni->ni_vap;
3052 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
3061 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE,
3085 vap->iv_stats.is_tx_nobuf++;
3095 struct ieee80211vap *vap = ni->ni_vap;
3105 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
3109 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE,
3128 vap->iv_stats.is_tx_nobuf++;
3138 struct ieee80211vap *vap = ni->ni_vap;
3143 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
3147 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE,
3167 vap->iv_stats.is_tx_nobuf++;
3232 struct ieee80211vap *vap = ni->ni_vap;
3237 caps = vap->iv_htcaps & 0xffff;
3246 if (vap->iv_opmode == IEEE80211_M_STA) {
3248 if (vap->iv_flags_ht & IEEE80211_FHT_USEHT40)
3259 IEEE80211_DPRINTF(vap, IEEE80211_MSG_11N,
3260 "%s: advertised rxmax=%d, density=%d, vap rxmax=%d, density=%d\n",
3264 vap->iv_ampdu_rxmax,
3265 vap->iv_ampdu_density);
3268 if (rxmax > vap->iv_ampdu_rxmax)
3269 rxmax = vap->iv_ampdu_rxmax;
3277 if (vap->iv_ampdu_density > density)
3278 density = vap->iv_ampdu_density;
3298 rxmax = vap->iv_ampdu_rxmax;
3299 density = vap->iv_ampdu_density;
3303 if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20) == 0)
3305 if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40) == 0 ||
3310 if ((vap->iv_flags_ht & IEEE80211_FHT_STBC_RX) == 0)
3314 if ((vap->iv_flags_ht & IEEE80211_FHT_LDPC_RX) == 0)
3342 extcaps = vap->iv_htextcaps & 0xffff;
3369 ieee80211_add_htcap_body_ch(uint8_t *frm, struct ieee80211vap *vap,
3377 struct ieee80211com *ic = vap->iv_ic;
3382 caps = vap->iv_htcaps & 0xffff;
3397 rxmax = vap->iv_ampdu_rxmax;
3398 density = vap->iv_ampdu_density;
3401 if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20) == 0)
3403 if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40) == 0 ||
3431 extcaps = vap->iv_htextcaps & 0xffff;
3446 ieee80211_add_htcap_ch(uint8_t *frm, struct ieee80211vap *vap,
3451 return ieee80211_add_htcap_body_ch(frm + 2, vap, c);
3493 ieee80211_ht_update_beacon(struct ieee80211vap *vap,
3499 struct ieee80211com *ic = vap->iv_ic;
3503 ni = ieee80211_ref_node(vap->iv_bss);
3508 if (vap->iv_flags_ht & IEEE80211_FHT_RIFS)
3546 struct ieee80211vap *vap = ni->ni_vap;
3555 if (vap->iv_flags_ht & IEEE80211_FHT_RIFS)
3572 frm[1] = vap->iv_curhtprotmode;
3620 struct ieee80211vap *vap;
3623 vap = ni->ni_vap;
3626 if (vap->iv_ampdu_density > peer_mpdudensity)
3627 peer_mpdudensity = vap->iv_ampdu_density;
3641 struct ieee80211vap *vap;
3644 vap = ni->ni_vap;
3648 return (MIN(vap->iv_ampdu_limit, peer_mpdulimit));
3661 const struct ieee80211vap *vap;
3667 vap = ni->ni_vap;
3672 (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20));
3685 const struct ieee80211vap *vap;
3691 vap = ni->ni_vap;
3696 (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40));
3708 const struct ieee80211vap *vap;
3715 vap = ni->ni_vap;
3716 bss_chan = vap->iv_bss->ni_chan;
3736 struct ieee80211vap *vap;
3742 vap = ni->ni_vap;
3743 bss_chan = vap->iv_bss->ni_chan;