Lines Matching refs:frm

160 	const u_int8_t *frm = (const uint8_t *)&wh[1];
163 if (frm[0] == IEEE80211_CATEG_BA && frm[1] < nitems(categ_ba_name))
164 return categ_ba_name[frm[1]];
726 ieee80211_add_capinfo(u_int8_t *frm, struct ieee80211com *ic,
750 LE_WRITE_2(frm, capinfo);
751 return frm + 2;
758 ieee80211_add_ssid(u_int8_t *frm, const u_int8_t *ssid, u_int len)
760 *frm++ = IEEE80211_ELEMID_SSID;
761 *frm++ = len;
762 memcpy(frm, ssid, len);
763 return frm + len;
770 ieee80211_add_rates(u_int8_t *frm, const struct ieee80211_rateset *rs)
774 *frm++ = IEEE80211_ELEMID_RATES;
776 *frm++ = nrates;
777 memcpy(frm, rs->rs_rates, nrates);
778 return frm + nrates;
786 ieee80211_add_ds_params(u_int8_t *frm, struct ieee80211com *ic,
789 *frm++ = IEEE80211_ELEMID_DSPARMS;
790 *frm++ = 1;
791 *frm++ = ieee80211_chan2ieee(ic, ni->ni_chan);
792 return frm;
799 ieee80211_add_tim(u_int8_t *frm, struct ieee80211com *ic)
817 *frm++ = IEEE80211_ELEMID_TIM;
818 *frm++ = len + 3; /* length */
819 *frm++ = ic->ic_dtim_count; /* DTIM count */
820 *frm++ = ic->ic_dtim_period; /* DTIM period */
823 *frm = offset;
826 *frm |= 0x01;
827 frm++;
830 memcpy(frm, &ic->ic_tim_bitmap[offset], len);
831 return frm + len;
838 ieee80211_add_ibss_params(u_int8_t *frm, const struct ieee80211_node *ni)
840 *frm++ = IEEE80211_ELEMID_IBSSPARMS;
841 *frm++ = 2;
842 LE_WRITE_2(frm, 0); /* TODO: ATIM window */
843 return frm + 2;
850 ieee80211_add_edca_params(u_int8_t *frm, struct ieee80211com *ic)
855 *frm++ = IEEE80211_ELEMID_EDCAPARMS;
856 *frm++ = 18; /* length */
857 *frm++ = 0; /* QoS Info */
858 *frm++ = 0; /* reserved */
865 *frm++ = (aci << 5) | ((ac->ac_acm & 0x1) << 4) |
867 *frm++ = (ac->ac_ecwmax << 4) |
869 LE_WRITE_2(frm, ac->ac_txoplimit); frm += 2;
871 return frm;
878 ieee80211_add_erp(u_int8_t *frm, struct ieee80211com *ic)
883 *frm++ = IEEE80211_ELEMID_ERP;
884 *frm++ = 1;
907 *frm++ = erp;
908 return frm;
916 ieee80211_add_qos_capability(u_int8_t *frm, struct ieee80211com *ic)
918 *frm++ = IEEE80211_ELEMID_QOS_CAP;
919 *frm++ = 1;
920 *frm++ = 0; /* QoS Info */
921 return frm;
930 ieee80211_add_wme_info(uint8_t *frm, struct ieee80211com *ic)
932 *frm++ = IEEE80211_ELEMID_VENDOR;
933 *frm++ = 7;
934 memcpy(frm, MICROSOFT_OUI, 3); frm += 3;
935 *frm++ = 2; /* OUI type */
936 *frm++ = 0; /* OUI subtype */
937 *frm++ = 1; /* version */
938 *frm++ = 0; /* info */
940 return frm;
948 ieee80211_add_wme_param(uint8_t *frm, struct ieee80211com *ic)
953 *frm++ = IEEE80211_ELEMID_VENDOR;
954 *frm++ = 24;
955 memcpy(frm, MICROSOFT_OUI, 3); frm += 3;
956 *frm++ = 2; /* OUI type */
957 *frm++ = 1; /* OUI subtype */
958 *frm++ = 1; /* version */
959 *frm++ = 0; /* info */
960 *frm++ = 0; /* reserved */
967 *frm++ = (aci << 5) | ((ac->ac_acm & 0x1) << 4) |
969 *frm++ = (ac->ac_ecwmax << 4) |
971 LE_WRITE_2(frm, ac->ac_txoplimit); frm += 2;
974 return frm;
982 ieee80211_add_rsn_body(u_int8_t *frm, struct ieee80211com *ic,
990 LE_WRITE_2(frm, 1); frm += 2;
993 memcpy(frm, oui, 3); frm += 3;
996 *frm++ = 1;
999 *frm++ = 2;
1002 *frm++ = 4;
1005 *frm++ = 5;
1012 pcount = frm; frm += 2;
1016 memcpy(frm, oui, 3); frm += 3;
1017 *frm++ = 0;
1021 memcpy(frm, oui, 3); frm += 3;
1022 *frm++ = 2;
1026 memcpy(frm, oui, 3); frm += 3;
1027 *frm++ = 4;
1033 pcount = frm; frm += 2;
1037 memcpy(frm, oui, 3); frm += 3;
1038 *frm++ = 1;
1042 memcpy(frm, oui, 3); frm += 3;
1043 *frm++ = 2;
1047 memcpy(frm, oui, 3); frm += 3;
1048 *frm++ = 5;
1052 memcpy(frm, oui, 3); frm += 3;
1053 *frm++ = 6;
1060 return frm;
1072 LE_WRITE_2(frm, rsncaps); frm += 2;
1076 LE_WRITE_2(frm, 1); frm += 2;
1078 memcpy(frm, ni->ni_pmkid, IEEE80211_PMKID_LEN);
1079 frm += IEEE80211_PMKID_LEN;
1083 return frm;
1087 LE_WRITE_2(frm, 0); frm += 2;
1091 memcpy(frm, oui, 3); frm += 3;
1094 *frm++ = 6;
1100 return frm;
1104 ieee80211_add_rsn(u_int8_t *frm, struct ieee80211com *ic,
1109 *frm++ = IEEE80211_ELEMID_RSN;
1110 plen = frm++; /* length filled in later */
1111 frm = ieee80211_add_rsn_body(frm, ic, ni, 0);
1114 *plen = frm - plen - 1;
1115 return frm;
1123 ieee80211_add_wpa(u_int8_t *frm, struct ieee80211com *ic,
1128 *frm++ = IEEE80211_ELEMID_VENDOR;
1129 plen = frm++; /* length filled in later */
1130 memcpy(frm, MICROSOFT_OUI, 3); frm += 3;
1131 *frm++ = 1; /* WPA */
1132 frm = ieee80211_add_rsn_body(frm, ic, ni, 1);
1135 *plen = frm - plen - 1;
1136 return frm;
1143 ieee80211_add_xrates(u_int8_t *frm, const struct ieee80211_rateset *rs)
1149 *frm++ = IEEE80211_ELEMID_XRATES;
1151 *frm++ = nrates;
1152 memcpy(frm, rs->rs_rates + IEEE80211_RATE_SIZE, nrates);
1153 return frm + nrates;
1160 ieee80211_add_htcaps(u_int8_t *frm, struct ieee80211com *ic)
1162 *frm++ = IEEE80211_ELEMID_HTCAPS;
1163 *frm++ = 26;
1164 LE_WRITE_2(frm, ic->ic_htcaps); frm += 2;
1165 *frm++ = ic->ic_ampdu_params;
1166 memcpy(frm, ic->ic_sup_mcs, 10); frm += 10;
1167 LE_WRITE_2(frm, (ic->ic_max_rxrate & IEEE80211_MCS_RX_RATE_HIGH));
1168 frm += 2;
1169 *frm++ = ic->ic_tx_mcs_set;
1170 *frm++ = 0; /* reserved */
1171 *frm++ = 0; /* reserved */
1172 *frm++ = 0; /* reserved */
1173 LE_WRITE_2(frm, ic->ic_htxcaps); frm += 2;
1174 LE_WRITE_4(frm, ic->ic_txbfcaps); frm += 4;
1175 *frm++ = ic->ic_aselcaps;
1176 return frm;
1184 ieee80211_add_htop(u_int8_t *frm, struct ieee80211com *ic)
1186 *frm++ = IEEE80211_ELEMID_HTOP;
1187 *frm++ = 22;
1188 *frm++ = ieee80211_chan2ieee(ic, ic->ic_bss->ni_chan);
1189 *frm++ = ic->ic_bss->ni_htop0;
1190 LE_WRITE_2(frm, ic->ic_bss->ni_htop1); frm += 2;
1191 LE_WRITE_2(frm, ic->ic_bss->ni_htop2); frm += 2;
1192 memset(frm, 0, 16); frm += 16;
1193 return frm;
1201 ieee80211_add_vhtcaps(u_int8_t *frm, struct ieee80211com *ic)
1203 *frm++ = IEEE80211_ELEMID_VHTCAPS;
1204 *frm++ = 12;
1205 LE_WRITE_4(frm, ic->ic_vhtcaps); frm += 4;
1206 LE_WRITE_2(frm, ic->ic_vht_rxmcs); frm += 2;
1207 LE_WRITE_2(frm, ic->ic_vht_rx_max_lgi_mbit_s); frm += 2;
1208 LE_WRITE_2(frm, ic->ic_vht_txmcs); frm += 2;
1209 LE_WRITE_2(frm, ic->ic_vht_tx_max_lgi_mbit_s); frm += 2;
1210 return frm;
1218 ieee80211_add_tie(u_int8_t *frm, u_int8_t type, u_int32_t value)
1220 *frm++ = IEEE80211_ELEMID_TIE;
1221 *frm++ = 5; /* length */
1222 *frm++ = type; /* Timeout Interval type */
1223 LE_WRITE_4(frm, value);
1224 return frm + 4;
1263 u_int8_t *frm;
1275 frm = mtod(m, u_int8_t *);
1276 frm = ieee80211_add_ssid(frm, ic->ic_des_essid, ic->ic_des_esslen);
1277 frm = ieee80211_add_rates(frm, rs);
1279 frm = ieee80211_add_xrates(frm, rs);
1281 frm = ieee80211_add_htcaps(frm, ic);
1282 frm = ieee80211_add_wme_info(frm, ic);
1285 frm = ieee80211_add_htcaps(frm, ic);
1287 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);
1313 u_int8_t *frm;
1335 frm = mtod(m, u_int8_t *);
1336 memset(frm, 0, 8); frm += 8; /* timestamp is set by hardware */
1337 LE_WRITE_2(frm, ic->ic_bss->ni_intval); frm += 2;
1338 frm = ieee80211_add_capinfo(frm, ic, ic->ic_bss);
1339 frm = ieee80211_add_ssid(frm, ic->ic_bss->ni_essid,
1341 frm = ieee80211_add_rates(frm, rs);
1342 frm = ieee80211_add_ds_params(frm, ic, ic->ic_bss);
1344 frm = ieee80211_add_ibss_params(frm, ic->ic_bss);
1346 frm = ieee80211_add_erp(frm, ic);
1348 frm = ieee80211_add_xrates(frm, rs);
1351 frm = ieee80211_add_rsn(frm, ic, ic->ic_bss);
1353 frm = ieee80211_add_edca_params(frm, ic);
1356 frm = ieee80211_add_wpa(frm, ic, ic->ic_bss);
1358 frm = ieee80211_add_htcaps(frm, ic);
1359 frm = ieee80211_add_htop(frm, ic);
1360 frm = ieee80211_add_wme_param(frm, ic);
1363 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);
1380 u_int8_t *frm;
1388 frm = mtod(m, u_int8_t *);
1389 LE_WRITE_2(frm, IEEE80211_AUTH_ALG_OPEN); frm += 2;
1390 LE_WRITE_2(frm, seq); frm += 2;
1391 LE_WRITE_2(frm, status);
1435 u_int8_t *frm;
1458 frm = mtod(m, u_int8_t *);
1467 LE_WRITE_2(frm, capinfo); frm += 2;
1468 LE_WRITE_2(frm, ic->ic_lintval); frm += 2;
1470 IEEE80211_ADDR_COPY(frm, ic->ic_bss->ni_bssid);
1471 frm += IEEE80211_ADDR_LEN;
1473 frm = ieee80211_add_ssid(frm, ni->ni_essid, ni->ni_esslen);
1474 frm = ieee80211_add_rates(frm, rs);
1476 frm = ieee80211_add_xrates(frm, rs);
1479 frm = ieee80211_add_rsn(frm, ic, ni);
1481 frm = ieee80211_add_qos_capability(frm, ic);
1484 frm = ieee80211_add_wpa(frm, ic, ni);
1486 frm = ieee80211_add_htcaps(frm, ic);
1487 frm = ieee80211_add_wme_info(frm, ic);
1490 frm = ieee80211_add_vhtcaps(frm, ic);
1492 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);
1516 u_int8_t *frm;
1529 frm = mtod(m, u_int8_t *);
1530 frm = ieee80211_add_capinfo(frm, ic, ni);
1531 LE_WRITE_2(frm, status); frm += 2;
1533 LE_WRITE_2(frm, ni->ni_associd);
1535 LE_WRITE_2(frm, 0);
1536 frm += 2;
1537 frm = ieee80211_add_rates(frm, rs);
1539 frm = ieee80211_add_xrates(frm, rs);
1541 frm = ieee80211_add_edca_params(frm, ic);
1545 frm = ieee80211_add_tie(frm, 3, 1000 /* XXX */);
1548 frm = ieee80211_add_htcaps(frm, ic);
1549 frm = ieee80211_add_htop(frm, ic);
1550 frm = ieee80211_add_wme_param(frm, ic);
1553 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);
1595 u_int8_t *frm;
1601 frm = mtod(m, u_int8_t *);
1602 *frm++ = IEEE80211_CATEG_BA;
1603 *frm++ = IEEE80211_ACTION_ADDBA_REQ;
1604 *frm++ = ba->ba_token;
1605 LE_WRITE_2(frm, ba->ba_params); frm += 2;
1606 LE_WRITE_2(frm, ba->ba_timeout_val / IEEE80211_DUR_TU); frm += 2;
1607 LE_WRITE_2(frm, ba->ba_winstart << IEEE80211_SEQ_SEQ_SHIFT); frm += 2;
1609 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);
1693 u_int8_t *frm;
1700 frm = mtod(m, u_int8_t *);
1701 *frm++ = IEEE80211_CATEG_BA;
1702 *frm++ = IEEE80211_ACTION_ADDBA_RESP;
1703 *frm++ = token;
1704 LE_WRITE_2(frm, status); frm += 2;
1709 LE_WRITE_2(frm, params); frm += 2;
1711 LE_WRITE_2(frm, ba->ba_timeout_val / IEEE80211_DUR_TU);
1713 LE_WRITE_2(frm, 0);
1714 frm += 2;
1716 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);
1733 u_int8_t *frm;
1740 frm = mtod(m, u_int8_t *);
1741 *frm++ = IEEE80211_CATEG_BA;
1742 *frm++ = IEEE80211_ACTION_DELBA;
1746 LE_WRITE_2(frm, params); frm += 2;
1747 LE_WRITE_2(frm, reason); frm += 2;
1749 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);
1765 u_int8_t *frm;
1771 frm = mtod(m, u_int8_t *);
1772 *frm++ = IEEE80211_CATEG_SA_QUERY;
1773 *frm++ = action; /* ACTION_SA_QUERY_REQ/RESP */
1774 LE_WRITE_2(frm, ni->ni_sa_query_trid); frm += 2;
1776 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);
1988 uint8_t *frm;
2006 frm = (uint8_t *)&wh[1];
2009 LE_WRITE_2(frm, ctl);
2010 frm += 2;
2012 LE_WRITE_2(frm, ssn << IEEE80211_SEQ_SEQ_SHIFT);
2013 frm += 2;
2015 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);
2045 u_int8_t *frm;
2081 frm = (u_int8_t *)&wh[1];
2082 memset(frm, 0, 8); frm += 8; /* timestamp is set by hardware */
2083 LE_WRITE_2(frm, ni->ni_intval); frm += 2;
2084 frm = ieee80211_add_capinfo(frm, ic, ni);
2086 frm = ieee80211_add_ssid(frm, NULL, 0);
2088 frm = ieee80211_add_ssid(frm, ni->ni_essid, ni->ni_esslen);
2089 frm = ieee80211_add_rates(frm, rs);
2090 frm = ieee80211_add_ds_params(frm, ic, ni);
2092 frm = ieee80211_add_ibss_params(frm, ni);
2094 frm = ieee80211_add_tim(frm, ic);
2096 frm = ieee80211_add_erp(frm, ic);
2098 frm = ieee80211_add_xrates(frm, rs);
2101 frm = ieee80211_add_rsn(frm, ic, ni);
2103 frm = ieee80211_add_edca_params(frm, ic);
2106 frm = ieee80211_add_wpa(frm, ic, ni);
2108 frm = ieee80211_add_htcaps(frm, ic);
2109 frm = ieee80211_add_htop(frm, ic);
2110 frm = ieee80211_add_wme_param(frm, ic);
2113 m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *);