[PATCH v2 03/44] AP: MLO: Retrieve EML and MLD capabilities from driver
Andrei Otcheretianski
andrei.otcheretianski at intel.com
Mon May 22 12:33:31 PDT 2023
From: Benjamin Berg <benjamin.berg at intel.com>
Add the new driver API get_mld_capab and and use it to fetch MLD
and EML capabilities.
Signed-off-by: Benjamin Berg <benjamin.berg at intel.com>
---
hostapd/main.c | 2 ++
src/ap/ap_drv_ops.c | 13 +++++++++++++
src/ap/ap_drv_ops.h | 1 +
src/ap/hostapd.h | 2 ++
src/drivers/driver.h | 12 ++++++++++++
5 files changed, 30 insertions(+)
diff --git a/hostapd/main.c b/hostapd/main.c
index ce2df81c4a..fc5b51a172 100644
--- a/hostapd/main.c
+++ b/hostapd/main.c
@@ -235,6 +235,8 @@ static int hostapd_driver_init(struct hostapd_iface *iface)
*/
hostapd_get_ext_capa(iface);
+ hostapd_get_mld_capa(iface);
+
triggs = wpa_get_wowlan_triggers(conf->wowlan_triggers, &capa);
if (triggs && hapd->driver->set_wowlan) {
if (hapd->driver->set_wowlan(hapd->drv_priv, triggs))
diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c
index aa4dbe9eba..c8e8bd6693 100644
--- a/src/ap/ap_drv_ops.c
+++ b/src/ap/ap_drv_ops.c
@@ -935,6 +935,19 @@ void hostapd_get_ext_capa(struct hostapd_iface *iface)
}
+void hostapd_get_mld_capa(struct hostapd_iface *iface)
+{
+ struct hostapd_data *hapd = iface->bss[0];
+
+ if (!hapd->driver || !hapd->driver->get_mld_capab)
+ return;
+
+ hapd->driver->get_mld_capab(hapd->drv_priv, WPA_IF_AP_BSS,
+ &iface->mld_eml_capa,
+ &iface->mld_mld_capa);
+}
+
+
int hostapd_drv_do_acs(struct hostapd_data *hapd)
{
struct drv_acs_params params;
diff --git a/src/ap/ap_drv_ops.h b/src/ap/ap_drv_ops.h
index 023cbf1f89..866440027b 100644
--- a/src/ap/ap_drv_ops.h
+++ b/src/ap/ap_drv_ops.h
@@ -155,6 +155,7 @@ int hostapd_drv_set_qos_map(struct hostapd_data *hapd, const u8 *qos_map_set,
u8 qos_map_set_len);
void hostapd_get_ext_capa(struct hostapd_iface *iface);
+void hostapd_get_mld_capa(struct hostapd_iface *iface);
void hostapd_get_hw_mode_any_channels(struct hostapd_data *hapd,
struct hostapd_hw_modes *mode,
diff --git a/src/ap/hostapd.h b/src/ap/hostapd.h
index 5e16bc389b..0512830530 100644
--- a/src/ap/hostapd.h
+++ b/src/ap/hostapd.h
@@ -540,6 +540,8 @@ struct hostapd_iface {
const u8 *extended_capa, *extended_capa_mask;
unsigned int extended_capa_len;
+ u16 mld_eml_capa, mld_mld_capa;
+
unsigned int drv_max_acl_mac_addrs;
struct hostapd_hw_modes *hw_features;
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 101f98a72d..d373353d37 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -4840,6 +4840,18 @@ struct wpa_driver_ops {
const u8 **ext_capab, const u8 **ext_capab_mask,
unsigned int *ext_capab_len);
+ /**
+ * get_mld_capab - Get MLD capabilities for the specified interface
+ * @priv: Private driver interface data
+ * @type: Interface type for which to get MLD capabilities
+ * @eml_capa: EML capabilities
+ * @mld_capa_and_ops: MLD Capabilities and Operations
+ * Returns: 0 on success or -1 on failure
+ */
+ int (*get_mld_capab)(void *priv, enum wpa_driver_if_type type,
+ u16 *eml_capa,
+ u16 *mld_capa_and_ops);
+
/**
* p2p_lo_start - Start offloading P2P listen to device
* @priv: Private driver interface data
--
2.38.1
More information about the Hostap
mailing list