static int nl80211_process_links(struct cfg80211_registered_device *rdev,
                                 struct cfg80211_assoc_link *links,
+                                int assoc_link_id,
                                 const u8 *ssid, int ssid_len,
                                 struct genl_info *info)
 {
                }
                links[link_id].bss =
                        nl80211_assoc_bss(rdev, ssid, ssid_len, attrs,
-                                         link_id, link_id);
+                                         assoc_link_id, link_id);
                if (IS_ERR(links[link_id].bss)) {
                        err = PTR_ERR(links[link_id].bss);
                        links[link_id].bss = NULL;
                req.ap_mld_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]);
                ap_addr = req.ap_mld_addr;
 
-               err = nl80211_process_links(rdev, req.links, ssid, ssid_len,
-                                           info);
+               err = nl80211_process_links(rdev, req.links, req.link_id,
+                                           ssid, ssid_len, info);
                if (err)
                        goto free;
 
 
        add_links = 0;
        if (info->attrs[NL80211_ATTR_MLO_LINKS]) {
-               err = nl80211_process_links(rdev, links, NULL, 0, info);
+               err = nl80211_process_links(rdev, links,
+                                           /* mark as MLO, but not assoc */
+                                           IEEE80211_MLD_MAX_NUM_LINKS,
+                                           NULL, 0, info);
                if (err)
                        return err;