Browse Source

qcacld-3.0: Un/Register NAN data path WMI event handlers

qcacld-2.0 to qcacld-3.0 propagation

Add routines to register and unregister all WMI event handlers
for NAN datapath.

CRs-Fixed: 962367
Change-Id: Ie2230e55ca15f03d76b4b8fc441370335743f87e
Deepak Dhamdhere 9 years ago
parent
commit
bf1f9b1e36
3 changed files with 126 additions and 28 deletions
  1. 4 0
      core/wma/src/wma_main.c
  2. 115 27
      core/wma/src/wma_nan_datapath.c
  3. 7 1
      core/wma/src/wma_nan_datapath.h

+ 4 - 0
core/wma/src/wma_main.c

@@ -2077,6 +2077,7 @@ QDF_STATUS wma_open(void *cds_context,
 					   WMI_BPF_CAPABILIY_INFO_EVENTID,
 					   wma_get_bpf_caps_event_handler,
 					   WMA_RX_SERIALIZER_CTX);
+	wma_ndp_register_all_event_handlers(wma_handle);
 	return QDF_STATUS_SUCCESS;
 
 err_dbglog_init:
@@ -3246,6 +3247,9 @@ QDF_STATUS wma_close(void *cds_ctx)
 		qdf_mem_free(wma_handle->pGetRssiReq);
 		wma_handle->pGetRssiReq = NULL;
 	}
