浏览代码

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
Srikanth Marepalli 5 年之前
父节点
当前提交
8a8ee00543
共有 3 个文件被更改,包括 17 次插入5 次删除
  1. 1 0
      wmi/inc/wmi_unified_param.h
  2. 14 5
      wmi/src/wmi_unified_roam_tlv.c
  3. 2 0
      wmi/src/wmi_unified_tlv.c

+ 1 - 0
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

+ 14 - 5
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,

+ 2 - 0
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;
 }
 
 /**