From 0e91a86ec55fda2af83edc2ca3e7d63245b450d5 Mon Sep 17 00:00:00 2001 From: Chenming Huang Date: Sat, 29 Jul 2023 07:49:03 +0530 Subject: [PATCH] ACS: Add link id if operating as an AP MLD ACS is triggered per link, so link id is needed for the driver to handle when the ACS operation is offloaded. Signed-off-by: Chenming Huang --- src/ap/ap_drv_ops.c | 6 ++++++ src/drivers/driver.h | 3 +++ src/drivers/driver_nl80211.c | 9 ++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c index 856340cb0..60d66e4c0 100644 --- a/src/ap/ap_drv_ops.c +++ b/src/ap/ap_drv_ops.c @@ -1095,6 +1095,12 @@ int hostapd_drv_do_acs(struct hostapd_data *hapd) os_memset(¶ms, 0, sizeof(params)); params.hw_mode = hapd->iface->conf->hw_mode; + params.link_id = -1; +#ifdef CONFIG_IEEE80211BE + if (hapd->conf->mld_ap && hapd->iconf->ieee80211be && + !hapd->conf->disable_11be) + params.link_id = hapd->mld_link_id; +#endif /* CONFIG_IEEE80211BE */ /* * If no chanlist config parameter is provided, include all enabled diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 4974bbdc8..2cff732c9 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -2816,6 +2816,9 @@ struct drv_acs_params { /* Indicates whether EHT is enabled */ bool eht_enabled; + + /* Indicates the link if MLO case; -1 otherwise */ + int link_id; }; struct wpa_bss_trans_info { diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 70adaca54..01d8a5ab7 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -12511,17 +12511,20 @@ static int nl80211_qca_do_acs(struct wpa_driver_nl80211_data *drv, add_acs_ch_list(msg, params->freq_list) || add_acs_freq_list(msg, params->freq_list) || (params->edmg_enabled && - nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_EDMG_ENABLED))) { + nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_EDMG_ENABLED)) || + (params->link_id != NL80211_DRV_LINK_ID_NA && + nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_ACS_LINK_ID, + params->link_id))) { nlmsg_free(msg); return -ENOBUFS; } nla_nest_end(msg, data); wpa_printf(MSG_DEBUG, - "nl80211: ACS Params: HW_MODE: %d HT: %d HT40: %d VHT: %d EHT: %d BW: %d EDMG: %d", + "nl80211: ACS Params: HW_MODE: %d HT: %d HT40: %d VHT: %d EHT: %d BW: %d EDMG: %d, link_id: %d", params->hw_mode, params->ht_enabled, params->ht40_enabled, params->vht_enabled, params->eht_enabled, params->ch_width, - params->edmg_enabled); + params->edmg_enabled, params->link_id); ret = send_and_recv_cmd(drv, msg); if (ret) { -- 2.47.2