Lines Matching refs:mbo
50 const u8 *mbo; in mbo_attr_from_mbo_ie() local
55 mbo = mbo_ie + MBO_IE_HEADER; in mbo_attr_from_mbo_ie()
57 return get_ie(mbo, 2 + ie_len - MBO_IE_HEADER, attr); in mbo_attr_from_mbo_ie()
76 const u8 *mbo, *end; in wpas_mbo_get_bss_attr() local
81 mbo = wpa_bss_get_vendor_ie(bss, MBO_IE_VENDOR_TYPE); in wpas_mbo_get_bss_attr()
82 if (!mbo) in wpas_mbo_get_bss_attr()
85 end = mbo + 2 + mbo[1]; in wpas_mbo_get_bss_attr()
86 mbo += MBO_IE_HEADER; in wpas_mbo_get_bss_attr()
88 return get_ie(mbo, end - mbo, attr); in wpas_mbo_get_bss_attr()
98 const u8 *rsne, *mbo, *oce; in wpas_mbo_check_pmf() local
104 mbo = wpas_mbo_get_bss_attr(bss, MBO_ATTR_ID_AP_CAPA_IND); in wpas_mbo_check_pmf()
106 if (!mbo && !oce) in wpas_mbo_check_pmf()
128 struct wpabuf *mbo, in wpas_mbo_non_pref_chan_attr_body() argument
133 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[start].oper_class); in wpas_mbo_non_pref_chan_attr_body()
136 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[i].chan); in wpas_mbo_non_pref_chan_attr_body()
138 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[start].preference); in wpas_mbo_non_pref_chan_attr_body()
139 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[start].reason); in wpas_mbo_non_pref_chan_attr_body()
143 static void wpas_mbo_non_pref_chan_attr_hdr(struct wpabuf *mbo, size_t size) in wpas_mbo_non_pref_chan_attr_hdr() argument
145 wpabuf_put_u8(mbo, MBO_ATTR_ID_NON_PREF_CHAN_REPORT); in wpas_mbo_non_pref_chan_attr_hdr()
146 wpabuf_put_u8(mbo, size); /* Length */ in wpas_mbo_non_pref_chan_attr_hdr()
151 struct wpabuf *mbo, u8 start, u8 end) in wpas_mbo_non_pref_chan_attr() argument
155 if (size + 2 > wpabuf_tailroom(mbo)) in wpas_mbo_non_pref_chan_attr()
158 wpas_mbo_non_pref_chan_attr_hdr(mbo, size); in wpas_mbo_non_pref_chan_attr()
159 wpas_mbo_non_pref_chan_attr_body(wpa_s, mbo, start, end); in wpas_mbo_non_pref_chan_attr()
163 static void wpas_mbo_non_pref_chan_subelem_hdr(struct wpabuf *mbo, u8 len) in wpas_mbo_non_pref_chan_subelem_hdr() argument
165 wpabuf_put_u8(mbo, WLAN_EID_VENDOR_SPECIFIC); in wpas_mbo_non_pref_chan_subelem_hdr()
166 wpabuf_put_u8(mbo, len); /* Length */ in wpas_mbo_non_pref_chan_subelem_hdr()
167 wpabuf_put_be24(mbo, OUI_WFA); in wpas_mbo_non_pref_chan_subelem_hdr()
168 wpabuf_put_u8(mbo, MBO_ATTR_ID_NON_PREF_CHAN_REPORT); in wpas_mbo_non_pref_chan_subelem_hdr()
173 struct wpabuf *mbo, u8 start, in wpas_mbo_non_pref_chan_subelement() argument
178 if (size + 2 > wpabuf_tailroom(mbo)) in wpas_mbo_non_pref_chan_subelement()
181 wpas_mbo_non_pref_chan_subelem_hdr(mbo, size); in wpas_mbo_non_pref_chan_subelement()
182 wpas_mbo_non_pref_chan_attr_body(wpa_s, mbo, start, end); in wpas_mbo_non_pref_chan_subelement()
187 struct wpabuf *mbo, int subelement) in wpas_mbo_non_pref_chan_attrs() argument
194 wpas_mbo_non_pref_chan_subelem_hdr(mbo, 4); in wpas_mbo_non_pref_chan_attrs()
196 wpas_mbo_non_pref_chan_attr_hdr(mbo, 0); in wpas_mbo_non_pref_chan_attrs()
211 wpas_mbo_non_pref_chan_subelement(wpa_s, mbo, in wpas_mbo_non_pref_chan_attrs()
214 wpas_mbo_non_pref_chan_attr(wpa_s, mbo, start, in wpas_mbo_non_pref_chan_attrs()
229 struct wpabuf *mbo; in wpas_mbo_ie() local
237 mbo = wpabuf_alloc(len - MBO_IE_HEADER); in wpas_mbo_ie()
238 if (!mbo) in wpas_mbo_ie()
242 wpas_mbo_non_pref_chan_attrs(wpa_s, mbo, 0); in wpas_mbo_ie()
248 wpabuf_put_u8(mbo, MBO_ATTR_ID_CELL_DATA_CAPA); in wpas_mbo_ie()
249 wpabuf_put_u8(mbo, 1); in wpas_mbo_ie()
251 wpabuf_put_u8(mbo, MBO_CELL_CAPA_NOT_SUPPORTED); in wpas_mbo_ie()
253 wpabuf_put_u8(mbo, wpa_s->mbo_cell_capa); in wpas_mbo_ie()
258 wpabuf_put_u8(mbo, OCE_ATTR_ID_CAPA_IND); in wpas_mbo_ie()
259 wpabuf_put_u8(mbo, 1); in wpas_mbo_ie()
260 wpabuf_put_u8(mbo, OCE_RELEASE); in wpas_mbo_ie()
263 res = mbo_add_ie(buf, len, wpabuf_head_u8(mbo), wpabuf_len(mbo)); in wpas_mbo_ie()
267 wpabuf_free(mbo); in wpas_mbo_ie()