]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
nl80211: Set allowed frequency list per link for AP MLD
authorChenming Huang <quic_chenhuan@quicinc.com>
Mon, 15 Jan 2024 12:03:18 +0000 (17:33 +0530)
committerJouni Malinen <j@w1.fi>
Wed, 24 Jan 2024 16:32:50 +0000 (18:32 +0200)
QCA_WLAN_VENDOR_ATTR_CONFIG_AP_ALLOWED_FREQ_LIST needs be to set per
link if operating as an AP MLD.

Signed-off-by: Chenming Huang <quic_chenhuan@quicinc.com>
src/drivers/driver_nl80211.c

index 6cc363e97da05e281b9b73675b0ce1d51e11613c..70adaca54d1600a820d8e60279f0ce354102147f 100644 (file)
@@ -4880,7 +4880,8 @@ static int nl80211_mbssid(struct nl_msg *msg,
 
 #ifdef CONFIG_DRIVER_NL80211_QCA
 static void qca_set_allowed_ap_freqs(struct wpa_driver_nl80211_data *drv,
-                                   const int *freqs, int num_freqs)
+                                    const int *freqs, int num_freqs,
+                                    int link_id)
 {
        struct nl_msg *msg;
        struct nlattr *params, *freqs_list;
@@ -4898,6 +4899,10 @@ static void qca_set_allowed_ap_freqs(struct wpa_driver_nl80211_data *drv,
            !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)))
                goto err;
 
+       if (link_id != NL80211_DRV_LINK_ID_NA &&
+           nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_CONFIG_MLO_LINK_ID, link_id))
+               goto err;
+
        freqs_list = nla_nest_start(
                msg, QCA_WLAN_VENDOR_ATTR_CONFIG_AP_ALLOWED_FREQ_LIST);
        if (!freqs_list)
@@ -5406,7 +5411,9 @@ static int wpa_driver_nl80211_set_ap(void *priv,
 #ifdef CONFIG_DRIVER_NL80211_QCA
        if (cmd == NL80211_CMD_NEW_BEACON && params->allowed_freqs)
                qca_set_allowed_ap_freqs(drv, params->allowed_freqs,
-                                        int_array_len(params->allowed_freqs));
+                                        int_array_len(params->allowed_freqs),
+                                        params->mld_ap ? params->mld_link_id :
+                                        NL80211_DRV_LINK_ID_NA);
 #endif /* CONFIG_DRIVER_NL80211_QCA */
 
        if (nla_put_flag(msg, NL80211_ATTR_SOCKET_OWNER))