Lines Matching refs:mbo
43 const u8 *mbo; in mbo_attr_from_mbo_ie() local
48 mbo = mbo_ie + MBO_IE_HEADER; in mbo_attr_from_mbo_ie()
50 return get_ie(mbo, 2 + ie_len - MBO_IE_HEADER, attr); in mbo_attr_from_mbo_ie()
69 const u8 *mbo, *end; in wpas_mbo_get_bss_attr() local
74 mbo = wpa_bss_get_vendor_ie(bss, MBO_IE_VENDOR_TYPE); in wpas_mbo_get_bss_attr()
75 if (!mbo) in wpas_mbo_get_bss_attr()
78 end = mbo + 2 + mbo[1]; in wpas_mbo_get_bss_attr()
79 mbo += MBO_IE_HEADER; in wpas_mbo_get_bss_attr()
81 return get_ie(mbo, end - mbo, attr); in wpas_mbo_get_bss_attr()
86 struct wpabuf *mbo, in wpas_mbo_non_pref_chan_attr_body() argument
91 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[start].oper_class); in wpas_mbo_non_pref_chan_attr_body()
94 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[i].chan); in wpas_mbo_non_pref_chan_attr_body()
96 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[start].preference); in wpas_mbo_non_pref_chan_attr_body()
97 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[start].reason); in wpas_mbo_non_pref_chan_attr_body()
101 static void wpas_mbo_non_pref_chan_attr_hdr(struct wpabuf *mbo, size_t size) in wpas_mbo_non_pref_chan_attr_hdr() argument
103 wpabuf_put_u8(mbo, MBO_ATTR_ID_NON_PREF_CHAN_REPORT); in wpas_mbo_non_pref_chan_attr_hdr()
104 wpabuf_put_u8(mbo, size); /* Length */ in wpas_mbo_non_pref_chan_attr_hdr()
109 struct wpabuf *mbo, u8 start, u8 end) in wpas_mbo_non_pref_chan_attr() argument
113 if (size + 2 > wpabuf_tailroom(mbo)) in wpas_mbo_non_pref_chan_attr()
116 wpas_mbo_non_pref_chan_attr_hdr(mbo, size); in wpas_mbo_non_pref_chan_attr()
117 wpas_mbo_non_pref_chan_attr_body(wpa_s, mbo, start, end); in wpas_mbo_non_pref_chan_attr()
121 static void wpas_mbo_non_pref_chan_subelem_hdr(struct wpabuf *mbo, u8 len) in wpas_mbo_non_pref_chan_subelem_hdr() argument
123 wpabuf_put_u8(mbo, WLAN_EID_VENDOR_SPECIFIC); in wpas_mbo_non_pref_chan_subelem_hdr()
124 wpabuf_put_u8(mbo, len); /* Length */ in wpas_mbo_non_pref_chan_subelem_hdr()
125 wpabuf_put_be24(mbo, OUI_WFA); in wpas_mbo_non_pref_chan_subelem_hdr()
126 wpabuf_put_u8(mbo, MBO_ATTR_ID_NON_PREF_CHAN_REPORT); in wpas_mbo_non_pref_chan_subelem_hdr()
131 struct wpabuf *mbo, u8 start, in wpas_mbo_non_pref_chan_subelement() argument
136 if (size + 2 > wpabuf_tailroom(mbo)) in wpas_mbo_non_pref_chan_subelement()
139 wpas_mbo_non_pref_chan_subelem_hdr(mbo, size); in wpas_mbo_non_pref_chan_subelement()
140 wpas_mbo_non_pref_chan_attr_body(wpa_s, mbo, start, end); in wpas_mbo_non_pref_chan_subelement()
145 struct wpabuf *mbo, int subelement) in wpas_mbo_non_pref_chan_attrs() argument
152 wpas_mbo_non_pref_chan_subelem_hdr(mbo, 4); in wpas_mbo_non_pref_chan_attrs()
154 wpas_mbo_non_pref_chan_attr_hdr(mbo, 0); in wpas_mbo_non_pref_chan_attrs()
169 wpas_mbo_non_pref_chan_subelement(wpa_s, mbo, in wpas_mbo_non_pref_chan_attrs()
172 wpas_mbo_non_pref_chan_attr(wpa_s, mbo, start, in wpas_mbo_non_pref_chan_attrs()
188 struct wpabuf *mbo; in wpas_mbo_ie() local
196 mbo = wpabuf_alloc(len - MBO_IE_HEADER); in wpas_mbo_ie()
197 if (!mbo) in wpas_mbo_ie()
201 wpas_mbo_non_pref_chan_attrs(wpa_s, mbo, 0); in wpas_mbo_ie()
207 wpabuf_put_u8(mbo, MBO_ATTR_ID_CELL_DATA_CAPA); in wpas_mbo_ie()
208 wpabuf_put_u8(mbo, 1); in wpas_mbo_ie()
209 wpabuf_put_u8(mbo, wpa_s->conf->mbo_cell_capa); in wpas_mbo_ie()
213 wpabuf_put_u8(mbo, OCE_ATTR_ID_CAPA_IND); in wpas_mbo_ie()
214 wpabuf_put_u8(mbo, 1); in wpas_mbo_ie()
215 wpabuf_put_u8(mbo, OCE_RELEASE); in wpas_mbo_ie()
218 res = mbo_add_ie(buf, len, wpabuf_head_u8(mbo), wpabuf_len(mbo)); in wpas_mbo_ie()
222 wpabuf_free(mbo); in wpas_mbo_ie()