qcacld-3.0: Add support for sae roaming with single PMK

Requirement is to allow station to just keeps only one
PMK1 and PMKID1 which gets derived while first connection
and re-use it for roaming to other AP which has some
specific VSIE.

To support this feature, STA should:
1. Set new flag in 11i params during RSO start/update when
initial connection is completed based on the VSIE in AP
beacon/probe response frame. This flag will allow fw to roam
to AP(s) which has VSIE with single PMK.
2. STA should dynamically enable this feature if below
vendor specific IE on AP’s Beacon or Probe Response at
the first connection:
Category 	Data
Type 		0xDD
Length 		0x05
OUI 		0x00 40 96
Type 		0x03
Data 		Don’t care
		(EX, 0x05)

Maintain a separate pmk information structure to support sae
roaming using single pmk.

Change-Id: I0aac7659cecd4d8aaff86c9715e512cf46f22615
CRs-Fixed: 2616035
This commit is contained in:
Abhinav Kumar
2020-02-21 14:23:07 +05:30
committed by nshrivas
parent 1589373241
commit c71e678b18
12 changed files with 251 additions and 13 deletions

View File

@@ -2302,6 +2302,41 @@ char *mlme_get_roam_trigger_str(uint32_t roam_scan_trigger);
*/
void mlme_get_converted_timestamp(uint32_t timestamp, char *time);
#if defined(WLAN_SAE_SINGLE_PMK) && defined(WLAN_FEATURE_ROAM_OFFLOAD)
/**
* wlan_mlme_set_sae_single_pmk_bss_cap - API to set WPA3 single pmk AP IE
* @psoc: Pointer to psoc object
* @vdev_id: vdev id
* @val: value to be set
*
* Return : None
*/
void wlan_mlme_set_sae_single_pmk_bss_cap(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, bool val);
/**
* wlan_mlme_update_sae_single_pmk - API to update mlme_pmkid_info
* @vdev: vdev object
* @sae_single_pmk: pointer to sae_single_pmk_info struct
*
* Return : None
*/
void
wlan_mlme_update_sae_single_pmk(struct wlan_objmgr_vdev *vdev,
struct mlme_pmk_info *sae_single_pmk);
#else
static inline void
wlan_mlme_set_sae_single_pmk_bss_cap(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, bool val)
{
}
static inline void
wlan_mlme_update_sae_single_pmk(struct wlan_objmgr_vdev *vdev,
struct mlme_pmk_info *sae_single_pmk)
{
}
#endif
/**
* mlme_get_roam_fail_reason_str() - Get fail string from enum
* WMI_ROAM_FAIL_REASON_ID