]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
ACS: Add link id if operating as an AP MLD
authorChenming Huang <quic_chenhuan@quicinc.com>
Sat, 29 Jul 2023 02:19:03 +0000 (07:49 +0530)
committerJouni Malinen <j@w1.fi>
Fri, 2 Feb 2024 08:44:46 +0000 (10:44 +0200)
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 <quic_chenhuan@quicinc.com>
src/ap/ap_drv_ops.c
src/drivers/driver.h
src/drivers/driver_nl80211.c

index 856340cb0028a62b6f8a4a429b96c43616fff913..60d66e4c0888e1d576586b541e3dfcf21a48fd34 100644 (file)
@@ -1095,6 +1095,12 @@ int hostapd_drv_do_acs(struct hostapd_data *hapd)
 
        os_memset(&params, 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
index 4974bbdc8711198b5cdb4df438ffdffe784bca61..2cff732c9e6fa3face32d6ac5d9d25e61e9ef880 100644 (file)
@@ -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 {
index 70adaca54d1600a820d8e60279f0ce354102147f..01d8a5ab7140bcf97b6c86c43dadba2c6d2ab583 100644 (file)
@@ -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) {