|
@@ -1930,6 +1930,52 @@ hdd_hostapd_sap_fill_peer_ml_info(struct hdd_adapter *adapter,
|
|
|
&sta_info->assoc_resp_ies_len);
|
|
|
wlan_objmgr_peer_release_ref(sta_peer, WLAN_OSIF_ID);
|
|
|
}
|
|
|
+#elif defined(CFG80211_MLD_AP_STA_CONNECT_UPSTREAM_SUPPORT)
|
|
|
+static void
|
|
|
+hdd_hostapd_sap_fill_peer_ml_info(struct hdd_adapter *adapter,
|
|
|
+ struct station_info *sta_info,
|
|
|
+ uint8_t *peer_mac)
|
|
|
+{
|
|
|
+ bool is_mlo_vdev;
|
|
|
+ QDF_STATUS status;
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
+ struct wlan_objmgr_peer *sta_peer;
|
|
|
+
|
|
|
+ vdev = hdd_objmgr_get_vdev_by_user(adapter->deflink,
|
|
|
+ WLAN_HDD_ID_OBJ_MGR);
|
|
|
+ if (!vdev) {
|
|
|
+ hdd_err("Failed to get link id, VDEV NULL");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ is_mlo_vdev = wlan_vdev_mlme_is_mlo_vdev(vdev);
|
|
|
+ if (!is_mlo_vdev) {
|
|
|
+ sta_info->assoc_link_id = -1;
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_HDD_ID_OBJ_MGR);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ sta_info->assoc_link_id = wlan_vdev_get_link_id(vdev);
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_HDD_ID_OBJ_MGR);
|
|
|
+
|
|
|
+ sta_peer = wlan_objmgr_get_peer_by_mac(adapter->hdd_ctx->psoc,
|
|
|
+ peer_mac, WLAN_HDD_ID_OBJ_MGR);
|
|
|
+
|
|
|
+ if (!sta_peer) {
|
|
|
+ hdd_err("Peer not found with MAC " QDF_MAC_ADDR_FMT,
|
|
|
+ QDF_MAC_ADDR_REF(peer_mac));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ qdf_mem_copy(sta_info->mld_addr, wlan_peer_mlme_get_mldaddr(sta_peer),
|
|
|
+ ETH_ALEN);
|
|
|
+
|
|
|
+ status = ucfg_mlme_peer_get_assoc_rsp_ies(
|
|
|
+ sta_peer,
|
|
|
+ &sta_info->assoc_resp_ies,
|
|
|
+ &sta_info->assoc_resp_ies_len);
|
|
|
+ wlan_objmgr_peer_release_ref(sta_peer, WLAN_HDD_ID_OBJ_MGR);
|
|
|
+ sta_info->mlo_params_valid = true;
|
|
|
+}
|
|
|
#else
|
|
|
static void
|
|
|
hdd_hostapd_sap_fill_peer_ml_info(struct hdd_adapter *adapter,
|