瀏覽代碼

qcacld-3.0: Check SAE & OWE target capability to enable RSO

Currently the host driver blocks roam scan offload command to
the target if the connected akm is OWE or SAE.

Add changes to read the WMI_SERVICE_WPA3_SAE_ROAM_SUPPORT and
WMI_SERVICE_WPA3_OWE_ROAM_SUPPORT service capability advertised
by the target and set it to the mlme fw_akm_bitmap. Read this
bitmap in csr_roam_offload_scan() to allow RSO command.

Also the connected akm is sent to the target via the
WMI_AP_PROFILE command. Translate the CSR akm type for OWE and
SAE akm also.

Change-Id: I68527722ab099e0c8e1681ed64ea416b9a6e9936
CRs-Fixed: 2491021
Pragaspathi Thilagaraj 6 年之前
父節點
當前提交
56b50ec857

+ 11 - 0
mlme/dispatcher/inc/wlan_mlme_api.h

@@ -2236,4 +2236,15 @@ wlan_mlme_get_4way_hs_offload(struct wlan_objmgr_psoc *psoc, bool *value);
 QDF_STATUS
 mlme_get_peer_phymode(struct wlan_objmgr_psoc *psoc, uint8_t *mac,
 		      enum wlan_phymode *peer_phymode);
+
+/**
+ * mlme_set_tgt_wpa3_roam_cap() - Set the target WPA3 roam support
+ * to mlme
+ * @psoc: pointer to PSOC object
+ * @akm_bitmap: Bitmap of akm suites supported for roaming by the firmware
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS mlme_set_tgt_wpa3_roam_cap(struct wlan_objmgr_psoc *psoc,
+				      uint32_t akm_bitmap);
 #endif /* _WLAN_MLME_API_H_ */

+ 3 - 2
mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -1315,12 +1315,13 @@ struct bss_load_trigger {
 };
 
 /*
- * AKM suites supported by firmware for
- * roaming
+ * AKM suites supported by firmware for roaming
  */
 #define AKM_FT_SAE           0
 #define AKM_FT_SUITEB_SHA384 1
 #define AKM_FT_FILS          2
+#define AKM_SAE              3
+#define AKM_OWE              4
 
 /*
  * @mawc_roam_enabled:              Enable/Disable MAWC during roaming

+ 0 - 12
mlme/dispatcher/inc/wlan_mlme_ucfg_api.h

@@ -1043,18 +1043,6 @@ QDF_STATUS
 ucfg_mlme_get_first_scan_bucket_threshold(struct wlan_objmgr_psoc *psoc,
 					  uint8_t *val);
 
-/**
- * ucfg_mlme_set_fw_supported_roaming_akm() - update the supported roaming
- * akm suites advertised by the firmware via wmi service capability
- * @psoc: pointer to psoc object
- * @val:  bitmap value based on firmware capabilities
- *
- * Return: QDF Status
- */
-QDF_STATUS
-ucfg_mlme_set_fw_supported_roaming_akm(struct wlan_objmgr_psoc *psoc,
-				       uint32_t val);
-
 /**
  * ucfg_mlme_is_mawc_enabled() - MAWC enabled or not
  * @psoc: pointer to psoc object

+ 14 - 0
mlme/dispatcher/src/wlan_mlme_api.c

@@ -3449,3 +3449,17 @@ QDF_STATUS mlme_get_peer_phymode(struct wlan_objmgr_psoc *psoc, uint8_t *mac,
 
 	return QDF_STATUS_SUCCESS;
 }
+
+QDF_STATUS mlme_set_tgt_wpa3_roam_cap(struct wlan_objmgr_psoc *psoc,
+				      uint32_t akm_bitmap)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj)
+		return QDF_STATUS_E_FAILURE;
+
+	mlme_obj->cfg.lfr.fw_akm_bitmap |= akm_bitmap;
+
+	return QDF_STATUS_SUCCESS;
+}

+ 0 - 14
mlme/dispatcher/src/wlan_mlme_ucfg_api.c

@@ -701,20 +701,6 @@ ucfg_mlme_get_first_scan_bucket_threshold(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
-QDF_STATUS
-ucfg_mlme_set_fw_supported_roaming_akm(struct wlan_objmgr_psoc *psoc,
-				       uint32_t val)
-{
-	struct wlan_mlme_psoc_obj *mlme_obj;
-
-	mlme_obj = mlme_get_psoc_obj(psoc);
-	if (!mlme_obj)
-		return QDF_STATUS_E_INVAL;
-
-	mlme_obj->cfg.lfr.fw_akm_bitmap = val;
-	return QDF_STATUS_SUCCESS;
-}
-
 QDF_STATUS
 ucfg_mlme_is_mawc_enabled(struct wlan_objmgr_psoc *psoc, bool *val)
 {