qcacld-3.0: Handle wmi_key_material_ext tlv of ROAM_SYNCH event
With current design, firmware sends the kck, kek and replay counters as part of wmi_key_material tlv over the WMI_ROAM_SYNCH_EVENTID event. But the maximum supported kck key length in wmi_key_material was 16 bytes. But for FT Suite-B (akm 00:0f:ac:13), the kck_bits is 24 bytes long and cannot be sent over wmi_key_material. So firmware sends kck, kek and replay counter values over the new tlv wmi_key_material_ext. Host driver copies the kck key with fixed 16 byte length to the upper layers. Introduce kck_length parameter in csr_roam_info and roam_offload_synch_ind structures and copy kck based on this length. Also fix maximum number of AKM suites supported to 5, as some certification test cases advertise 5 akms. Change-Id: Iab050e3e3f7efead8070a02094998d15f7ffcbd0 CRs-Fixed: 2400770
Этот коммит содержится в:

коммит произвёл
nshrivas

родитель
e9b9132f7e
Коммит
957b7ecf57
@@ -1690,6 +1690,7 @@ static void mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
cfg_get(psoc, CFG_ROAM_INACTIVE_COUNT);
|
||||
lfr->roam_scan_period_after_inactivity =
|
||||
cfg_get(psoc, CFG_POST_INACTIVITY_ROAM_SCAN_PERIOD);
|
||||
lfr->fw_akm_bitmap = 0;
|
||||
|
||||
mlme_init_roam_offload_cfg(psoc, lfr);
|
||||
mlme_init_ese_cfg(psoc, lfr);
|
||||
|
@@ -1267,6 +1267,14 @@ struct bss_load_trigger {
|
||||
int32_t rssi_threshold_24ghz;
|
||||
};
|
||||
|
||||
/*
|
||||
* AKM suites supported by firmware for
|
||||
* roaming
|
||||
*/
|
||||
#define AKM_FT_SAE 0
|
||||
#define AKM_FT_SUITEB_SHA384 1
|
||||
#define AKM_FT_FILS 2
|
||||
|
||||
/*
|
||||
* @mawc_roam_enabled: Enable/Disable MAWC during roaming
|
||||
* @enable_fast_roam_in_concurrency:Enable LFR roaming on STA during concurrency
|
||||
@@ -1362,6 +1370,7 @@ struct bss_load_trigger {
|
||||
* during roam_scan_inactivity_time.
|
||||
* @roam_scan_period_after_inactivity: Roam scan period after device was in
|
||||
* inactive state
|
||||
* @fw_akm_bitmap: Supported Akm suites of firmware
|
||||
*/
|
||||
struct wlan_mlme_lfr_cfg {
|
||||
bool mawc_roam_enabled;
|
||||
@@ -1459,6 +1468,7 @@ struct wlan_mlme_lfr_cfg {
|
||||
uint32_t roam_scan_inactivity_time;
|
||||
uint32_t roam_inactive_data_packet_count;
|
||||
uint32_t roam_scan_period_after_inactivity;
|
||||
uint32_t fw_akm_bitmap;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -1079,6 +1079,7 @@ ucfg_mlme_set_roaming_offload(struct wlan_objmgr_psoc *psoc,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ucfg_mlme_get_first_scan_bucket_threshold() - Get first scan bucket thre
|
||||
* @psoc: pointer to psoc object
|
||||
@@ -1090,6 +1091,18 @@ 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
|
||||
|
@@ -774,6 +774,20 @@ 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)
|
||||
{
|
||||
|
Ссылка в новой задаче
Block a user