|
@@ -590,6 +590,21 @@ static bool lim_is_preauth_ctx_exists(struct mac_context *mac_ctx,
|
|
|
}
|
|
|
|
|
|
#ifdef WLAN_FEATURE_SAE
|
|
|
+static inline
|
|
|
+uint32_t lim_get_sae_keymgmt_suite(uint32_t keymgmt)
|
|
|
+{
|
|
|
+ /* Select the best SAE AKM suite supported */
|
|
|
+ if (QDF_HAS_PARAM(keymgmt, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY))
|
|
|
+ return WLAN_AKM_SAE_EXT_KEY;
|
|
|
+ else if (QDF_HAS_PARAM(keymgmt, WLAN_CRYPTO_KEY_MGMT_FT_SAE))
|
|
|
+ return WLAN_AKM_FT_SAE;
|
|
|
+ else if (QDF_HAS_PARAM(keymgmt, WLAN_CRYPTO_KEY_MGMT_SAE))
|
|
|
+ return WLAN_AKM_SAE;
|
|
|
+
|
|
|
+ pe_err("Invalid SAE Keymgmt suite %d", keymgmt);
|
|
|
+ return WLAN_AKM_SAE;
|
|
|
+}
|
|
|
+
|
|
|
QDF_STATUS lim_trigger_auth_req_sae(struct mac_context *mac_ctx,
|
|
|
struct pe_session *session,
|
|
|
struct qdf_mac_addr *peer_bssid)
|
|
@@ -597,6 +612,7 @@ QDF_STATUS lim_trigger_auth_req_sae(struct mac_context *mac_ctx,
|
|
|
QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
|
|
|
struct sir_sae_info *sae_info;
|
|
|
struct scheduler_msg msg = {0};
|
|
|
+ uint32_t keymgmt;
|
|
|
|
|
|
sae_info = qdf_mem_malloc(sizeof(*sae_info));
|
|
|
if (!sae_info)
|
|
@@ -607,16 +623,20 @@ QDF_STATUS lim_trigger_auth_req_sae(struct mac_context *mac_ctx,
|
|
|
sae_info->vdev_id = session->smeSessionId;
|
|
|
|
|
|
qdf_copy_macaddr(&sae_info->peer_mac_addr, peer_bssid);
|
|
|
+ keymgmt = wlan_crypto_get_param(session->vdev,
|
|
|
+ WLAN_CRYPTO_PARAM_KEY_MGMT);
|
|
|
+ sae_info->akm = lim_get_sae_keymgmt_suite(keymgmt);
|
|
|
|
|
|
sae_info->ssid.length = session->ssId.length;
|
|
|
qdf_mem_copy(sae_info->ssid.ssId,
|
|
|
session->ssId.ssId,
|
|
|
session->ssId.length);
|
|
|
|
|
|
- pe_debug("vdev_id %d ssid " QDF_SSID_FMT " " QDF_MAC_ADDR_FMT,
|
|
|
+ pe_debug("vdev_id %d ssid " QDF_SSID_FMT " " QDF_MAC_ADDR_FMT "akm %d",
|
|
|
sae_info->vdev_id,
|
|
|
QDF_SSID_REF(sae_info->ssid.length, sae_info->ssid.ssId),
|
|
|
- QDF_MAC_ADDR_REF(sae_info->peer_mac_addr.bytes));
|
|
|
+ QDF_MAC_ADDR_REF(sae_info->peer_mac_addr.bytes),
|
|
|
+ sae_info->akm);
|
|
|
|
|
|
msg.type = eWNI_SME_TRIGGER_SAE;
|
|
|
msg.bodyptr = sae_info;
|