summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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. */
}