Lines Matching refs:frm

1320 ieee80211_parse_edca_params_body(struct ieee80211com *ic, const u_int8_t *frm)
1330 updtcount = frm[0] & 0xf;
1335 frm += 2; /* skip QoS Info & Reserved fields */
1341 ac->ac_acm = (frm[0] >> 4) & 0x1;
1342 ac->ac_aifsn = frm[0] & 0xf;
1343 ac->ac_ecwmin = frm[1] & 0xf;
1344 ac->ac_ecwmax = frm[1] >> 4;
1345 ac->ac_txoplimit = LE_READ_2(frm + 2);
1346 frm += 4;
1356 ieee80211_parse_edca_params(struct ieee80211com *ic, const u_int8_t *frm)
1358 if (frm[1] < 18) {
1362 return ieee80211_parse_edca_params_body(ic, frm + 2);
1366 ieee80211_parse_wmm_params(struct ieee80211com *ic, const u_int8_t *frm)
1368 if (frm[1] < 24) {
1372 return ieee80211_parse_edca_params_body(ic, frm + 8);
1441 ieee80211_parse_rsn_body(struct ieee80211com *ic, const u_int8_t *frm,
1447 efrm = frm + len;
1450 if (LE_READ_2(frm) != 1)
1452 frm += 2;
1470 if (frm + 4 > efrm)
1472 rsn->rsn_groupcipher = ieee80211_parse_rsn_cipher(frm);
1477 frm += 4;
1480 if (frm + 2 > efrm)
1482 m = rsn->rsn_nciphers = LE_READ_2(frm);
1483 frm += 2;
1486 if (frm + m * 4 > efrm)
1490 rsn->rsn_ciphers |= ieee80211_parse_rsn_cipher(frm);
1491 frm += 4;
1501 if (frm + 2 > efrm)
1503 n = rsn->rsn_nakms = LE_READ_2(frm);
1504 frm += 2;
1507 if (frm + n * 4 > efrm)
1511 rsn->rsn_akms |= ieee80211_parse_rsn_akm(frm);
1512 frm += 4;
1516 if (frm + 2 > efrm)
1518 rsn->rsn_caps = LE_READ_2(frm);
1519 frm += 2;
1522 if (frm + 2 > efrm)
1524 s = rsn->rsn_npmkids = LE_READ_2(frm);
1525 frm += 2;
1528 if (frm + s * IEEE80211_PMKID_LEN > efrm)
1531 rsn->rsn_pmkids = frm;
1532 frm += s * IEEE80211_PMKID_LEN;
1536 if (frm + 4 > efrm)
1538 rsn->rsn_groupmgmtcipher = ieee80211_parse_rsn_cipher(frm);
1546 ieee80211_parse_rsn(struct ieee80211com *ic, const u_int8_t *frm,
1549 if (frm[1] < 2) {
1553 return ieee80211_parse_rsn_body(ic, frm + 2, frm[1], rsn);
1557 ieee80211_parse_wpa(struct ieee80211com *ic, const u_int8_t *frm,
1560 if (frm[1] < 6) {
1564 return ieee80211_parse_rsn_body(ic, frm + 6, frm[1] - 4, rsn);
1571 ieee80211_save_ie(const u_int8_t *frm, u_int8_t **ie)
1574 int len = 2 + frm[1];
1583 memcpy(*ie, frm, len);
1609 const u_int8_t *frm, *efrm;
1644 frm = (const u_int8_t *)&wh[1];
1647 tstamp = frm; frm += 8;
1648 bintval = LE_READ_2(frm); frm += 2;
1649 capinfo = LE_READ_2(frm); frm += 2;
1659 while (frm + 2 <= efrm) {
1660 if (frm + 2 + frm[1] > efrm) {
1664 switch (frm[0]) {
1666 ssid = frm;
1669 rates = frm;
1672 if (frm[1] < 1) {
1676 chan = frm[2];
1679 xrates = frm;
1682 if (frm[1] < 1) {
1686 erp = frm[2];
1689 rsnie = frm;
1692 edcaie = frm;
1695 htcaps = frm;
1698 if (frm[1] < 22) {
1702 htop = frm;
1703 chan = frm[2];
1706 vhtcaps = frm;
1709 vhtop = frm;
1712 if (frm[1] < 4) {
1716 tim = frm;
1719 if (frm[1] < 4) {
1723 if (memcmp(frm + 2, MICROSOFT_OUI, 3) == 0) {
1724 if (frm[5] == 1)
1725 wpaie = frm;
1726 else if (frm[1] >= 5 &&
1727 frm[5] == 2 && frm[6] == 1)
1728 wmmie = frm;
1732 frm += 2 + frm[1];
2047 const u_int8_t *frm, *efrm;
2056 frm = (const u_int8_t *)&wh[1];
2060 while (frm + 2 <= efrm) {
2061 if (frm + 2 + frm[1] > efrm) {
2065 switch (frm[0]) {
2067 ssid = frm;
2070 rates = frm;
2073 xrates = frm;
2076 htcaps = frm;
2079 vhtcaps = frm;
2082 frm += 2 + frm[1];
2150 const u_int8_t *frm;
2159 frm = (const u_int8_t *)&wh[1];
2161 algo = LE_READ_2(frm); frm += 2;
2162 seq = LE_READ_2(frm); frm += 2;
2163 status = LE_READ_2(frm); frm += 2;
2203 const u_int8_t *frm, *efrm;
2222 frm = (const u_int8_t *)&wh[1];
2231 capinfo = LE_READ_2(frm); frm += 2;
2232 bintval = LE_READ_2(frm); frm += 2;
2234 frm += IEEE80211_ADDR_LEN; /* skip current AP address */
2240 while (frm + 2 <= efrm) {
2241 if (frm + 2 + frm[1] > efrm) {
2245 switch (frm[0]) {
2247 ssid = frm;
2250 rates = frm;
2253 xrates = frm;
2256 rsnie = frm;
2261 htcaps = frm;
2264 vhtcaps = frm;
2267 if (frm[1] < 4) {
2271 if (memcmp(frm + 2, MICROSOFT_OUI, 3) == 0) {
2272 if (frm[5] == 1)
2273 wpaie = frm;
2275 if (frm[1] == 7 && frm[5] == 2 && frm[6] == 0)
2276 wmeie = frm;
2280 frm += 2 + frm[1];
2547 const u_int8_t *frm, *efrm;
2565 frm = (const u_int8_t *)&wh[1];
2568 capinfo = LE_READ_2(frm); frm += 2;
2569 status = LE_READ_2(frm); frm += 2;
2581 associd = LE_READ_2(frm); frm += 2;
2585 while (frm + 2 <= efrm) {
2586 if (frm + 2 + frm[1] > efrm) {
2590 switch (frm[0]) {
2592 rates = frm;
2595 xrates = frm;
2598 edcaie = frm;
2601 htcaps = frm;
2604 htop = frm;
2607 vhtcaps = frm;
2610 vhtop = frm;
2613 if (frm[1] < 4) {
2617 if (memcmp(frm + 2, MICROSOFT_OUI, 3) == 0) {
2618 if (frm[1] >= 5 && frm[5] == 2 && frm[6] == 1)
2619 wmmie = frm;
2623 frm += 2 + frm[1];
2724 const u_int8_t *frm;
2733 frm = (const u_int8_t *)&wh[1];
2735 reason = LE_READ_2(frm);
2781 const u_int8_t *frm;
2790 frm = (const u_int8_t *)&wh[1];
2792 reason = LE_READ_2(frm);
2836 const u_int8_t *frm;
2858 frm = (const u_int8_t *)&wh[1];
2860 token = frm[2];
2861 params = LE_READ_2(&frm[3]);
2866 timeout = LE_READ_2(&frm[5]);
2867 ssn = LE_READ_2(&frm[7]) >> 4;
3009 const u_int8_t *frm;
3020 frm = (const u_int8_t *)&wh[1];
3022 token = frm[2];
3023 status = LE_READ_2(&frm[3]);
3024 params = LE_READ_2(&frm[5]);
3027 timeout = LE_READ_2(&frm[7]);
3123 const u_int8_t *frm;
3133 frm = (const u_int8_t *)&wh[1];
3135 params = LE_READ_2(&frm[2]);
3136 reason = LE_READ_2(&frm[4]);
3198 const u_int8_t *frm;
3211 frm = (const u_int8_t *)&wh[1];
3216 ni->ni_sa_query_trid = LE_READ_2(&frm[2]);
3235 const u_int8_t *frm;
3248 frm = (const u_int8_t *)&wh[1];
3251 if (ni->ni_sa_query_trid != LE_READ_2(&frm[2])) {
3271 const u_int8_t *frm;
3278 frm = (const u_int8_t *)&wh[1];
3280 switch (frm[0]) {
3282 switch (frm[1]) {
3295 switch (frm[1]) {
3307 DPRINTF(("action frame category %d not handled\n", frm[0]));
3424 const u_int8_t *frm;
3438 frm = (const u_int8_t *)&wh[1];
3441 ctl = LE_READ_2(&frm[0]);
3453 frm += 2; /* skip BlockAckReq Control field */
3456 tid = LE_READ_2(&frm[0]) >> 12;
3457 ssn = LE_READ_2(&frm[2]) >> 4;
3459 frm += 4;
3463 ssn = LE_READ_2(&frm[2]) >> 4;