summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/wma/src/wma_features.c15
-rw-r--r--core/wma/src/wma_nan_datapath.c54
-rw-r--r--core/wma/src/wma_nan_datapath.h10
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 */