From 27e828d728ee9d52d81f0622cc8858f9bd1543f0 Mon Sep 17 00:00:00 2001 From: Veerendranath Jakkam Date: Wed, 4 May 2022 00:34:50 +0530 Subject: [PATCH] ACS: Send EHT enabled info to driver The driver can consider EHT specific parameters such as the puncture pattern for ACS when this flag attribute is indicated by userspace. Signed-off-by: Veerendranath Jakkam --- src/ap/ap_drv_ops.c | 4 +++- src/drivers/driver.h | 3 +++ src/drivers/driver_nl80211.c | 7 +++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c index 817fbe603..8af7a0e25 100644 --- a/src/ap/ap_drv_ops.c +++ b/src/ap/ap_drv_ops.c @@ -967,13 +967,15 @@ int hostapd_drv_do_acs(struct hostapd_data *hapd) params.ht40_enabled = !!(hapd->iface->conf->ht_capab & HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET); params.vht_enabled = !!(hapd->iface->conf->ieee80211ac); + params.eht_enabled = !!(hapd->iface->conf->ieee80211be); params.ch_width = 20; if (hapd->iface->conf->ieee80211n && params.ht40_enabled) params.ch_width = 40; /* Note: VHT20 is defined by combination of ht_capab & oper_chwidth */ - if ((hapd->iface->conf->ieee80211ax || + if ((hapd->iface->conf->ieee80211be || + hapd->iface->conf->ieee80211ax || hapd->iface->conf->ieee80211ac) && params.ht40_enabled) { u8 oper_chwidth = hostapd_get_oper_chwidth(hapd->iface->conf); diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 7e83f0246..6c00fb564 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -2514,6 +2514,9 @@ struct drv_acs_params { /* Indicates whether EDMG is enabled */ int edmg_enabled; + + /* Indicates whether EHT is enabled */ + bool eht_enabled; }; struct wpa_bss_trans_info { diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index a655a9fac..fa89a006b 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -11168,6 +11168,8 @@ static int nl80211_qca_do_acs(struct wpa_driver_nl80211_data *drv, nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_HT40_ENABLED)) || (params->vht_enabled && nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_VHT_ENABLED)) || + (params->eht_enabled && + nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_EHT_ENABLED)) || nla_put_u16(msg, QCA_WLAN_VENDOR_ATTR_ACS_CHWIDTH, params->ch_width) || add_acs_ch_list(msg, params->freq_list) || @@ -11180,9 +11182,10 @@ static int nl80211_qca_do_acs(struct wpa_driver_nl80211_data *drv, nla_nest_end(msg, data); wpa_printf(MSG_DEBUG, - "nl80211: ACS Params: HW_MODE: %d HT: %d HT40: %d VHT: %d BW: %d EDMG: %d", + "nl80211: ACS Params: HW_MODE: %d HT: %d HT40: %d VHT: %d EHT: %d BW: %d EDMG: %d", params->hw_mode, params->ht_enabled, params->ht40_enabled, - params->vht_enabled, params->ch_width, params->edmg_enabled); + params->vht_enabled, params->eht_enabled, params->ch_width, + params->edmg_enabled); ret = send_and_recv_msgs(drv, msg, NULL, NULL, NULL, NULL); if (ret) {