elem_count, elem_offset, NULL, 0, rnr_elem,
&rnr_elem_count, rnr_elem_offset, rnr_len);
- params->mbssid_tx_iface = tx_bss->conf->iface;
- params->mbssid_index = hostapd_mbssid_get_bss_index(hapd);
- params->mbssid_elem = elem;
- params->mbssid_elem_len = end - elem;
- params->mbssid_elem_count = elem_count;
- params->mbssid_elem_offset = elem_offset;
- params->rnr_elem = rnr_elem;
- params->rnr_elem_len = rnr_len;
- params->rnr_elem_count = rnr_elem_count;
- params->rnr_elem_offset = rnr_elem_offset;
+ params->mbssid.mbssid_tx_iface = tx_bss->conf->iface;
+ params->mbssid.mbssid_index = hostapd_mbssid_get_bss_index(hapd);
+ params->mbssid.mbssid_elem = elem;
+ params->mbssid.mbssid_elem_len = end - elem;
+ params->mbssid.mbssid_elem_count = elem_count;
+ params->mbssid.mbssid_elem_offset = elem_offset;
+ params->mbssid.rnr_elem = rnr_elem;
+ params->mbssid.rnr_elem_len = rnr_len;
+ params->mbssid.rnr_elem_count = rnr_elem_count;
+ params->mbssid.rnr_elem_offset = rnr_elem_offset;
if (iface->conf->mbssid == ENHANCED_MBSSID_ENABLED)
- params->ema = true;
+ params->mbssid.ema = true;
- params->mbssid_tx_iface_linkid = -1;
+ params->mbssid.mbssid_tx_iface_linkid = -1;
#ifdef CONFIG_IEEE80211BE
if (tx_bss->conf->mld_ap)
- params->mbssid_tx_iface_linkid = tx_bss->mld_link_id;
+ params->mbssid.mbssid_tx_iface_linkid = tx_bss->mld_link_id;
#endif /* CONFIG_IEEE80211BE */
return 0;
}
complete = hapd->iconf->mbssid == MBSSID_ENABLED ||
(hapd->iconf->mbssid == ENHANCED_MBSSID_ENABLED &&
- params->mbssid_elem_count == 1);
+ params->mbssid.mbssid_elem_count == 1);
}
tailpos = hostapd_eid_ext_capab(hapd, tailpos, complete);
tailpos = hostapd_get_rsnxe(hapd, tailpos, tailend - tailpos);
tailpos = hostapd_eid_mbssid_config(hapd, tailpos,
- params->mbssid_elem_count);
+ params->mbssid.mbssid_elem_count);
#ifdef CONFIG_IEEE80211AX
if (hapd->iconf->ieee80211ax && !hapd->conf->disable_11ax) {
params->head = NULL;
os_free(params->proberesp);
params->proberesp = NULL;
- os_free(params->mbssid_elem);
- params->mbssid_elem = NULL;
- os_free(params->mbssid_elem_offset);
- params->mbssid_elem_offset = NULL;
- os_free(params->rnr_elem);
- params->rnr_elem = NULL;
- os_free(params->rnr_elem_offset);
- params->rnr_elem_offset = NULL;
+ os_free(params->mbssid.mbssid_elem);
+ params->mbssid.mbssid_elem = NULL;
+ os_free(params->mbssid.mbssid_elem_offset);
+ params->mbssid.mbssid_elem_offset = NULL;
+ os_free(params->mbssid.rnr_elem);
+ params->mbssid.rnr_elem = NULL;
+ os_free(params->mbssid.rnr_elem_offset);
+ params->mbssid.rnr_elem_offset = NULL;
#ifdef CONFIG_FILS
os_free(params->fd_frame_tmpl);
params->fd_frame_tmpl = NULL;
size_t unsol_bcast_probe_resp_tmpl_len;
};
+struct mbssid_data {
+ /**
+ * mbssid_tx_iface - Transmitting interface of the MBSSID set
+ */
+ const char *mbssid_tx_iface;
+
+ /**
+ * mbssid_tx_iface_linkid - Link ID of the transmitting interface if
+ * it is part of an MLD. Otherwise, -1.
+ */
+ int mbssid_tx_iface_linkid;
+
+ /**
+ * mbssid_index - The index of this BSS in the MBSSID set
+ */
+ unsigned int mbssid_index;
+
+ /**
+ * mbssid_elem - Buffer containing all MBSSID elements
+ */
+ u8 *mbssid_elem;
+
+ /**
+ * mbssid_elem_len - Total length of all MBSSID elements
+ */
+ size_t mbssid_elem_len;
+
+ /**
+ * mbssid_elem_count - The number of MBSSID elements
+ */
+ u8 mbssid_elem_count;
+
+ /**
+ * mbssid_elem_offset - Offsets to elements in mbssid_elem.
+ * Kernel will use these offsets to generate multiple BSSID beacons.
+ */
+ u8 **mbssid_elem_offset;
+
+ /**
+ * ema - Enhanced MBSSID advertisements support.
+ */
+ bool ema;
+
+ /**
+ * rnr_elem - This buffer contains all of reduced neighbor report (RNR)
+ * elements
+ */
+ u8 *rnr_elem;
+
+ /**
+ * rnr_elem_len - Length of rnr_elem buffer
+ */
+ size_t rnr_elem_len;
+
+ /**
+ * rnr_elem_count - Number of RNR elements
+ */
+ u8 rnr_elem_count;
+
+ /**
+ * rnr_elem_offset - The offsets to the elements in rnr_elem.
+ * The driver will use these to include RNR elements in EMA beacons.
+ */
+ u8 **rnr_elem_offset;
+};
+
struct wpa_driver_ap_params {
/**
* head - Beacon head from IEEE 802.11 header to IEs before TIM IE
size_t fd_frame_tmpl_len;
/**
- * mbssid_tx_iface - Transmitting interface of the MBSSID set
- */
- const char *mbssid_tx_iface;
-
- /**
- * mbssid_tx_iface_linkid - Link ID of the transmitting interface if
- * it is part of an MLD. Otherwise, -1.
- */
- int mbssid_tx_iface_linkid;
-
- /**
- * mbssid_index - The index of this BSS in the MBSSID set
- */
- unsigned int mbssid_index;
-
- /**
- * mbssid_elem - Buffer containing all MBSSID elements
- */
- u8 *mbssid_elem;
-
- /**
- * mbssid_elem_len - Total length of all MBSSID elements
- */
- size_t mbssid_elem_len;
-
- /**
- * mbssid_elem_count - The number of MBSSID elements
- */
- u8 mbssid_elem_count;
-
- /**
- * mbssid_elem_offset - Offsets to elements in mbssid_elem.
- * Kernel will use these offsets to generate multiple BSSID beacons.
- */
- u8 **mbssid_elem_offset;
-
- /**
- * ema - Enhanced MBSSID advertisements support.
+ * mbssid - MBSSID element related params for Beacon frames
+ *
+ * This is used to add MBSSID element in beacon data.
*/
- bool ema;
+ struct mbssid_data mbssid;
/**
* punct_bitmap - Preamble puncturing bitmap
*/
u16 punct_bitmap;
- /**
- * rnr_elem - This buffer contains all of reduced neighbor report (RNR)
- * elements
- */
- u8 *rnr_elem;
-
- /**
- * rnr_elem_len - Length of rnr_elem buffer
- */
- size_t rnr_elem_len;
-
- /**
- * rnr_elem_count - Number of RNR elements
- */
- unsigned int rnr_elem_count;
-
- /**
- * rnr_elem_offset - The offsets to the elements in rnr_elem.
- * The driver will use these to include RNR elements in EMA beacons.
- */
- u8 **rnr_elem_offset;
/* Unsolicited broadcast Probe Response data */
struct unsol_bcast_probe_resp ubpr;