diff options
| -rw-r--r-- | core/wma/src/wma_features.c | 15 | ||||
| -rw-r--r-- | core/wma/src/wma_nan_datapath.c | 54 | ||||
| -rw-r--r-- | core/wma/src/wma_nan_datapath.h | 10 |
3 files changed, 28 insertions, 51 deletions
diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index 6b0a2ed2257c..4ad1d243a214 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -2616,6 +2616,9 @@ static int wow_get_wmi_eventid(int32_t reason, uint32_t tag) case WOW_REASON_NAN_EVENT: event_id = WMI_NAN_EVENTID; break; + case WOW_REASON_NAN_DATA: + event_id = wma_ndp_get_eventid_from_tlvtag(tag); + break; default: WMA_LOGD(FL("Unexpected WOW reason : %s(%d)"), wma_wow_wake_reason_str(reason), reason); @@ -3333,16 +3336,8 @@ int wma_wow_wakeup_host_event(void *handle, uint8_t *event, case WOW_REASON_NAN_DATA: WMA_LOGD(FL("Host woken up for NAN data path event from FW")); if (param_buf->wow_packet_buffer) { - wow_buf_pkt_len = - *(uint32_t *)param_buf->wow_packet_buffer; - WMA_LOGD(FL("wow_packet_buffer dump")); - qdf_trace_hex_dump(QDF_MODULE_ID_WMA, - QDF_TRACE_LEVEL_DEBUG, - param_buf->wow_packet_buffer, - wow_buf_pkt_len); - wma_ndp_wow_event_callback(handle, - (param_buf->wow_packet_buffer + 4), - wow_buf_pkt_len); + wma_ndp_wow_event_callback(handle, wmi_cmd_struct_ptr, + wow_buf_pkt_len, event_id); } else { WMA_LOGE(FL("wow_packet_buffer is empty")); } diff --git a/core/wma/src/wma_nan_datapath.c b/core/wma/src/wma_nan_datapath.c index b55ff5060262..34a1b7affde8 100644 --- a/core/wma/src/wma_nan_datapath.c +++ b/core/wma/src/wma_nan_datapath.c @@ -825,7 +825,7 @@ void wma_ndp_add_wow_wakeup_event(tp_wma_handle wma_handle, * Return: 0 if TLV tag is invalid * else return corresponding WMI event id */ -static int wma_ndp_get_eventid_from_tlvtag(uint32_t tag) +uint32_t wma_ndp_get_eventid_from_tlvtag(uint32_t tag) { uint32_t event_id; @@ -869,6 +869,7 @@ static int wma_ndp_get_eventid_from_tlvtag(uint32_t tag) * @handle: WMA handle * @event: event buffer * @len: length of @event buffer + * @event_id: event id for ndp wow event * * The wow event WOW_REASON_NAN_DATA is followed by the payload of the event * which generated the wow event. @@ -879,66 +880,41 @@ static int wma_ndp_get_eventid_from_tlvtag(uint32_t tag) * * Return: none */ -void wma_ndp_wow_event_callback(void *handle, void *event, - uint32_t len) +void wma_ndp_wow_event_callback(void *handle, void *event, uint32_t len, + uint32_t event_id) { - uint32_t id; - int tlv_ok_status = 0; - void *wmi_cmd_struct_ptr = NULL; - uint32_t tag = WMITLV_GET_TLVTAG(WMITLV_GET_HDR(event)); - - /* Reverse map fixed params tag to EVENT_ID */ - id = wma_ndp_get_eventid_from_tlvtag(tag); - if (!id) { - WMA_LOGE(FL("Invalid Tag: %d"), tag); - return; - } - - tlv_ok_status = wmitlv_check_and_pad_event_tlvs(handle, event, len, - id, - &wmi_cmd_struct_ptr); - if (tlv_ok_status != 0) { - WMA_LOGE(FL("Invalid Tag: %d could not check and pad tlvs"), - tag); - return; - } - - switch (id) { + WMA_LOGD(FL("ndp_wow_event dump")); + qdf_trace_hex_dump(QDF_MODULE_ID_WMA, QDF_TRACE_LEVEL_DEBUG, + event, len); + switch (event_id) { case WMI_NDP_INITIATOR_RSP_EVENTID: - wma_ndp_initiator_rsp_event_handler(handle, - wmi_cmd_struct_ptr, len); + wma_ndp_initiator_rsp_event_handler(handle, event, len); break; case WMI_NDP_RESPONDER_RSP_EVENTID: - wma_ndp_responder_rsp_event_handler(handle, - wmi_cmd_struct_ptr, len); + wma_ndp_responder_rsp_event_handler(handle, event, len); break; case WMI_NDP_END_RSP_EVENTID: - wma_ndp_end_response_event_handler(handle, - wmi_cmd_struct_ptr, len); + wma_ndp_end_response_event_handler(handle, event, len); break; case WMI_NDP_INDICATION_EVENTID: - wma_ndp_indication_event_handler(handle, - wmi_cmd_struct_ptr, len); + wma_ndp_indication_event_handler(handle, event, len); break; case WMI_NDP_CONFIRM_EVENTID: - wma_ndp_confirm_event_handler(handle, - wmi_cmd_struct_ptr, len); + wma_ndp_confirm_event_handler(handle, event, len); break; case WMI_NDP_END_INDICATION_EVENTID: - wma_ndp_end_indication_event_handler(handle, - wmi_cmd_struct_ptr, len); + wma_ndp_end_indication_event_handler(handle, event, len); break; default: - WMA_LOGE(FL("Unknown tag: %d"), tag); + WMA_LOGE(FL("Unknown event: %d"), event_id); break; } - wmitlv_free_allocated_event_tlvs(id, &wmi_cmd_struct_ptr); } /** diff --git a/core/wma/src/wma_nan_datapath.h b/core/wma/src/wma_nan_datapath.h index ace8e31bd80b..6f9013853bbf 100644 --- a/core/wma/src/wma_nan_datapath.h +++ b/core/wma/src/wma_nan_datapath.h @@ -55,13 +55,15 @@ void wma_ndp_register_all_event_handlers(tp_wma_handle wma_handle); void wma_ndp_unregister_all_event_handlers(tp_wma_handle wma_handle); void wma_ndp_add_wow_wakeup_event(tp_wma_handle wma_handle, uint8_t vdev_id); -void wma_ndp_wow_event_callback(void *handle, void *event, uint32_t len); +void wma_ndp_wow_event_callback(void *handle, void *event, + uint32_t len, uint32_t event_id); void wma_add_bss_ndi_mode(tp_wma_handle wma, tpAddBssParams add_bss); void wma_add_sta_ndi_mode(tp_wma_handle wma, tpAddStaParams add_sta); QDF_STATUS wma_handle_ndp_initiator_req(tp_wma_handle wma_handle, void *req); QDF_STATUS wma_handle_ndp_end_req(tp_wma_handle wma_handle, void *req); void wma_delete_sta_req_ndi_mode(tp_wma_handle wma, tpDeleteStaParams del_sta); +uint32_t wma_ndp_get_eventid_from_tlvtag(uint32_t tag); #else #define WMA_IS_VDEV_IN_NDI_MODE(intf, vdev_id) (false) static inline void wma_update_hdd_cfg_ndp(tp_wma_handle wma_handle, @@ -85,7 +87,7 @@ static inline void wma_ndp_unregister_all_event_handlers( static inline void wma_ndp_add_wow_wakeup_event(tp_wma_handle wma_handle, uint8_t vdev_id) {} static inline void wma_ndp_wow_event_callback(void *handle, void *event, - uint32_t len) {} + uint32_t len, uint32_t event_id) {} static inline void wma_add_sta_ndi_mode(tp_wma_handle wma, tpAddStaParams add_sta) {} static inline QDF_STATUS wma_handle_ndp_initiator_req(tp_wma_handle wma_handle, @@ -109,5 +111,9 @@ static inline void wma_delete_sta_req_ndi_mode(tp_wma_handle wma, { } +static inline uint32_t wma_ndp_get_eventid_from_tlvtag(uint32_t tag) +{ + return 0; +} #endif /* WLAN_FEATURE_NAN_DATAPATH */ #endif /* __WMA_NAN_DATAPATH_H */ |
