diff options
| -rw-r--r-- | core/wma/inc/wma_internal.h | 8 | ||||
| -rw-r--r-- | core/wma/src/wma_features.c | 14 | ||||
| -rw-r--r-- | core/wma/src/wma_utils.c | 3 |
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. */ } |
