Parcourir la source

qcacld-3.0: Permit pmksa by MLD address

Permit pmksa by MLD address besides link address for 11be MLO.

Change-Id: I2c9569c3473899ba560a5a08b54f51063eb203cd
CRs-Fixed: 3283302
Jianmin Zhu il y a 2 ans
Parent
commit
1c32cf7685
1 fichiers modifiés avec 20 ajouts et 1 suppressions
  1. 20 1
      core/sme/src/csr/csr_api_roam.c

+ 20 - 1
core/sme/src/csr/csr_api_roam.c

@@ -4851,6 +4851,24 @@ csr_convert_mode_to_nw_type(enum csr_cfgdot11mode dot11_mode,
 }
 
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
+#ifdef WLAN_FEATURE_11BE_MLO
+static bool csr_pmk_match_mlo_address(struct wlan_objmgr_vdev *vdev,
+				      struct wlan_crypto_pmksa *pmksa)
+{
+	struct qdf_mac_addr bss_peer_mld_mac = {0};
+
+	wlan_vdev_get_bss_peer_mld_mac(vdev, &bss_peer_mld_mac);
+
+	return qdf_is_macaddr_equal(&bss_peer_mld_mac, &pmksa->bssid);
+}
+#else
+static inline bool csr_pmk_match_mlo_address(struct wlan_objmgr_vdev *vdev,
+					     struct wlan_crypto_pmksa *pmksa)
+{
+	return false;
+}
+#endif
+
 void csr_get_pmk_info(struct mac_context *mac_ctx, uint8_t session_id,
 		      struct wlan_crypto_pmksa *pmk_cache)
 {
@@ -4890,7 +4908,8 @@ QDF_STATUS csr_roam_set_psk_pmk(struct mac_context *mac,
 	 */
 	if (wlan_vdev_mlme_get_state(vdev) == WLAN_VDEV_S_UP &&
 	    !pmksa->ssid_len &&
-	    !qdf_is_macaddr_equal(&connected_bssid, &pmksa->bssid)) {
+	    !qdf_is_macaddr_equal(&connected_bssid, &pmksa->bssid) &&
+	    !csr_pmk_match_mlo_address(vdev, pmksa)) {
 		wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
 		sme_debug("Set pmksa received for non-connected bss");
 		return QDF_STATUS_E_INVAL;