Lines Matching refs:frm

1101 	uint8_t *frm;
1122 m = ieee80211_getmgtframe(&frm, ic->ic_headroom + hdrlen, 0);
2064 ieee80211_add_rates(uint8_t *frm, const struct ieee80211_rateset *rs)
2068 *frm++ = IEEE80211_ELEMID_RATES;
2072 *frm++ = nrates;
2073 memcpy(frm, rs->rs_rates, nrates);
2074 return frm + nrates;
2081 ieee80211_add_xrates(uint8_t *frm, const struct ieee80211_rateset *rs)
2088 *frm++ = IEEE80211_ELEMID_XRATES;
2089 *frm++ = nrates;
2090 memcpy(frm, rs->rs_rates + IEEE80211_RATE_SIZE, nrates);
2091 frm += nrates;
2093 return frm;
2100 ieee80211_add_ssid(uint8_t *frm, const uint8_t *ssid, u_int len)
2102 *frm++ = IEEE80211_ELEMID_SSID;
2103 *frm++ = len;
2104 memcpy(frm, ssid, len);
2105 return frm + len;
2112 ieee80211_add_erp(uint8_t *frm, struct ieee80211vap *vap)
2117 *frm++ = IEEE80211_ELEMID_ERP;
2118 *frm++ = 1;
2144 *frm++ = erp;
2145 return frm;
2152 ieee80211_add_cfparms(uint8_t *frm, struct ieee80211com *ic)
2154 #define ADDSHORT(frm, v) do { \
2155 le16enc(frm, v); \
2156 frm += 2; \
2158 *frm++ = IEEE80211_ELEMID_CFPARMS;
2159 *frm++ = 6;
2160 *frm++ = 0; /* CFP count */
2161 *frm++ = 2; /* CFP period */
2162 ADDSHORT(frm, 0); /* CFP MaxDuration (TU) */
2163 ADDSHORT(frm, 0); /* CFP CurRemaining (TU) */
2164 return frm;
2169 add_appie(uint8_t *frm, const struct ieee80211_appie *ie)
2171 memcpy(frm, ie->ie_data, ie->ie_len);
2172 return frm + ie->ie_len;
2176 add_ie(uint8_t *frm, const uint8_t *ie)
2178 memcpy(frm, ie, 2 + ie[1]);
2179 return frm + 2 + ie[1];
2187 ieee80211_add_wme_info(uint8_t *frm, struct ieee80211_wme_state *wme,
2193 *frm++ = IEEE80211_ELEMID_VENDOR;
2194 *frm++ = sizeof(struct ieee80211_wme_info) - 2;
2195 memcpy(frm, oui, sizeof(oui));
2196 frm += sizeof(oui);
2197 *frm++ = WME_INFO_OUI_SUBTYPE;
2198 *frm++ = WME_VERSION;
2203 *frm = wme->wme_bssChanParams.cap_info;
2205 *frm |= WME_CAPINFO_UAPSD_EN;
2206 frm++;
2213 *frm++ = vap->iv_uapsdinfo;
2216 *frm++ = 0;
2220 return frm;
2227 ieee80211_add_wme_param(uint8_t *frm, struct ieee80211_wme_state *wme,
2230 #define ADDSHORT(frm, v) do { \
2231 le16enc(frm, v); \
2232 frm += 2; \
2245 memcpy(frm, &param, sizeof(param));
2246 frm += __offsetof(struct ieee80211_wme_info, wme_info);
2247 *frm = wme->wme_bssChanParams.cap_info; /* AC info */
2249 *frm |= WME_CAPINFO_UAPSD_EN;
2250 frm++;
2251 *frm++ = 0; /* reserved field */
2256 *frm++ = _IEEE80211_SHIFTMASK(i, WME_PARAM_ACI)
2260 *frm++ = _IEEE80211_SHIFTMASK(ac->wmep_logcwmax,
2265 ADDSHORT(frm, ac->wmep_txopLimit);
2267 return frm;
2276 ieee80211_add_powerconstraint(uint8_t *frm, struct ieee80211vap *vap)
2282 frm[0] = IEEE80211_ELEMID_PWRCNSTR;
2283 frm[1] = 1;
2284 frm[2] = c->ic_maxregpower > limit ? c->ic_maxregpower - limit : 0;
2285 return frm + 3;
2292 ieee80211_add_powercapability(uint8_t *frm, const struct ieee80211_channel *c)
2294 frm[0] = IEEE80211_ELEMID_PWRCAP;
2295 frm[1] = 2;
2296 frm[2] = c->ic_minpower;
2297 frm[3] = c->ic_maxpower;
2298 return frm + 4;
2305 ieee80211_add_supportedchannels(uint8_t *frm, struct ieee80211com *ic)
2309 frm[0] = IEEE80211_ELEMID_SUPPCHAN;
2310 frm[1] = ielen;
2312 memcpy(frm+2, ic->ic_chan_avail, ielen);
2313 return frm + 2 + ielen;
2320 ieee80211_add_quiet(uint8_t *frm, struct ieee80211vap *vap, int update)
2322 struct ieee80211_quiet_ie *quiet = (struct ieee80211_quiet_ie *) frm;
2347 return frm + sizeof(*quiet);
2357 ieee80211_add_csa(uint8_t *frm, struct ieee80211vap *vap)
2360 struct ieee80211_csa_ie *csa = (struct ieee80211_csa_ie *) frm;
2367 return frm + sizeof(*csa);
2374 ieee80211_add_countryie(uint8_t *frm, struct ieee80211com *ic)
2388 return frm;
2391 return add_appie(frm, ic->ic_countryie);
2395 ieee80211_add_wpa(uint8_t *frm, const struct ieee80211vap *vap)
2398 return (add_ie(frm, vap->iv_wpa_ie));
2401 return (frm);
2406 ieee80211_add_rsn(uint8_t *frm, const struct ieee80211vap *vap)
2409 return (add_ie(frm, vap->iv_rsn_ie));
2412 return (frm);
2417 ieee80211_add_qos(uint8_t *frm, const struct ieee80211_node *ni)
2420 *frm++ = IEEE80211_ELEMID_QOS;
2421 *frm++ = 1;
2422 *frm++ = 0;
2425 return (frm);
2474 uint8_t *frm;
2489 frm = IEEE80211_MALLOC(len, M_80211_VAP,
2491 *frmp = frm;
2494 frm = *frmp;
2497 frm = ieee80211_add_ssid(frm, ssid, ssidlen);
2499 frm = ieee80211_add_rates(frm, rs);
2500 frm = ieee80211_add_xrates(frm, rs);
2519 frm = ieee80211_add_htcap_ch(frm, vap, c);
2533 frm = ieee80211_add_vhtcap_ch(frm, vap, c);
2537 frm = ieee80211_add_wpa(frm, vap);
2539 frm = add_appie(frm, vap->iv_appie_probereq);
2542 *frmp = frm;
2562 uint8_t *frm;
2590 m = ieee80211_getmgtframe(&frm,
2599 ret = ieee80211_probereq_ie(vap, ic, &frm, &frmlen, ssid, ssidlen,
2604 m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *);
2694 uint8_t *frm;
2733 m = ieee80211_getmgtframe(&frm,
2741 ((uint16_t *)frm)[0] =
2744 ((uint16_t *)frm)[1] = htole16(arg); /* sequence number */
2745 ((uint16_t *)frm)[2] = htole16(status);/* status */
2748 ((uint16_t *)frm)[3] =
2751 memcpy(&((uint16_t *)frm)[4], ni->ni_challenge,
2779 m = ieee80211_getmgtframe(&frm,
2784 *(uint16_t *)frm = htole16(arg); /* reason */
2812 m = ieee80211_getmgtframe(&frm,
2855 *(uint16_t *)frm = htole16(capinfo);
2856 frm += 2;
2859 *(uint16_t *)frm = htole16(howmany(ic->ic_lintval,
2861 frm += 2;
2864 IEEE80211_ADDR_COPY(frm, bss->ni_bssid);
2865 frm += IEEE80211_ADDR_LEN;
2868 frm = ieee80211_add_ssid(frm, ni->ni_essid, ni->ni_esslen);
2869 frm = ieee80211_add_rates(frm, &ni->ni_rates);
2870 frm = ieee80211_add_rsn(frm, vap);
2871 frm = ieee80211_add_xrates(frm, &ni->ni_rates);
2873 frm = ieee80211_add_powercapability(frm,
2875 frm = ieee80211_add_supportedchannels(frm, ic);
2887 frm = ieee80211_add_htcap(frm, ni);
2894 frm = ieee80211_add_vhtcap(frm, ni);
2897 frm = ieee80211_add_wpa(frm, vap);
2900 frm = ieee80211_add_wme_info(frm, &ic->ic_wme, ni);
2910 frm = ieee80211_add_htcap_vendor(frm, ni);
2914 frm = ieee80211_add_ath(frm,
2922 frm = add_appie(frm, vap->iv_appie_assocreq);
2923 m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *);
2948 m = ieee80211_getmgtframe(&frm,
2970 *(uint16_t *)frm = htole16(capinfo);
2971 frm += 2;
2973 *(uint16_t *)frm = htole16(arg); /* status */
2974 frm += 2;
2977 *(uint16_t *)frm = htole16(ni->ni_associd);
2981 frm += 2;
2983 frm = ieee80211_add_rates(frm, &ni->ni_rates);
2984 frm = ieee80211_add_xrates(frm, &ni->ni_rates);
2987 frm = ieee80211_add_htcap(frm, ni);
2988 frm = ieee80211_add_htinfo(frm, ni);
2992 frm = ieee80211_add_wme_param(frm, &ic->ic_wme,
2995 frm = ieee80211_add_htcap_vendor(frm, ni);
2996 frm = ieee80211_add_htinfo_vendor(frm, ni);
2999 frm = ieee80211_add_vhtcap(frm, ni);
3000 frm = ieee80211_add_vhtinfo(frm, ni);
3004 frm = ieee80211_add_ath(frm,
3011 frm = add_appie(frm, vap->iv_appie_assocresp);
3012 m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *);
3019 m = ieee80211_getmgtframe(&frm,
3024 *(uint16_t *)frm = htole16(arg); /* reason */
3065 uint8_t *frm;
3095 m = ieee80211_getmgtframe(&frm,
3133 memset(frm, 0, 8); /* timestamp should be filled later */
3134 frm += 8;
3135 *(uint16_t *)frm = htole16(bss->ni_intval);
3136 frm += 2;
3138 *(uint16_t *)frm = htole16(capinfo);
3139 frm += 2;
3141 frm = ieee80211_add_ssid(frm, bss->ni_essid, bss->ni_esslen);
3143 frm = ieee80211_add_rates(frm, rs);
3146 *frm++ = IEEE80211_ELEMID_FHPARMS;
3147 *frm++ = 5;
3148 *frm++ = bss->ni_fhdwell & 0x00ff;
3149 *frm++ = (bss->ni_fhdwell >> 8) & 0x00ff;
3150 *frm++ = IEEE80211_FH_CHANSET(
3152 *frm++ = IEEE80211_FH_CHANPAT(
3154 *frm++ = bss->ni_fhindex;
3156 *frm++ = IEEE80211_ELEMID_DSPARMS;
3157 *frm++ = 1;
3158 *frm++ = ieee80211_chan2ieee(ic, bss->ni_chan);
3162 *frm++ = IEEE80211_ELEMID_IBSSPARMS;
3163 *frm++ = 2;
3164 *frm++ = 0; *frm++ = 0; /* TODO: ATIM window */
3168 frm = ieee80211_add_countryie(frm, ic);
3171 frm = ieee80211_add_powerconstraint(frm, vap);
3173 frm = ieee80211_add_csa(frm, vap);
3179 frm = ieee80211_add_quiet(frm, vap, 0);
3183 frm = ieee80211_add_erp(frm, vap);
3184 frm = ieee80211_add_xrates(frm, rs);
3185 frm = ieee80211_add_rsn(frm, vap);
3194 frm = ieee80211_add_htcap(frm, bss);
3195 frm = ieee80211_add_htinfo(frm, bss);
3199 frm = ieee80211_add_vhtcap(frm, bss);
3200 frm = ieee80211_add_vhtinfo(frm, bss);
3202 frm = ieee80211_add_wpa(frm, vap);
3204 frm = ieee80211_add_wme_param(frm, &ic->ic_wme,
3209 frm = ieee80211_add_htcap_vendor(frm, bss);
3210 frm = ieee80211_add_htinfo_vendor(frm, bss);
3215 frm = ieee80211_add_athcaps(frm, bss);
3218 frm = add_appie(frm, vap->iv_appie_proberesp);
3221 frm = ieee80211_add_meshid(frm, vap);
3222 frm = ieee80211_add_meshconf(frm, vap);
3225 m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *);
3447 ieee80211_beacon_construct(struct mbuf *m, uint8_t *frm,
3515 memset(frm, 0, 8); /* XXX timestamp is set by hardware/driver */
3516 frm += 8;
3517 *(uint16_t *)frm = htole16(ni->ni_intval);
3518 frm += 2;
3520 bo->bo_caps = (uint16_t *)frm;
3521 *(uint16_t *)frm = htole16(capinfo);
3522 frm += 2;
3523 *frm++ = IEEE80211_ELEMID_SSID;
3525 *frm++ = ni->ni_esslen;
3526 memcpy(frm, ni->ni_essid, ni->ni_esslen);
3527 frm += ni->ni_esslen;
3529 *frm++ = 0;
3530 frm = ieee80211_add_rates(frm, rs);
3532 *frm++ = IEEE80211_ELEMID_DSPARMS;
3533 *frm++ = 1;
3534 *frm++ = ieee80211_chan2ieee(ic, ni->ni_chan);
3537 bo->bo_cfp = frm;
3538 frm = ieee80211_add_cfparms(frm, ic);
3540 bo->bo_tim = frm;
3542 *frm++ = IEEE80211_ELEMID_IBSSPARMS;
3543 *frm++ = 2;
3544 *frm++ = 0; *frm++ = 0; /* TODO: ATIM window */
3549 struct ieee80211_tim_ie *tie = (struct ieee80211_tim_ie *) frm;
3557 frm += sizeof(struct ieee80211_tim_ie);
3560 bo->bo_tim_trailer = frm;
3563 frm = ieee80211_add_countryie(frm, ic);
3566 frm = ieee80211_add_powerconstraint(frm, vap);
3567 bo->bo_csa = frm;
3569 frm = ieee80211_add_csa(frm, vap);
3571 bo->bo_csa = frm;
3585 bo->bo_quiet = frm;
3586 frm = ieee80211_add_quiet(frm,vap, 0);
3592 bo->bo_erp = frm;
3593 frm = ieee80211_add_erp(frm, vap);
3595 frm = ieee80211_add_xrates(frm, rs);
3596 frm = ieee80211_add_rsn(frm, vap);
3598 frm = ieee80211_add_htcap(frm, ni);
3599 bo->bo_htinfo = frm;
3600 frm = ieee80211_add_htinfo(frm, ni);
3604 frm = ieee80211_add_vhtcap(frm, ni);
3605 bo->bo_vhtinfo = frm;
3606 frm = ieee80211_add_vhtinfo(frm, ni);
3612 frm = ieee80211_add_wpa(frm, vap);
3614 bo->bo_wme = frm;
3615 frm = ieee80211_add_wme_param(frm, &ic->ic_wme,
3620 frm = ieee80211_add_htcap_vendor(frm, ni);
3621 frm = ieee80211_add_htinfo_vendor(frm, ni);
3626 bo->bo_ath = frm;
3627 frm = ieee80211_add_athcaps(frm, ni);
3632 bo->bo_tdma = frm;
3633 frm = ieee80211_add_tdma(frm, vap);
3637 bo->bo_appie = frm;
3639 frm = add_appie(frm, vap->iv_appie_beacon);
3645 frm = ieee80211_add_meshid(frm, vap);
3646 bo->bo_meshconf = frm;
3647 frm = ieee80211_add_meshconf(frm, vap);
3650 bo->bo_tim_trailer_len = frm - bo->bo_tim_trailer;
3651 bo->bo_csa_trailer_len = frm - bo->bo_csa;
3652 m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *);
3667 uint8_t *frm;
3748 m = ieee80211_getmgtframe(&frm,
3756 ieee80211_beacon_construct(m, frm, ni);
4091 uint8_t *frm;
4107 frm = bo->bo_appie;
4109 frm = add_appie(frm, aie);