+
+	wma_ndp_unregister_all_event_handlers(wma_handle);
+
 	if (WMI_SERVICE_IS_ENABLED(wma_handle->wmi_service_bitmap,
 				   WMI_SERVICE_MGMT_TX_WMI)) {
 		wmi_desc_pool_deinit(wma_handle);

+ 115 - 27
core/wma/src/wma_nan_datapath.c

@@ -89,26 +89,28 @@ QDF_STATUS wma_handle_ndp_sched_update_req(tp_wma_handle wma_handle,
  * @event_info: event handler data
  * @len: length of event_info
  *
- * Return: QDF_STATUS_SUCCESS on success; error number otherwise
+ * Handler for WMI_NDP_INDICATION_EVENTID
+ * Return: 0 on success, negative errno on failure
  */
-QDF_STATUS wma_ndp_indication_event_handler(void *handle,
-					uint8_t  *event_info, uint32_t len)
+static int wma_ndp_indication_event_handler(void *handle,
+					uint8_t *event_info, uint32_t len)
 {
-	return QDF_STATUS_SUCCESS;
+	return 0;
 }
 
 /**
- * wma_ndp_responder_resp_event_handler() - NDP responder response event handler
+ * wma_ndp_responder_rsp_event_handler() - NDP responder response event handler
  * @handle: wma handle
  * @event_info: event handler data
  * @len: length of event_info
  *
- * Return: QDF_STATUS_SUCCESS on success; error number otherwise
+ * Handler for WMI_NDP_RESPONDER_RSP_EVENTID
+ * Return: 0 on success, negative errno on failure
  */
-QDF_STATUS wma_ndp_responder_resp_event_handler(void *handle,
-					uint8_t  *event_info, uint32_t len)
+static int wma_ndp_responder_rsp_event_handler(void *handle,
+					uint8_t *event_info, uint32_t len)
 {
-	return QDF_STATUS_SUCCESS;
+	return 0;
 }
 
 /**
@@ -117,12 +119,13 @@ QDF_STATUS wma_ndp_responder_resp_event_handler(void *handle,
  * @event_info: event handler data
  * @len: length of event_info
  *
- * Return: QDF_STATUS_SUCCESS on success; error number otherwise
+ * Handler for WMI_NDP_CONFIRM_EVENTID
+ * Return: 0 on success, negative errno on failure
  */
-QDF_STATUS wma_ndp_confirm_event_handler(void *handle,
-					uint8_t  *event_info, uint32_t len)
+static int wma_ndp_confirm_event_handler(void *handle,
+					uint8_t *event_info, uint32_t len)
 {
-	return QDF_STATUS_SUCCESS;
+	return 0;
 }
 
 /**
@@ -131,12 +134,13 @@ QDF_STATUS wma_ndp_confirm_event_handler(void *handle,
  * @event_info: event handler data
  * @len: length of event_info
  *
- * Return: QDF_STATUS_SUCCESS on success; error number otherwise
+ * Handler for WMI_NDP_END_RSP_EVENTID
+ * Return: 0 on success, negative errno on failure
  */
-QDF_STATUS wma_ndp_end_response_event_handler(void *handle,
-					uint8_t  *event_info, uint32_t len)
+static int wma_ndp_end_response_event_handler(void *handle,
+					uint8_t *event_info, uint32_t len)
 {
-	return QDF_STATUS_SUCCESS;
+	return 0;
 }
 
 /**
@@ -145,26 +149,110 @@ QDF_STATUS wma_ndp_end_response_event_handler(void *handle,
  * @event_info: event handler data
  * @len: length of event_info
  *
- * Return: QDF_STATUS_SUCCESS on success; error number otherwise
+ * Handler for WMI_NDP_END_INDICATION_EVENTID
+ * Return: 0 on success, negative errno on failure
  */
-QDF_STATUS wma_ndp_end_indication_event_handler(void *handle,
-					uint8_t  *event_info, uint32_t len)
+static int wma_ndp_end_indication_event_handler(void *handle,
+					uint8_t *event_info, uint32_t len)
 {
-	return QDF_STATUS_SUCCESS;
+	return 0;
 }
 
 /**
- * wma_ndp_sched_update_rsp_event_handler() -NDP sched update rsp event handler
+ * wma_ndp_initiator_rsp_event_handler() -NDP initiator rsp event handler
  * @handle: wma handle
  * @event_info: event handler data
  * @len: length of event_info
  *
- * Return: QDF_STATUS_SUCCESS on success; error number otherwise
+ * Handler for WMI_NDP_INITIATOR_RSP_EVENTID
+ * Return: 0 on success, negative errno on failure
  */
-QDF_STATUS wma_ndp_sched_update_rsp_event_handler(void *handle,
-					uint8_t  *event_info, uint32_t len)
+static int wma_ndp_initiator_rsp_event_handler(void *handle,
+					uint8_t *event_info, uint32_t len)
 {
-	return QDF_STATUS_SUCCESS;
+	return 0;
+}
+
+/**
+ * wma_ndp_register_all_event_handlers() - Register all NDP event handlers
+ * @wma_handle: WMA context
+ *
+ * Register the handlers for NAN datapath events from firmware.
+ *
+ * Return: None
+ */
+void wma_ndp_register_all_event_handlers(tp_wma_handle wma_handle)
+{
+	WMA_LOGD(FL("Register WMI_NDP_INITIATOR_RSP_EVENTID"));
+	wmi_unified_register_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_INITIATOR_RSP_EVENTID,
+		wma_ndp_initiator_rsp_event_handler,
+		WMA_RX_SERIALIZER_CTX);
+
+	WMA_LOGD(FL("Register WMI_NDP_RESPONDER_RSP_EVENTID"));
+	wmi_unified_register_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_RESPONDER_RSP_EVENTID,
+		wma_ndp_responder_rsp_event_handler,
+		WMA_RX_SERIALIZER_CTX);
+
+	WMA_LOGD(FL("Register WMI_NDP_END_RSP_EVENTID"));
+	wmi_unified_register_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_END_RSP_EVENTID,
+		wma_ndp_end_response_event_handler,
+		WMA_RX_SERIALIZER_CTX);
+
+	WMA_LOGD(FL("Register WMI_NDP_INDICATION_EVENTID"));
+	wmi_unified_register_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_INDICATION_EVENTID,
+		wma_ndp_indication_event_handler,
+		WMA_RX_SERIALIZER_CTX);
+
+	WMA_LOGD(FL("Register WMI_NDP_CONFIRM_EVENTID"));
+	wmi_unified_register_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_CONFIRM_EVENTID,
+		wma_ndp_confirm_event_handler,
+		WMA_RX_SERIALIZER_CTX);
+
+	WMA_LOGD(FL("Register WMI_NDP_END_INDICATION_EVENTID"));
+	wmi_unified_register_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_END_INDICATION_EVENTID,
+		wma_ndp_end_indication_event_handler,
+		WMA_RX_SERIALIZER_CTX);
+}
+
+/**
+ * wma_ndp_unregister_all_event_handlers() - Unregister all NDP event handlers
+ * @wma_handle: WMA context
+ *
+ * Register the handlers for NAN datapath events from firmware.
+ *
+ * Return: None
+ */
+void wma_ndp_unregister_all_event_handlers(tp_wma_handle wma_handle)
+{
+	WMA_LOGD(FL("Unregister WMI_NDP_INITIATOR_RSP_EVENTID"));
+	wmi_unified_unregister_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_INITIATOR_RSP_EVENTID);
+
+	WMA_LOGD(FL("Unregister WMI_NDP_RESPONDER_RSP_EVENTID"));
+	wmi_unified_unregister_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_RESPONDER_RSP_EVENTID);
+
+	WMA_LOGD(FL("Unregister WMI_NDP_END_RSP_EVENTID"));
+	wmi_unified_unregister_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_END_RSP_EVENTID);
+
+	WMA_LOGD(FL("Unregister WMI_NDP_INDICATION_EVENTID"));
+	wmi_unified_unregister_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_INDICATION_EVENTID);
+
+	WMA_LOGD(FL("Unregister WMI_NDP_CONFIRM_EVENTID"));
+	wmi_unified_unregister_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_CONFIRM_EVENTID);
+
+	WMA_LOGD(FL("Unregister WMI_NDP_END_INDICATION_EVENTID"));
+	wmi_unified_unregister_event_handler(wma_handle->wmi_handle,
+		WMI_NDP_END_INDICATION_EVENTID);
 }
 
 /**
@@ -182,7 +270,7 @@ void wma_add_bss_ndi_mode(tp_wma_handle wma, tpAddBssParams add_bss)
 	struct wma_vdev_start_req req;
 	ol_txrx_peer_handle peer = NULL;
 	struct wma_target_req *msg;
-	u_int8_t vdev_id, peer_id;
+	uint8_t vdev_id, peer_id;
 	QDF_STATUS status;
 	struct vdev_set_params param = {0};
 

+ 7 - 1
core/wma/src/wma_nan_datapath.h

@@ -50,6 +50,9 @@ static inline void wma_update_hdd_cfg_ndp(tp_wma_handle wma_handle,
 }
 void wma_delete_all_nan_remote_peers(tp_wma_handle wma,
 					uint32_t vdev_id);
+
+void wma_ndp_register_all_event_handlers(tp_wma_handle wma_handle);
+void wma_ndp_unregister_all_event_handlers(tp_wma_handle wma_handle);
 #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,
@@ -62,11 +65,14 @@ static inline void wma_add_bss_ndi_mode(tp_wma_handle wma,
 {
 	return;
 }
-
 static inline void wma_delete_all_nan_remote_peers(tp_wma_handle wma,
 							uint32_t vdev_id)
 {
 }
+static inline void wma_ndp_register_all_event_handlers(
+					tp_wma_handle wma_handle) {}
+static inline void wma_ndp_unregister_all_event_handlers(
+					tp_wma_handle wma_handle) {}
 
 #endif /* WLAN_FEATURE_NAN_DATAPATH */
 #endif /* __WMA_NAN_DATAPATH_H */