Эх сурвалжийг харах

qcacld-3.0: Make WMI_ROAM_PMKID_REQUEST_EVENTID event as wakable

Add support to make event WMI_ROAM_PMKID_REQUEST_EVENTID as
wakable in FIPS case.
In FIPS Enabled case, for roaming Firmware sends PMKID request
to host as firmware is not supposed to do crypto functionality
with FIPS enabled.

Change-Id: I09b6b68f77ba75f9e5519ff18017c95d16771f52
CRs-Fixed: 2513790
Srikanth Marepalli 5 жил өмнө
parent
commit
72213318bd

+ 4 - 1
components/pmo/core/src/wlan_pmo_wow.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -432,6 +432,9 @@ void pmo_set_sta_wow_bitmask(uint32_t *bitmask, uint32_t wow_bitmap_size)
 	pmo_set_wow_event_bitmap(WOW_ROAM_PREAUTH_START_EVENT,
 				 wow_bitmap_size,
 				 bitmask);
+	pmo_set_wow_event_bitmap(WOW_ROAM_PMKID_REQUEST_EVENT,
+				 wow_bitmap_size,
+				 bitmask);
 }
 
 void pmo_set_sap_wow_bitmask(uint32_t *bitmask, uint32_t wow_bitmap_size)

+ 16 - 0
core/wma/inc/wma_internal.h

@@ -212,6 +212,14 @@ static inline void
 wma_register_pmkid_req_event_handler(tp_wma_handle wma_handle)
 {
 }
+
+static inline int
+wma_roam_pmkid_request_event_handler(void *handle,
+				     uint8_t *event,
+				     uint32_t len)
+{
+	return 0;
+}
 #endif /* WLAN_FEATURE_FIPS */
 
 /**
@@ -283,6 +291,14 @@ wma_roam_stats_event_handler(WMA_HANDLE handle, uint8_t *event,
 {
 	return 0;
 }
+
+static inline int
+wma_roam_pmkid_request_event_handler(void *handle,
+				     uint8_t *event,
+				     uint32_t len)
+{
+	return 0;
+}
 #endif
 
 /**

+ 11 - 1
core/wma/src/wma_features.c

@@ -1515,6 +1515,8 @@ static const uint8_t *wma_wow_wake_reason_str(A_INT32 wake_reason)
 #endif /* WLAN_FEATURE_MOTION_DETECTION */
 	case WOW_REASON_PAGE_FAULT:
 		return "PAGE_FAULT";
+	case WOW_REASON_ROAM_PMKID_REQUEST:
+		return "ROAM_PMKID_REQUEST";
 	default:
 		return "unknown";
 	}
@@ -1737,6 +1739,9 @@ static int wow_get_wmi_eventid(int32_t reason, uint32_t tag)
 	case WOW_ROAM_PREAUTH_START_EVENT:
 		event_id = WMI_ROAM_PREAUTH_STATUS_CMDID;
 		break;
+	case WOW_REASON_ROAM_PMKID_REQUEST:
+		event_id = WMI_ROAM_PMKID_REQUEST_EVENTID;
+		break;
 	default:
 		WMA_LOGD(FL("No Event Id for WOW reason %s(%d)"),
 			 wma_wow_wake_reason_str(reason), reason);
@@ -1775,6 +1780,7 @@ static bool is_piggybacked_event(int32_t reason)
 	case WOW_REASON_NAN_DATA:
 	case WOW_REASON_TDLS_CONN_TRACKER_EVENT:
 	case WOW_REASON_ROAM_HO:
+	case WOW_REASON_ROAM_PMKID_REQUEST:
 		return true;
 	default:
 		return false;
@@ -2632,7 +2638,11 @@ static int wma_wake_event_piggybacked(
 		wma_send_msg(wma, SIR_LIM_DELETE_STA_CONTEXT_IND, del_sta_ctx,
 			     0);
 		break;
-
+	case WOW_REASON_ROAM_PMKID_REQUEST:
+		WMA_LOGD("Host woken up because of PMKID request event");
+		errno = wma_roam_pmkid_request_event_handler(wma, pb_event,
+							     pb_event_len);
+		break;
 	default:
 		WMA_LOGE("Wake reason %s(%u) is not a piggybacked event",
 			 wma_wow_wake_reason_str(wake_reason), wake_reason);