From 8a8ee005435ce74dfbe4a182d02abe9e110ae139 Mon Sep 17 00:00:00 2001 From: Srikanth Marepalli Date: Tue, 19 May 2020 00:52:33 +0530 Subject: [PATCH] qcacmn: Add support for WPA3 SuiteB roaming This commit enables support for SuiteB roaming wmi service based on the WPA3 SuiteB roam service capability advertisement received from Firmware. In SuiteB the PMK length is greater than the existing PMK length, added the extended PMK parameters to fill in the remaining bytes of PMK in the RSO command. Change-Id: Ia630580bba050513800e3acac875baf937ec8d14 CRs-Fixed: 2685993 --- wmi/inc/wmi_unified_param.h | 1 + wmi/src/wmi_unified_roam_tlv.c | 19 ++++++++++++++----- wmi/src/wmi_unified_tlv.c | 2 ++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index ce27d2b799d4..7ed5adb6ed34 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -5224,6 +5224,7 @@ typedef enum { wmi_service_ema_ap_support, wmi_support_extend_address, wmi_service_srg_srp_spatial_reuse_support, + wmi_service_suiteb_roam_support, wmi_services_max, } wmi_conv_service_ids; #define WMI_SERVICE_UNAVAILABLE 0xFFFF diff --git a/wmi/src/wmi_unified_roam_tlv.c b/wmi/src/wmi_unified_roam_tlv.c index 08563dd50b19..44c2efce80fb 100644 --- a/wmi/src/wmi_unified_roam_tlv.c +++ b/wmi/src/wmi_unified_roam_tlv.c @@ -1376,6 +1376,18 @@ send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle, roam_req->psk_pmk, roam_offload_11i->pmk_len); + if (auth_mode == + WMI_AUTH_RSNA_SUITE_B_8021X_SHA384) { + roam_offload_11i->pmk_ext_len = + (roam_req->pmk_len - + ROAM_OFFLOAD_PMK_BYTES); + qdf_mem_copy(roam_offload_11i->pmk_ext, + &roam_req->psk_pmk[ + ROAM_OFFLOAD_PMK_BYTES], + roam_offload_11i-> + pmk_ext_len); + } + WMITLV_SET_HDR(&roam_offload_11i->tlv_header, WMITLV_TAG_STRUC_wmi_roam_11i_offload_tlv_param, WMITLV_GET_STRUCT_TLVLEN @@ -1390,11 +1402,8 @@ send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle, buf_ptr += WMI_TLV_HDR_SIZE; WMI_LOGD("pmk_len = %d", roam_offload_11i->pmk_len); - if (roam_offload_11i->pmk_len) - QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_WMI, - QDF_TRACE_LEVEL_DEBUG, - roam_offload_11i->pmk, - roam_offload_11i->pmk_len); + WMI_LOGD("pmk_ext_len = %d", + roam_offload_11i->pmk_ext_len); } } else { WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 6cbc50acd2db..06002572da06 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -15041,6 +15041,8 @@ static void populate_tlv_service(uint32_t *wmi_service) WMI_SERVICE_SUPPORT_EXTEND_ADDRESS; wmi_service[wmi_service_srg_srp_spatial_reuse_support] = WMI_SERVICE_SRG_SRP_SPATIAL_REUSE_SUPPORT; + wmi_service[wmi_service_suiteb_roam_support] = + WMI_SERVICE_WPA3_SUITEB_ROAM_SUPPORT; } /**