Lines Matching defs:ni

210 static int ieee80211_ampdu_enable(struct ieee80211_node *ni,
212 static int ieee80211_addba_request(struct ieee80211_node *ni,
215 static int ieee80211_addba_response(struct ieee80211_node *ni,
218 static void ieee80211_addba_stop(struct ieee80211_node *ni,
220 static void null_addba_response_timeout(struct ieee80211_node *ni,
223 static void ieee80211_bar_response(struct ieee80211_node *ni,
465 ieee80211_decap_amsdu(struct ieee80211_node *ni, struct mbuf *m)
467 struct ieee80211vap *vap = ni->ni_vap;
486 ni->ni_macaddr, "a-msdu", "%s", "decap failed");
495 ni->ni_macaddr, "a-msdu",
501 vap->iv_deliver_data(vap, ni, m);
541 ampdu_rx_start(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap,
566 ampdu_rx_stop(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap)
580 ampdu_dispatch(struct ieee80211_node *ni, struct mbuf *m)
584 (void) ieee80211_input(ni, m, 0, 0);
596 ampdu_rx_dispatch(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni)
598 struct ieee80211vap *vap = ni->ni_vap;
611 ampdu_dispatch(ni, m);
643 ampdu_rx_flush(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap)
645 struct ieee80211vap *vap = ni->ni_vap;
658 ampdu_dispatch(ni, m);
671 ampdu_rx_flush_upto(struct ieee80211_node *ni,
674 struct ieee80211vap *vap = ni->ni_vap;
695 ampdu_dispatch(ni, m);
745 ieee80211_ampdu_reorder(struct ieee80211_node *ni, struct mbuf *m)
751 struct ieee80211vap *vap = ni->ni_vap;
760 KASSERT(ni->ni_flags & IEEE80211_NODE_HT, ("not an HT sta"));
776 rap = &ni->ni_rx_ampdu[tid];
789 IEEE80211_MSG_INPUT | IEEE80211_MSG_11N, ni->ni_macaddr,
793 IEEE80211_NODE_STAT(ni, rx_drop);
809 ampdu_dispatch(ni, m);
810 ampdu_rx_dispatch(rap, ni);
859 ampdu_rx_flush(ni, rap);
880 ni->ni_macaddr, "a-mpdu duplicate",
885 IEEE80211_NODE_STAT(ni, rx_dup);
896 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
912 ampdu_rx_flush_upto(ni, rap,
921 IEEE80211_MSG_INPUT | IEEE80211_MSG_11N, ni->ni_macaddr,
928 IEEE80211_NODE_STAT(ni, rx_drop);
943 ieee80211_recv_bar(struct ieee80211_node *ni, struct mbuf *m0)
945 struct ieee80211vap *vap = ni->ni_vap;
954 ni->ni_macaddr, "BAR", "%s", "processing disabled");
962 rap = &ni->ni_rx_ampdu[tid];
969 ni->ni_macaddr, "BAR", "no BA stream, tid %u", tid);
984 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
991 ampdu_rx_flush_upto(ni, rap, rxseq);
1006 IEEE80211_MSG_INPUT | IEEE80211_MSG_11N, ni->ni_macaddr,
1013 IEEE80211_NODE_STAT(ni, rx_drop);
1023 ieee80211_ht_node_init(struct ieee80211_node *ni)
1028 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N,
1029 ni,
1033 if (ni->ni_flags & IEEE80211_NODE_HT) {
1039 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N,
1040 ni,
1043 ieee80211_ht_node_cleanup(ni);
1046 tap = &ni->ni_tx_ampdu[tid];
1048 tap->txa_ni = ni;
1051 ni->ni_flags |= IEEE80211_NODE_HT | IEEE80211_NODE_AMPDU;
1059 ieee80211_ht_node_cleanup(struct ieee80211_node *ni)
1061 struct ieee80211com *ic = ni->ni_ic;
1064 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N,
1065 ni,
1069 KASSERT(ni->ni_flags & IEEE80211_NODE_HT, ("not an HT node"));
1073 struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[i];
1078 ic->ic_ampdu_rx_stop(ni, &ni->ni_rx_ampdu[i]);
1080 ni->ni_htcap = 0;
1081 ni->ni_flags &= ~IEEE80211_NODE_HT_ALL;
1088 ieee80211_ht_node_age(struct ieee80211_node *ni)
1091 struct ieee80211vap *vap = ni->ni_vap;
1095 KASSERT(ni->ni_flags & IEEE80211_NODE_HT, ("not an HT sta"));
1101 rap = &ni->ni_rx_ampdu[tid];
1117 ampdu_rx_flush(ni, rap);
1173 ieee80211_ht_wds_init(struct ieee80211_node *ni)
1175 struct ieee80211vap *vap = ni->ni_vap;
1188 ni->ni_chan = ieee80211_ht_adjust_channel(ni->ni_ic,
1189 ni->ni_chan, ieee80211_htchanflags(ni->ni_chan));
1191 ni->ni_htcap = 0;
1193 ni->ni_htcap |= IEEE80211_HTCAP_SHORTGI20;
1194 if (IEEE80211_IS_CHAN_HT40(ni->ni_chan)) {
1195 ni->ni_htcap |= IEEE80211_HTCAP_CHWIDTH40;
1196 ni->ni_chw = 40;
1197 if (IEEE80211_IS_CHAN_HT40U(ni->ni_chan))
1198 ni->ni_ht2ndchan = IEEE80211_HTINFO_2NDCHAN_ABOVE;
1199 else if (IEEE80211_IS_CHAN_HT40D(ni->ni_chan))
1200 ni->ni_ht2ndchan = IEEE80211_HTINFO_2NDCHAN_BELOW;
1202 ni->ni_htcap |= IEEE80211_HTCAP_SHORTGI40;
1204 ni->ni_chw = 20;
1205 ni->ni_ht2ndchan = IEEE80211_HTINFO_2NDCHAN_NONE;
1207 ni->ni_htctlchan = ni->ni_chan->ic_ieee;
1209 ni->ni_flags |= IEEE80211_NODE_RIFS;
1212 ni->ni_htopmode = 0; /* XXX need protection state */
1213 ni->ni_htstbc = 0; /* XXX need info */
1216 tap = &ni->ni_tx_ampdu[tid];
1220 ni->ni_flags |= IEEE80211_NODE_HT | IEEE80211_NODE_AMPDU;
1290 ieee80211_ht_node_join(struct ieee80211_node *ni)
1292 struct ieee80211com *ic = ni->ni_ic;
1296 if (ni->ni_flags & IEEE80211_NODE_HT) {
1298 if (ni->ni_chw == 40)
1308 ieee80211_ht_node_leave(struct ieee80211_node *ni)
1310 struct ieee80211com *ic = ni->ni_ic;
1314 if (ni->ni_flags & IEEE80211_NODE_HT) {
1316 if (ni->ni_chw == 40)
1373 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
1391 ieee80211_parse_htcap(struct ieee80211_node *ni, const uint8_t *ie)
1399 ni->ni_flags |= IEEE80211_NODE_HTCOMPAT;
1402 ni->ni_flags &= ~IEEE80211_NODE_HTCOMPAT;
1404 ni->ni_htcap = LE_READ_2(ie +
1406 ni->ni_htparam = ie[__offsetof(struct ieee80211_ie_htcap, hc_param)];
1410 htinfo_parse(struct ieee80211_node *ni,
1415 ni->ni_htctlchan = htinfo->hi_ctrlchannel;
1416 ni->ni_ht2ndchan = SM(htinfo->hi_byte1, IEEE80211_HTINFO_2NDCHAN);
1418 ni->ni_htopmode = SM(w, IEEE80211_HTINFO_OPMODE);
1420 ni->ni_htstbc = SM(w, IEEE80211_HTINFO_BASIC_STBCMCS);
1429 ieee80211_parse_htinfo(struct ieee80211_node *ni, const uint8_t *ie)
1433 htinfo_parse(ni, (const struct ieee80211_ie_htinfo *) ie);
1446 htinfo_update_chw(struct ieee80211_node *ni, int htflags)
1448 struct ieee80211com *ic = ni->ni_ic;
1453 chanflags = (ni->ni_chan->ic_flags &~ IEEE80211_CHAN_HT) | htflags;
1454 if (chanflags != ni->ni_chan->ic_flags) {
1456 c = ieee80211_find_channel(ic, ni->ni_chan->ic_freq, chanflags);
1462 c = findhtchan(ic, ni->ni_chan, IEEE80211_CHAN_HT20);
1464 IEEE80211_NOTE(ni->ni_vap,
1465 IEEE80211_MSG_ASSOC | IEEE80211_MSG_11N, ni,
1467 ni->ni_chan->ic_freq);
1471 if (c != NULL && c != ni->ni_chan) {
1472 IEEE80211_NOTE(ni->ni_vap,
1473 IEEE80211_MSG_ASSOC | IEEE80211_MSG_11N, ni,
1477 ni->ni_chan = c;
1483 ni->ni_chw = IEEE80211_IS_CHAN_HT40(ni->ni_chan)? 40 : 20;
1491 htcap_update_mimo_ps(struct ieee80211_node *ni)
1493 uint16_t oflags = ni->ni_flags;
1495 switch (ni->ni_htcap & IEEE80211_HTCAP_SMPS) {
1497 ni->ni_flags |= IEEE80211_NODE_MIMO_PS;
1498 ni->ni_flags |= IEEE80211_NODE_MIMO_RTS;
1501 ni->ni_flags |= IEEE80211_NODE_MIMO_PS;
1502 ni->ni_flags &= ~IEEE80211_NODE_MIMO_RTS;
1506 ni->ni_flags &= ~IEEE80211_NODE_MIMO_PS;
1507 ni->ni_flags &= ~IEEE80211_NODE_MIMO_RTS;
1510 return (oflags ^ ni->ni_flags);
1518 htcap_update_shortgi(struct ieee80211_node *ni)
1520 struct ieee80211vap *vap = ni->ni_vap;
1522 ni->ni_flags &= ~(IEEE80211_NODE_SGI20|IEEE80211_NODE_SGI40);
1523 if ((ni->ni_htcap & IEEE80211_HTCAP_SHORTGI20) &&
1525 ni->ni_flags |= IEEE80211_NODE_SGI20;
1526 if ((ni->ni_htcap & IEEE80211_HTCAP_SHORTGI40) &&
1528 ni->ni_flags |= IEEE80211_NODE_SGI40;
1536 ieee80211_ht_updateparams(struct ieee80211_node *ni,
1539 struct ieee80211vap *vap = ni->ni_vap;
1544 ieee80211_parse_htcap(ni, htcapie);
1546 htcap_update_mimo_ps(ni);
1547 htcap_update_shortgi(ni);
1552 htinfo_parse(ni, htinfo);
1559 if (ni->ni_ht2ndchan == IEEE80211_HTINFO_2NDCHAN_ABOVE)
1561 else if (ni->ni_ht2ndchan == IEEE80211_HTINFO_2NDCHAN_BELOW)
1564 if (htinfo_update_chw(ni, htflags))
1569 ni->ni_flags |= IEEE80211_NODE_RIFS;
1571 ni->ni_flags &= ~IEEE80211_NODE_RIFS;
1581 ieee80211_ht_updatehtcap(struct ieee80211_node *ni, const uint8_t *htcapie)
1583 struct ieee80211vap *vap = ni->ni_vap;
1586 ieee80211_parse_htcap(ni, htcapie);
1588 htcap_update_mimo_ps(ni);
1589 htcap_update_shortgi(ni);
1595 if ((ni->ni_htcap & IEEE80211_HTCAP_CHWIDTH40) &&
1602 (void) htinfo_update_chw(ni, htflags);
1609 ieee80211_setup_htrates(struct ieee80211_node *ni, const uint8_t *ie, int flags)
1611 struct ieee80211com *ic = ni->ni_ic;
1612 struct ieee80211vap *vap = ni->ni_vap;
1628 rs = &ni->ni_htrates;
1639 IEEE80211_MSG_XRATE | IEEE80211_MSG_11N, ni,
1655 return ieee80211_fix_rate(ni, (struct ieee80211_rateset *) rs, flags);
1663 ieee80211_setup_basic_htrates(struct ieee80211_node *ni, const uint8_t *ie)
1672 rs = &ni->ni_htrates;
1674 IEEE80211_NOTE(ni->ni_vap,
1675 IEEE80211_MSG_XRATE | IEEE80211_MSG_11N, ni,
1698 struct ieee80211_node *ni = tap->txa_ni;
1699 struct ieee80211com *ic = ni->ni_ic;
1714 ic->ic_addba_stop(ni, tap);
1736 struct ieee80211_node *ni = tap->txa_ni;
1737 struct ieee80211com *ic = ni->ni_ic;
1742 ic->ic_addba_response_timeout(ni, tap);
1766 null_addba_response_timeout(struct ieee80211_node *ni,
1777 ieee80211_addba_request(struct ieee80211_node *ni,
1799 ieee80211_addba_response(struct ieee80211_node *ni,
1828 ieee80211_addba_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap)
1846 ht_recv_action_ba_addba_request(struct ieee80211_node *ni,
1850 struct ieee80211com *ic = ni->ni_ic;
1851 struct ieee80211vap *vap = ni->ni_vap;
1865 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
1874 rap = &ni->ni_rx_ampdu[tid];
1883 if ((ni->ni_flags & IEEE80211_NODE_AMPDU_RX) &&
1886 ic->ic_ampdu_rx_start(ni, rap,
1892 ni, "reject ADDBA request: %s",
1893 ni->ni_flags & IEEE80211_NODE_AMPDU_RX ?
1906 ic->ic_send_action(ni, IEEE80211_ACTION_CAT_BA,
1912 ht_recv_action_ba_addba_response(struct ieee80211_node *ni,
1916 struct ieee80211com *ic = ni->ni_ic;
1917 struct ieee80211vap *vap = ni->ni_vap;
1931 tap = &ni->ni_tx_ampdu[tid];
1935 ni->ni_macaddr, "ADDBA response",
1944 ni->ni_macaddr, "ADDBA response",
1955 ni->ni_macaddr, "ADDBA response",
1968 ni->ni_macaddr, "ADDBA response",
1976 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
1981 ic->ic_addba_response(ni, tap, code, baparamset, batimeout);
1986 ht_recv_action_ba_delba(struct ieee80211_node *ni,
1990 struct ieee80211com *ic = ni->ni_ic;
2001 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2007 tap = &ni->ni_tx_ampdu[tid];
2008 ic->ic_addba_stop(ni, tap);
2010 rap = &ni->ni_rx_ampdu[tid];
2011 ic->ic_ampdu_rx_stop(ni, rap);
2017 ht_recv_action_ht_txchwidth(struct ieee80211_node *ni,
2025 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2027 __func__, chw, ni->ni_chw != chw ? "*" : "");
2028 if (chw != ni->ni_chw) {
2029 ni->ni_chw = chw;
2036 ht_recv_action_ht_mimopwrsave(struct ieee80211_node *ni,
2045 ni->ni_flags |= IEEE80211_NODE_MIMO_PS;
2047 ni->ni_flags &= ~IEEE80211_NODE_MIMO_PS;
2049 ni->ni_flags |= IEEE80211_NODE_MIMO_RTS;
2051 ni->ni_flags &= ~IEEE80211_NODE_MIMO_RTS;
2053 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2055 (ni->ni_flags & IEEE80211_NODE_MIMO_PS) ? "on" : "off",
2056 (ni->ni_flags & IEEE80211_NODE_MIMO_RTS) ? "+rts" : ""
2074 ieee80211_ampdu_enable(struct ieee80211_node *ni,
2077 struct ieee80211vap *vap = ni->ni_vap;
2092 IEEE80211_NOTE(vap, IEEE80211_MSG_11N, ni,
2105 ieee80211_ampdu_request(struct ieee80211_node *ni,
2108 struct ieee80211com *ic = ni->ni_ic;
2123 tap->txa_start = ni->ni_txseqs[tid];
2133 if (!ic->ic_addba_request(ni, tap, dialogtoken, args[2], args[3])) {
2135 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N,
2136 ni, "%s: could not setup BA stream for TID %d AC %d",
2150 return ic->ic_send_action(ni, IEEE80211_ACTION_CAT_BA,
2159 ieee80211_ampdu_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap,
2162 struct ieee80211com *ic = ni->ni_ic;
2163 struct ieee80211vap *vap = ni->ni_vap;
2170 ni, "%s: stop BA stream for TID %d (reason %d)",
2174 ic->ic_addba_stop(ni, tap);
2178 ic->ic_send_action(ni, IEEE80211_ACTION_CAT_BA,
2182 ni, "%s: BA stream for TID %d not running (reason %d)",
2195 struct ieee80211_node *ni = tap->txa_ni;
2200 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N,
2201 ni, "%s: tid %u flags 0x%x attempts %d", __func__,
2209 struct ieee80211com *ic = ni->ni_ic;
2211 ni->ni_vap->iv_stats.is_ampdu_bar_tx_fail++;
2220 ic->ic_bar_response(ni, tap, 1);
2221 ieee80211_ampdu_stop(ni, tap, IEEE80211_REASON_TIMEOUT);
2223 ni->ni_vap->iv_stats.is_ampdu_bar_tx_retry++;
2224 if (ieee80211_send_bar(ni, tap, tap->txa_seqpending) != 0) {
2225 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N,
2226 ni, "%s: failed to TX, starting timer\n",
2264 bar_tx_complete(struct ieee80211_node *ni, void *arg, int status)
2268 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N,
2269 ni, "%s: tid %u flags 0x%x pending %d status %d",
2273 ni->ni_vap->iv_stats.is_ampdu_bar_tx++;
2277 struct ieee80211com *ic = ni->ni_ic;
2281 ic->ic_bar_response(ni, tap, status);
2287 ieee80211_bar_response(struct ieee80211_node *ni,
2296 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N,
2297 ni, "BAR moves BA win <%u:%u> (%u frames) txseq %u tid %u",
2317 ieee80211_send_bar(struct ieee80211_node *ni,
2321 struct ieee80211vap *vap = ni->ni_vap;
2322 struct ieee80211com *ic = ni->ni_ic;
2343 ieee80211_ref_node(ni);
2359 IEEE80211_ADDR_COPY(bar->i_ra, ni->ni_macaddr);
2376 IEEE80211_NODE_STAT(ni, tx_mgmt); /* XXX tx_ctl? */
2388 ni, "send BAR: tid %u ctl 0x%x start %u (attempt %d)",
2396 ret = ieee80211_raw_output(vap, ni, m, NULL);
2400 ni, "send BAR: failed: (ret = %d)\n",
2417 ieee80211_free_node(ni);
2423 ht_action_output(struct ieee80211_node *ni, struct mbuf *m)
2429 params.ibp_rate0 = ni->ni_txparms->mgmtrate;
2431 params.ibp_try0 = ni->ni_txparms->maxretry;
2432 params.ibp_power = ni->ni_txpower;
2433 return ieee80211_mgmt_output(ni, m, IEEE80211_FC0_SUBTYPE_ACTION,
2449 ht_send_action_ba_addba(struct ieee80211_node *ni,
2452 struct ieee80211vap *vap = ni->ni_vap;
2453 struct ieee80211com *ic = ni->ni_ic;
2458 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2468 ni, ether_sprintf(ni->ni_macaddr), ieee80211_node_refcnt(ni)+1);
2469 ieee80211_ref_node(ni);
2488 return ht_action_output(ni, m);
2491 ieee80211_free_node(ni);
2497 ht_send_action_ba_delba(struct ieee80211_node *ni,
2500 struct ieee80211vap *vap = ni->ni_vap;
2501 struct ieee80211com *ic = ni->ni_ic;
2510 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2516 ni, ether_sprintf(ni->ni_macaddr), ieee80211_node_refcnt(ni)+1);
2517 ieee80211_ref_node(ni);
2531 return ht_action_output(ni, m);
2534 ieee80211_free_node(ni);
2540 ht_send_action_ht_txchwidth(struct ieee80211_node *ni,
2543 struct ieee80211vap *vap = ni->ni_vap;
2544 struct ieee80211com *ic = ni->ni_ic;
2548 IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni,
2550 IEEE80211_IS_CHAN_HT40(ni->ni_chan) ? 40 : 20);
2554 ni, ether_sprintf(ni->ni_macaddr), ieee80211_node_refcnt(ni)+1);
2555 ieee80211_ref_node(ni);
2566 *frm++ = IEEE80211_IS_CHAN_HT40(ni->ni_chan) ?
2570 return ht_action_output(ni, m);
2573 ieee80211_free_node(ni);
2629 ieee80211_add_htcap_body(uint8_t *frm, struct ieee80211_node *ni)
2636 struct ieee80211com *ic = ni->ni_ic;
2637 struct ieee80211vap *vap = ni->ni_vap;
2658 rxmax = MS(ni->ni_htparam, IEEE80211_HTCAP_MAXRXAMPDU);
2659 density = MS(ni->ni_htparam, IEEE80211_HTCAP_MPDUDENSITY);
2667 if (ni->ni_chan != IEEE80211_CHAN_ANYC &&
2668 findhtchan(ic, ni->ni_chan, IEEE80211_CHAN_HT40U) == NULL &&
2669 findhtchan(ic, ni->ni_chan, IEEE80211_CHAN_HT40D) == NULL)
2673 if (IEEE80211_IS_CHAN_HT40(ni->ni_chan))
2705 ieee80211_set_mcsset(ni->ni_ic, frm);
2726 ieee80211_add_htcap(uint8_t *frm, struct ieee80211_node *ni)
2730 return ieee80211_add_htcap_body(frm + 2, ni);
2738 ieee80211_add_htcap_vendor(uint8_t *frm, struct ieee80211_node *ni)
2746 return ieee80211_add_htcap_body(frm + 6, ni);
2776 struct ieee80211_node *ni;
2782 ni = ieee80211_ref_node(vap->iv_bss);
2783 bsschan = ni->ni_chan;
2803 ieee80211_free_node(ni);
2817 ieee80211_add_htinfo_body(uint8_t *frm, struct ieee80211_node *ni)
2819 struct ieee80211vap *vap = ni->ni_vap;
2820 struct ieee80211com *ic = ni->ni_ic;
2826 *frm++ = ieee80211_chan2ieee(ic, ni->ni_chan);
2832 if (IEEE80211_IS_CHAN_HT40U(ni->ni_chan))
2834 else if (IEEE80211_IS_CHAN_HT40D(ni->ni_chan))
2838 if (IEEE80211_IS_CHAN_HT40(ni->ni_chan))
2846 ieee80211_set_basic_htrates(frm, &ni->ni_htrates);
2856 ieee80211_add_htinfo(uint8_t *frm, struct ieee80211_node *ni)
2860 return ieee80211_add_htinfo_body(frm + 2, ni);
2868 ieee80211_add_htinfo_vendor(uint8_t *frm, struct ieee80211_node *ni)
2876 return ieee80211_add_htinfo_body(frm + 6, ni);