|
@@ -24680,6 +24680,53 @@ void hdd_set_rate_bw(struct rate_info *info, enum hdd_rate_info_bw hdd_bw)
|
|
|
|
|
|
#if defined(CFG80211_EXTERNAL_DH_UPDATE_SUPPORT) || \
|
|
|
(LINUX_VERSION_CODE > KERNEL_VERSION(5, 2, 0))
|
|
|
+
|
|
|
+#ifdef WLAN_MLD_AP_OWE_INFO_SUPPORT
|
|
|
+static void
|
|
|
+hdd_ml_sap_owe_fill_ml_info(struct hdd_adapter *adapter,
|
|
|
+ struct cfg80211_update_owe_info *owe_info,
|
|
|
+ uint8_t *peer_mac)
|
|
|
+{
|
|
|
+ bool is_mlo_vdev;
|
|
|
+ struct wlan_objmgr_peer *peer;
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
+ uint8_t *peer_mld_addr;
|
|
|
+
|
|
|
+ vdev = hdd_objmgr_get_vdev_by_user(adapter, WLAN_OSIF_ID);
|
|
|
+ if (!vdev)
|
|
|
+ return;
|
|
|
+
|
|
|
+ is_mlo_vdev = wlan_vdev_mlme_is_mlo_vdev(vdev);
|
|
|
+ if (is_mlo_vdev)
|
|
|
+ owe_info->link_id = wlan_vdev_get_link_id(vdev);
|
|
|
+ else
|
|
|
+ owe_info->link_id = -1;
|
|
|
+ hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_ID);
|
|
|
+
|
|
|
+ if (!is_mlo_vdev)
|
|
|
+ return;
|
|
|
+
|
|
|
+ peer = wlan_objmgr_get_peer_by_mac(adapter->hdd_ctx->psoc,
|
|
|
+ peer_mac, WLAN_OSIF_ID);
|
|
|
+ if (!peer) {
|
|
|
+ hdd_err("Peer not found with MAC " QDF_MAC_ADDR_FMT,
|
|
|
+ QDF_MAC_ADDR_REF(peer_mac));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ peer_mld_addr = wlan_peer_mlme_get_mldaddr(peer);
|
|
|
+ qdf_mem_copy(&owe_info->peer_mld_addr[0], peer_mld_addr, ETH_ALEN);
|
|
|
+ wlan_objmgr_peer_release_ref(peer, WLAN_OSIF_ID);
|
|
|
+}
|
|
|
+#else
|
|
|
+static void
|
|
|
+hdd_ml_sap_owe_fill_ml_info(struct hdd_adapter *adapter,
|
|
|
+ struct cfg80211_update_owe_info *owe_info,
|
|
|
+ uint8_t *peer_mac)
|
|
|
+{
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
void hdd_send_update_owe_info_event(struct hdd_adapter *adapter,
|
|
|
uint8_t sta_addr[],
|
|
|
uint8_t *owe_ie,
|
|
@@ -24692,6 +24739,7 @@ void hdd_send_update_owe_info_event(struct hdd_adapter *adapter,
|
|
|
|
|
|
qdf_mem_zero(&owe_info, sizeof(owe_info));
|
|
|
qdf_mem_copy(owe_info.peer, sta_addr, ETH_ALEN);
|
|
|
+ hdd_ml_sap_owe_fill_ml_info(adapter, &owe_info, sta_addr);
|
|
|
owe_info.ie = owe_ie;
|
|
|
owe_info.ie_len = owe_ie_len;
|
|
|
|