Update MLO link info with more params

Framework populates MLO link information from scan cache. In roaming
use cases, framework may not have the scan result for the roamed AP.
So, use the MLO link info from the supplicant if the BSSID is not in
scan cache.

Bug: 268230307
Test: m
Change-Id: I73dd255841c3040d78ec3ae36c4e2acba3a637ee
diff --git a/wpa_supplicant/aidl/sta_iface.cpp b/wpa_supplicant/aidl/sta_iface.cpp
index 086c0a6..e8c1927 100644
--- a/wpa_supplicant/aidl/sta_iface.cpp
+++ b/wpa_supplicant/aidl/sta_iface.cpp
@@ -2014,6 +2014,8 @@
 	MloLinksInfo linksInfo;
 	MloLink link;
 
+	linksInfo.apMldMacAddress->assign(
+	    wpa_s->ap_mld_addr, wpa_s->ap_mld_addr + ETH_ALEN);
 	if (!wpa_s->valid_links)
 		 return {linksInfo, ndk::ScopedAStatus::ok()};
 
@@ -2022,9 +2024,17 @@
 			continue;
 
 		wpa_printf(MSG_DEBUG, "Add MLO Link ID %d info", i);
+		// Associated link id.
+		if (os_memcmp(wpa_s->links[i].bssid, wpa_s->bssid, ETH_ALEN) == 0) {
+			linksInfo.apMloLinkId = i;
+		}
 		link.linkId = i;
-		link.staLinkMacAddress.assign(wpa_s->links[i].addr, wpa_s->links[i].addr + ETH_ALEN);
-		// TODO (b/259710591): Once suppllicant implements TID-to-link
+		link.staLinkMacAddress.assign(
+		    wpa_s->links[i].addr, wpa_s->links[i].addr + ETH_ALEN);
+		link.apLinkMacAddress->assign(
+		    wpa_s->links[i].bssid, wpa_s->links[i].bssid + ETH_ALEN);
+		link.frequencyMHz = wpa_s->links[i].freq;
+		// TODO (b/259710591): Once supplicant implements TID-to-link
 		// mapping, copy it here. Mapping can be changed in two
 		// scenarios
 		//    1. Mandatory mapping from AP