Lines Matching refs:vap

255 ieee80211_ht_vattach(struct ieee80211vap *vap)
259 vap->iv_ampdu_rxmax = IEEE80211_HTCAP_MAXRXAMPDU_8K;
260 vap->iv_ampdu_density = IEEE80211_HTCAP_MPDUDENSITY_NA;
261 vap->iv_ampdu_limit = vap->iv_ampdu_rxmax;
262 vap->iv_amsdu_limit = vap->iv_htcaps & IEEE80211_HTCAP_MAXAMSDU;
264 vap->iv_ampdu_mintraffic[WME_AC_BK] = 128;
265 vap->iv_ampdu_mintraffic[WME_AC_BE] = 64;
266 vap->iv_ampdu_mintraffic[WME_AC_VO] = 32;
267 vap->iv_ampdu_mintraffic[WME_AC_VI] = 32;
269 vap->iv_htprotmode = IEEE80211_PROT_RTSCTS;
270 vap->iv_curhtprotmode = IEEE80211_HTINFO_OPMODE_PURE;
272 if (vap->iv_htcaps & IEEE80211_HTC_HT) {
278 vap->iv_flags_ht |= IEEE80211_FHT_HT
281 if (vap->iv_htcaps & IEEE80211_HTCAP_SHORTGI20)
282 vap->iv_flags_ht |= IEEE80211_FHT_SHORTGI20;
284 if (vap->iv_htcaps & IEEE80211_HTCAP_CHWIDTH40) {
285 vap->iv_flags_ht |= IEEE80211_FHT_USEHT40;
286 if (vap->iv_htcaps & IEEE80211_HTCAP_SHORTGI40)
287 vap->iv_flags_ht |= IEEE80211_FHT_SHORTGI40;
290 if (vap->iv_htcaps & IEEE80211_HTC_RIFS)
291 vap->iv_flags_ht |= IEEE80211_FHT_RIFS;
294 vap->iv_flags_ht |= IEEE80211_FHT_AMPDU_RX;
295 if (vap->iv_htcaps & IEEE80211_HTC_AMPDU)
296 vap->iv_flags_ht |= IEEE80211_FHT_AMPDU_TX;
297 vap->iv_flags_ht |= IEEE80211_FHT_AMSDU_RX;
298 if (vap->iv_htcaps & IEEE80211_HTC_AMSDU)
299 vap->iv_flags_ht |= IEEE80211_FHT_AMSDU_TX;
301 if (vap->iv_htcaps & IEEE80211_HTCAP_TXSTBC)
302 vap->iv_flags_ht |= IEEE80211_FHT_STBC_TX;
303 if (vap->iv_htcaps & IEEE80211_HTCAP_RXSTBC)
304 vap->iv_flags_ht |= IEEE80211_FHT_STBC_RX;
306 if (vap->iv_htcaps & IEEE80211_HTCAP_LDPC)
307 vap->iv_flags_ht |= IEEE80211_FHT_LDPC_RX;
308 if (vap->iv_htcaps & IEEE80211_HTC_TXLDPC)
309 vap->iv_flags_ht |= IEEE80211_FHT_LDPC_TX;
312 if (vap->iv_flags_ext & IEEE80211_FEXT_WDSLEGACY)
313 vap->iv_flags_ht &= ~IEEE80211_FHT_HT;
317 ieee80211_ht_vdetach(struct ieee80211vap *vap)
473 struct ieee80211vap *vap = ni->ni_vap;
480 vap->iv_stats.is_amsdu_decap++;
491 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY,
493 vap->iv_stats.is_amsdu_tooshort++;
500 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY,
503 vap->iv_stats.is_amsdu_split++;
507 vap->iv_deliver_data(vap, ni, m);
550 struct ieee80211vap *vap = ni->ni_vap;
607 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT | IEEE80211_MSG_11N,
622 vap->iv_stats.is_ampdu_rx_reorder++;
635 IEEE80211_DISCARD_MAC(vap,
642 IEEE80211_DISCARD_MAC(vap,
649 IEEE80211_DISCARD_MAC(vap,
655 vap->iv_stats.is_rx_dup++;
701 struct ieee80211vap *vap = ni->ni_vap;
718 if ((vap->iv_htcaps & IEEE80211_HTC_RX_AMSDU_AMPDU) &&
838 struct ieee80211vap *vap = ni->ni_vap;
864 vap->iv_stats.is_ampdu_rx_copy += rap->rxa_qframes;
879 struct ieee80211vap *vap = ni->ni_vap;
899 vap->iv_stats.is_ampdu_rx_oor += r2;
944 struct ieee80211vap *vap = ni->ni_vap;
963 vap->iv_stats.is_ampdu_rx_oor += r;
1007 struct ieee80211vap *vap = ni->ni_vap;
1053 IEEE80211_DISCARD_MAC(vap,
1057 vap->iv_stats.is_ampdu_rx_drop++;
1141 vap->iv_stats.is_ampdu_rx_age +=
1182 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
1187 vap->iv_stats.is_ampdu_rx_move++;
1206 IEEE80211_DISCARD_MAC(vap,
1213 vap->iv_stats.is_ampdu_rx_drop++;
1230 struct ieee80211vap *vap = ni->ni_vap;
1238 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_11N,
1241 vap->iv_stats.is_ampdu_bar_bad++;
1252 IEEE80211_DISCARD_MAC(vap,
1255 vap->iv_stats.is_ampdu_bar_bad++;
1258 vap->iv_stats.is_ampdu_bar_rx++;
1269 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
1274 vap->iv_stats.is_ampdu_bar_move++;
1290 IEEE80211_DISCARD_MAC(vap,
1297 vap->iv_stats.is_ampdu_bar_oow++;
1379 struct ieee80211vap *vap = ni->ni_vap;
1402 vap->iv_stats.is_ampdu_rx_age += rap->rxa_qframes;
1416 * Adjust a channel to be HT/non-HT according to the vap's configuration.
1460 struct ieee80211vap *vap = ni->ni_vap;
1464 KASSERT(vap->iv_flags_ht & IEEE80211_FHT_HT, ("no HT requested"));
1477 if (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20)
1486 if (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40)
1493 if (vap->iv_flags_ht & IEEE80211_FHT_RIFS)
1517 ieee80211_htinfo_notify(struct ieee80211vap *vap)
1520 IEEE80211_LOCK_ASSERT(vap->iv_ic);
1522 if (vap->iv_opmode != IEEE80211_M_HOSTAP)
1524 if (vap->iv_state != IEEE80211_S_RUN ||
1525 !IEEE80211_IS_CHAN_HT(vap->iv_bss->ni_chan))
1528 IEEE80211_NOTE(vap,
1530 vap->iv_bss,
1533 , vap->iv_sta_assoc
1534 , vap->iv_ht_sta_assoc
1535 , vap->iv_ht40_sta_assoc
1536 , (vap->iv_flags_ht & IEEE80211_FHT_NONHT_PR) ?
1538 , vap->iv_curhtprotmode);
1540 ieee80211_beacon_notify(vap, IEEE80211_BEACON_HTINFO);
1548 htinfo_update(struct ieee80211vap *vap)
1550 struct ieee80211com *ic = vap->iv_ic;
1553 if (vap->iv_sta_assoc != vap->iv_ht_sta_assoc) {
1556 } else if (vap->iv_flags_ht & IEEE80211_FHT_NONHT_PR) {
1561 vap->iv_sta_assoc != vap->iv_ht40_sta_assoc) {
1566 if (protmode != vap->iv_curhtprotmode) {
1567 vap->iv_curhtprotmode = protmode;
1569 ieee80211_vap_update_ht_protmode(vap);
1579 struct ieee80211vap *vap = ni->ni_vap;
1581 IEEE80211_LOCK_ASSERT(vap->iv_ic);
1584 vap->iv_ht_sta_assoc++;
1586 vap->iv_ht40_sta_assoc++;
1588 htinfo_update(vap);
1597 struct ieee80211vap *vap = ni->ni_vap;
1599 IEEE80211_LOCK_ASSERT(vap->iv_ic);
1602 vap->iv_ht_sta_assoc--;
1604 vap->iv_ht40_sta_assoc--;
1606 htinfo_update(vap);
1623 ieee80211_htprot_update(struct ieee80211vap *vap, int protmode)
1625 struct ieee80211com *ic = vap->iv_ic;
1632 vap->iv_flags_ht |= IEEE80211_FHT_NONHT_PR;
1633 vap->iv_lastnonht = ticks;
1635 if (protmode != vap->iv_curhtprotmode &&
1636 (OPMODE(vap->iv_curhtprotmode) != IEEE80211_HTINFO_OPMODE_MIXED ||
1638 vap->iv_curhtprotmode = protmode;
1640 ieee80211_vap_update_ht_protmode(vap);
1655 ieee80211_ht_timeout(struct ieee80211vap *vap)
1658 IEEE80211_LOCK_ASSERT(vap->iv_ic);
1660 if ((vap->iv_flags_ht & IEEE80211_FHT_NONHT_PR) &&
1661 ieee80211_time_after(ticks, vap->iv_lastnonht + IEEE80211_NONHT_PRESENT_AGE)) {
1662 IEEE80211_DPRINTF(vap, IEEE80211_MSG_11N,
1664 vap->iv_flags_ht &= ~IEEE80211_FHT_NONHT_PR;
1665 htinfo_update(vap);
1868 struct ieee80211vap *vap = ni->ni_vap;
1872 (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20))
1875 (vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40))
1886 struct ieee80211vap *vap = ni->ni_vap;
1889 (vap->iv_flags_ht & IEEE80211_FHT_LDPC_TX))
1906 struct ieee80211vap *vap = ni->ni_vap;
1910 if (vap->iv_htcaps & IEEE80211_HTC_SMPS)
1926 (vap->iv_flags_ht & IEEE80211_FHT_RIFS))
1935 struct ieee80211vap *vap = ni->ni_vap;
1939 if (ni->ni_flags & IEEE80211_NODE_VHT && vap->iv_flags_vht & IEEE80211_FVHT_VHT) {
1942 (_IEEE80211_MASKSHIFT(vap->iv_vhtcaps,
1944 (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT160)) {
1954 (_IEEE80211_MASKSHIFT(vap->iv_vhtcaps,
1956 (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT80P80)) {
1965 (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT80)) {
1983 (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT40)) {
1987 (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT40)) {
2019 struct ieee80211vap *vap = ni->ni_vap;
2026 htflags = (vap->iv_flags_ht & IEEE80211_FHT_HT) ?
2031 (vap->iv_flags_ht & IEEE80211_FHT_USEHT40)) {
2060 struct ieee80211vap *vap = ni->ni_vap;
2063 if (vap->iv_htcaps & IEEE80211_HTC_SMPS)
2077 struct ieee80211vap *vap = ni->ni_vap;
2083 htflags = (vap->iv_flags_ht & IEEE80211_FHT_HT) ?
2086 (vap->iv_flags_ht & IEEE80211_FHT_USEHT40)) {
2087 if (IEEE80211_IS_CHAN_HT40U(vap->iv_bss->ni_chan))
2089 else if (IEEE80211_IS_CHAN_HT40D(vap->iv_bss->ni_chan))
2109 struct ieee80211vap *vap = ni->ni_vap;
2135 IEEE80211_NOTE(vap,
2139 vap->iv_stats.is_rx_rstoobig++;
2353 struct ieee80211vap *vap = ni->ni_vap;
2366 /* TODO: this should be a vap flag */
2367 if ((vap->iv_htcaps & IEEE80211_HTC_TX_AMSDU_AMPDU) &&
2408 struct ieee80211vap *vap = ni->ni_vap;
2422 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2442 (vap->iv_flags_ht & IEEE80211_FHT_AMPDU_RX)) {
2449 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
2454 vap->iv_stats.is_addba_reject++;
2469 (vap->iv_htcaps & IEEE80211_HTC_RX_AMSDU_AMPDU))
2485 struct ieee80211vap *vap = ni->ni_vap;
2503 IEEE80211_DISCARD_MAC(vap,
2508 vap->iv_stats.is_addba_norequest++;
2512 IEEE80211_DISCARD_MAC(vap,
2518 vap->iv_stats.is_addba_badtoken++;
2523 IEEE80211_DISCARD_MAC(vap,
2530 vap->iv_stats.is_addba_badpolicy++;
2536 IEEE80211_DISCARD_MAC(vap,
2542 vap->iv_stats.is_addba_badbawinsize++;
2547 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2651 struct ieee80211vap *vap = ni->ni_vap;
2654 vap->iv_ampdu_mintraffic[TID_TO_WME_AC(tap->txa_tid)])
2666 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
2748 struct ieee80211vap *vap = ni->ni_vap;
2754 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
2758 vap->iv_stats.is_ampdu_stop++;
2767 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N,
2771 vap->iv_stats.is_ampdu_stop_failed++;
2907 #define senderr(_x, _v) do { vap->iv_stats._v++; ret = _x; goto bad; } while (0)
2908 struct ieee80211vap *vap = ni->ni_vap;
2946 IEEE80211_ADDR_COPY(bar->i_ta, vap->iv_myaddr);
2973 IEEE80211_NOTE(vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_11N,
2982 ret = ieee80211_raw_output(vap, ni, m, NULL);
2985 IEEE80211_NOTE(vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_11N,
2990 vap->iv_stats.is_ampdu_bar_tx_fail++;
3002 vap->iv_stats.is_ampdu_bar_tx_fail++;
3038 struct ieee80211vap *vap = ni->ni_vap;
3044 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
3053 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE,
3077 vap->iv_stats.is_tx_nobuf++;
3087 struct ieee80211vap *vap = ni->ni_vap;
3097 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
3101 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE,
3120 vap->iv_stats.is_tx_nobuf++;
3130 struct ieee80211vap *vap = ni->ni_vap;
3135 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
3139 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE,
3159 vap->iv_stats.is_tx_nobuf++;
3224 struct ieee80211vap *vap = ni->ni_vap;
3229 caps = vap->iv_htcaps & 0xffff;
3238 if (vap->iv_opmode == IEEE80211_M_STA) {
3240 if (vap->iv_flags_ht & IEEE80211_FHT_USEHT40)
3251 IEEE80211_DPRINTF(vap, IEEE80211_MSG_11N,
3252 "%s: advertised rxmax=%d, density=%d, vap rxmax=%d, density=%d\n",
3256 vap->iv_ampdu_rxmax,
3257 vap->iv_ampdu_density);
3260 if (rxmax > vap->iv_ampdu_rxmax)
3261 rxmax = vap->iv_ampdu_rxmax;
3269 if (vap->iv_ampdu_density > density)
3270 density = vap->iv_ampdu_density;
3290 rxmax = vap->iv_ampdu_rxmax;
3291 density = vap->iv_ampdu_density;
3295 if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20) == 0)
3297 if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40) == 0 ||
3302 if ((vap->iv_flags_ht & IEEE80211_FHT_STBC_RX) == 0)
3306 if ((vap->iv_flags_ht & IEEE80211_FHT_LDPC_RX) == 0)
3334 extcaps = vap->iv_htextcaps & 0xffff;
3361 ieee80211_add_htcap_body_ch(uint8_t *frm, struct ieee80211vap *vap,
3369 struct ieee80211com *ic = vap->iv_ic;
3374 caps = vap->iv_htcaps & 0xffff;
3389 rxmax = vap->iv_ampdu_rxmax;
3390 density = vap->iv_ampdu_density;
3393 if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20) == 0)
3395 if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI40) == 0 ||
3423 extcaps = vap->iv_htextcaps & 0xffff;
3438 ieee80211_add_htcap_ch(uint8_t *frm, struct ieee80211vap *vap,
3443 return ieee80211_add_htcap_body_ch(frm + 2, vap, c);
3485 ieee80211_ht_update_beacon(struct ieee80211vap *vap,
3491 struct ieee80211com *ic = vap->iv_ic;
3495 ni = ieee80211_ref_node(vap->iv_bss);
3500 if (vap->iv_flags_ht & IEEE80211_FHT_RIFS)
3538 struct ieee80211vap *vap = ni->ni_vap;
3547 if (vap->iv_flags_ht & IEEE80211_FHT_RIFS)
3564 frm[1] = vap->iv_curhtprotmode;