summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrikanth Marepalli <srimarep@codeaurora.org>2019-08-19 21:24:43 +0530
committernshrivas <nshrivas@codeaurora.org>2019-09-04 07:52:58 -0700
commitcaa606dbcfdf8ea91e1c677a7aa87eabf1b48cf4 (patch)
treeee076e61ba2b7a19c27d10cd3b7a66fd22003246
parent56657042455a5070d9c642a5c4006e84f38e921f (diff)
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
-rw-r--r--core/wma/inc/wma_internal.h8
-rw-r--r--core/wma/src/wma_features.c14
-rw-r--r--core/wma/src/wma_utils.c3
3 files changed, 25 insertions, 0 deletions
diff --git a/core/wma/inc/wma_internal.h b/core/wma/inc/wma_internal.h
index ff0e4bb666de..2cb003eed6b9 100644
--- a/core/wma/inc/wma_internal.h
+++ b/core/wma/inc/wma_internal.h
@@ -239,6 +239,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 */
/**
diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c
index a3a042689b6b..161609e3e178 100644
--- a/core/wma/src/wma_features.c
+++ b/core/wma/src/wma_features.c
@@ -3771,6 +3771,8 @@ static const u8 *wma_wow_wake_reason_str(A_INT32 wake_reason)
return "DEBUG_TEST";
case WOW_REASON_CHIP_POWER_FAILURE_DETECT:
return "CHIP_POWER_FAILURE_DETECT";
+ case WOW_REASON_ROAM_PMKID_REQUEST:
+ return "ROAM_PMKID_REQUEST";
default:
return "unknown";
}
@@ -4089,6 +4091,9 @@ static int wow_get_wmi_eventid(int32_t reason, uint32_t tag)
case WOW_REASON_ROAM_HO:
event_id = WMI_ROAM_EVENTID;
break;
+ case WOW_REASON_ROAM_PMKID_REQUEST:
+ event_id = WMI_ROAM_PMKID_REQUEST_EVENTID;
+ break;
default:
WMA_LOGD(FL("Unexpected WOW reason : %s(%d)"),
wma_wow_wake_reason_str(reason), reason);
@@ -4125,6 +4130,7 @@ static bool tlv_check_required(int32_t reason)
case WOW_REASON_NAN_EVENT:
case WOW_REASON_NAN_DATA:
case WOW_REASON_ROAM_HO:
+ case WOW_REASON_ROAM_PMKID_REQUEST:
return true;
default:
return false;
@@ -5052,6 +5058,14 @@ int wma_wow_wakeup_host_event(void *handle, uint8_t *event,
wma_send_msg(wma, SIR_LIM_DELETE_STA_CONTEXT_IND,
(void *)del_sta_ctx, 0);
break;
+ case WOW_REASON_ROAM_PMKID_REQUEST:
+ WMA_LOGD("Host woken up because of PMKID request event");
+ if (param_buf->wow_packet_buffer)
+ wma_roam_pmkid_request_event_handler(handle,
+ wmi_cmd_struct_ptr, wow_buf_pkt_len);
+ else
+ WMA_LOGD("No wow_packet_buffer present");
+ break;
default:
break;
}
diff --git a/core/wma/src/wma_utils.c b/core/wma/src/wma_utils.c
index aeca7afb4c78..6e254d1cb79f 100644
--- a/core/wma/src/wma_utils.c
+++ b/core/wma/src/wma_utils.c
@@ -6419,6 +6419,9 @@ void wma_set_sta_wow_bitmask(uint32_t *bitmask, uint32_t wow_bitmap_size)
wma_set_wow_event_bitmap(WOW_TDLS_CONN_TRACKER_EVENT,
WMI_WOW_MAX_EVENT_BM_LEN,
bitmask);
+ wma_set_wow_event_bitmap(WOW_ROAM_PMKID_REQUEST_EVENT,
+ WMI_WOW_MAX_EVENT_BM_LEN,
+ bitmask);
/* Add further STA wakeup events above this line. */
}