qcacld-3.0: Increase PMK max length to 64bytes
For SAE-EXT-KEY AKM with group-21 pwe, the PMK length is 64bytes. Therefore, increase the max size of the PMK to 64bytes in host to facilitate PMK storage and PMK offloads. Change-Id: I777a31acd56073d6a0312c47d95fe7d155b06fc6 CRs-Fixed: 3353102
This commit is contained in:

committed by
Madan Koyyalamudi

父節點
48366b73c1
當前提交
2095242876
@@ -130,7 +130,6 @@
|
|||||||
#define ROAM_REASON_MASK 0x0F
|
#define ROAM_REASON_MASK 0x0F
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||||
#define ROAM_SCAN_PSK_SIZE 48
|
|
||||||
#define ROAM_R0KH_ID_MAX_LEN 48
|
#define ROAM_R0KH_ID_MAX_LEN 48
|
||||||
/* connected but not authenticated */
|
/* connected but not authenticated */
|
||||||
#define ROAM_AUTH_STATUS_CONNECTED 0x1
|
#define ROAM_AUTH_STATUS_CONNECTED 0x1
|
||||||
@@ -541,7 +540,7 @@ struct rso_config {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||||
uint8_t psk_pmk[ROAM_SCAN_PSK_SIZE];
|
uint8_t psk_pmk[MAX_PMK_LEN];
|
||||||
uint8_t pmk_len;
|
uint8_t pmk_len;
|
||||||
#endif
|
#endif
|
||||||
struct owe_transition_mode_info owe_info;
|
struct owe_transition_mode_info owe_info;
|
||||||
@@ -1454,7 +1453,7 @@ struct wlan_rso_11i_params {
|
|||||||
bool fw_okc;
|
bool fw_okc;
|
||||||
bool fw_pmksa_cache;
|
bool fw_pmksa_cache;
|
||||||
bool is_sae_same_pmk;
|
bool is_sae_same_pmk;
|
||||||
uint8_t psk_pmk[WMI_ROAM_SCAN_PSK_SIZE];
|
uint8_t psk_pmk[MAX_PMK_LEN];
|
||||||
uint8_t pmk_len;
|
uint8_t pmk_len;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1472,7 +1471,7 @@ struct wlan_rso_11r_params {
|
|||||||
bool is_11r_assoc;
|
bool is_11r_assoc;
|
||||||
bool is_adaptive_11r;
|
bool is_adaptive_11r;
|
||||||
bool enable_ft_im_roaming;
|
bool enable_ft_im_roaming;
|
||||||
uint8_t psk_pmk[WMI_ROAM_SCAN_PSK_SIZE];
|
uint8_t psk_pmk[MAX_PMK_LEN];
|
||||||
uint8_t pmk_len;
|
uint8_t pmk_len;
|
||||||
uint32_t r0kh_id_length;
|
uint32_t r0kh_id_length;
|
||||||
uint8_t r0kh_id[WMI_ROAM_R0KH_ID_MAX_LEN];
|
uint8_t r0kh_id[WMI_ROAM_R0KH_ID_MAX_LEN];
|
||||||
|
@@ -3669,8 +3669,6 @@ extract_roam_event(wmi_unified_t wmi_handle, void *evt_buf, uint32_t len,
|
|||||||
}
|
}
|
||||||
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
|
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
|
||||||
|
|
||||||
#define ROAM_OFFLOAD_PMK_EXT_BYTES 16
|
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||||
/**
|
/**
|
||||||
* wmi_fill_roam_offload_11r_params() - Fill roam scan params to send it to fw
|
* wmi_fill_roam_offload_11r_params() - Fill roam scan params to send it to fw
|
||||||
@@ -4173,9 +4171,13 @@ wmi_fill_rso_tlvs(wmi_unified_t wmi_handle, uint8_t *buf,
|
|||||||
src_11i_info->psk_pmk,
|
src_11i_info->psk_pmk,
|
||||||
roam_offload_11i->pmk_len);
|
roam_offload_11i->pmk_len);
|
||||||
|
|
||||||
roam_offload_11i->pmk_ext_len =
|
roam_offload_11i->pmk_ext_len = 0;
|
||||||
src_11i_info->pmk_len > ROAM_OFFLOAD_PMK_BYTES ?
|
if (src_11i_info->pmk_len > ROAM_OFFLOAD_PMK_BYTES) {
|
||||||
ROAM_OFFLOAD_PMK_EXT_BYTES : 0;
|
roam_offload_11i->pmk_ext_len =
|
||||||
|
QDF_MIN(src_11i_info->pmk_len -
|
||||||
|
ROAM_OFFLOAD_PMK_BYTES,
|
||||||
|
ROAM_OFFLOAD_PMK_BYTES);
|
||||||
|
}
|
||||||
qdf_mem_copy(
|
qdf_mem_copy(
|
||||||
roam_offload_11i->pmk_ext,
|
roam_offload_11i->pmk_ext,
|
||||||
&src_11i_info->psk_pmk[ROAM_OFFLOAD_PMK_BYTES],
|
&src_11i_info->psk_pmk[ROAM_OFFLOAD_PMK_BYTES],
|
||||||
@@ -4212,6 +4214,11 @@ wmi_fill_rso_tlvs(wmi_unified_t wmi_handle, uint8_t *buf,
|
|||||||
QDF_TRACE_LEVEL_DEBUG,
|
QDF_TRACE_LEVEL_DEBUG,
|
||||||
roam_offload_11i->pmk,
|
roam_offload_11i->pmk,
|
||||||
WLAN_MAX_PMK_DUMP_BYTES);
|
WLAN_MAX_PMK_DUMP_BYTES);
|
||||||
|
if (roam_offload_11i->pmk_ext_len)
|
||||||
|
QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_WMI,
|
||||||
|
QDF_TRACE_LEVEL_DEBUG,
|
||||||
|
roam_offload_11i->pmk_ext,
|
||||||
|
WLAN_MAX_PMK_DUMP_BYTES);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
WMITLV_SET_HDR(buf, WMITLV_TAG_ARRAY_STRUC, 0);
|
WMITLV_SET_HDR(buf, WMITLV_TAG_ARRAY_STRUC, 0);
|
||||||
|
@@ -7244,7 +7244,7 @@ static int __wlan_hdd_cfg80211_keymgmt_set_key(struct wiphy *wiphy,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((!data) || (data_len <= 0) ||
|
if ((!data) || (data_len <= 0) ||
|
||||||
(data_len > ROAM_SCAN_PSK_SIZE)) {
|
(data_len > MAX_PMK_LEN)) {
|
||||||
hdd_err("Invalid data");
|
hdd_err("Invalid data");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@@ -22871,11 +22871,11 @@ static void hdd_fill_pmksa_info(struct hdd_adapter *adapter,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
qdf_mem_copy(pmk_cache->pmkid, pmksa->pmkid, PMKID_LEN);
|
qdf_mem_copy(pmk_cache->pmkid, pmksa->pmkid, PMKID_LEN);
|
||||||
if (pmksa->pmk_len && (pmksa->pmk_len <= CSR_RSN_MAX_PMK_LEN)) {
|
if (pmksa->pmk_len && (pmksa->pmk_len <= MAX_PMK_LEN)) {
|
||||||
qdf_mem_copy(pmk_cache->pmk, pmksa->pmk, pmksa->pmk_len);
|
qdf_mem_copy(pmk_cache->pmk, pmksa->pmk, pmksa->pmk_len);
|
||||||
pmk_cache->pmk_len = pmksa->pmk_len;
|
pmk_cache->pmk_len = pmksa->pmk_len;
|
||||||
} else
|
} else
|
||||||
hdd_debug("pmk len is %zu", pmksa->pmk_len);
|
hdd_err("Invalid pmk len is %zu", pmksa->pmk_len);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
/*
|
/*
|
||||||
|
@@ -184,8 +184,6 @@ typedef enum {
|
|||||||
eCSR_INI_CHANNEL_BONDING_STATE_MAX = 11
|
eCSR_INI_CHANNEL_BONDING_STATE_MAX = 11
|
||||||
} eIniChanBondState;
|
} eIniChanBondState;
|
||||||
|
|
||||||
#define CSR_RSN_MAX_PMK_LEN 48
|
|
||||||
|
|
||||||
typedef struct tagCsrChannelInfo {
|
typedef struct tagCsrChannelInfo {
|
||||||
uint8_t numOfChannels;
|
uint8_t numOfChannels;
|
||||||
uint32_t *freq_list;
|
uint32_t *freq_list;
|
||||||
|
Reference in New Issue
Block a user