From e99d6683f7313d90c7015baf4a1fce44b91a1b25 Mon Sep 17 00:00:00 2001 From: Deepak Dhamdhere Date: Thu, 9 Feb 2017 19:40:26 -0800 Subject: [PATCH] qcacmn: Enable PMK cache and OKC with RSO command Firmware now supports PMK caching in addition to OKC (Opportunistic Key Caching). Use additional bit flags to enable PMK caching in PMK configuration in roam offload scan request. CRs-Fixed: 2004963 Change-Id: I536a4d45d5d915ab02dc13db6124a1ce8949fe48 --- wmi/inc/wmi_unified_param.h | 8 +++++--- wmi/src/wmi_unified_tlv.c | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 6a357c46f3..af5e192d45 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -1795,7 +1795,7 @@ struct mobility_domain_info { #define WMI_HOST_ROAM_OFFLOAD_NUM_MCS_SET (16) /* This TLV will be filled only in case roam offload - * for wpa2-psk/okc/ese/11r is enabled */ + * for wpa2-psk/pmkid/ese/11r is enabled */ typedef struct { /* * TLV tag and len; tag equals @@ -1838,7 +1838,8 @@ typedef struct { * @rokh_id: r0kh id * @roam_key_mgmt_offload_enabled: roam offload flag * @auth_mode: authentication mode - * @okc_enabled: enable opportunistic key caching + * @fw_okc: use OKC in firmware + * @fw_pmksa_cache: use PMKSA cache in firmware * @is_ese_assoc: flag to determine ese assoc * @mdid: mobility domain info * @roam_offload_params: roam offload tlv params @@ -1861,7 +1862,8 @@ struct roam_offload_scan_params { uint8_t rokh_id[WMI_ROAM_R0KH_ID_MAX_LEN]; uint8_t roam_key_mgmt_offload_enabled; int auth_mode; - bool okc_enabled; + bool fw_okc; + bool fw_pmksa_cache; #endif bool is_ese_assoc; struct mobility_domain_info mdid; diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 07009e4dec..e27e1de4f8 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -5436,15 +5436,26 @@ static QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle, buf_ptr += WMI_TLV_HDR_SIZE; roam_offload_11i = (wmi_roam_11i_offload_tlv_param *) buf_ptr; + if (roam_req->roam_key_mgmt_offload_enabled && - roam_req->okc_enabled) { + roam_req->fw_okc) { WMI_SET_ROAM_OFFLOAD_OKC_ENABLED (roam_offload_11i->flags); - WMI_LOGE("LFR3:OKC Enabled"); + WMI_LOGE("LFR3:OKC enabled"); } else { WMI_SET_ROAM_OFFLOAD_OKC_DISABLED (roam_offload_11i->flags); - WMI_LOGE("LFR3:OKC Disabled"); + WMI_LOGE("LFR3:OKC disabled"); + } + if (roam_req->roam_key_mgmt_offload_enabled && + roam_req->fw_pmksa_cache) { + WMI_SET_ROAM_OFFLOAD_PMK_CACHE_ENABLED + (roam_offload_11i->flags); + WMI_LOGE("LFR3:PMKSA caching enabled"); + } else { + WMI_SET_ROAM_OFFLOAD_PMK_CACHE_DISABLED + (roam_offload_11i->flags); + WMI_LOGE("LFR3:PMKSA caching disabled"); } qdf_mem_copy(roam_offload_11i->pmk,