From da2444cda451c718a1666ec0bf19268003cf80c6 Mon Sep 17 00:00:00 2001 From: Rajeev Kumar Date: Tue, 10 Jan 2017 22:42:07 -0800 Subject: [PATCH] qcacld-3.0: Add WMA changes for WMI (ext)service ready convergence Add WMA changes for WMI (ext)service ready event common parsing to populate common psoc object with service ready data such that new components can get service ready data from common psoc object. Change-Id: I5bc42a7534aebd6877fc02378b2e698d2d021383 CRs-Fixed: 1110768 --- Kbuild | 6 ++++-- core/wma/src/wma_main.c | 38 ++++++++++++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/Kbuild b/Kbuild index 408c9993421a..7956b74ef23e 100644 --- a/Kbuild +++ b/Kbuild @@ -818,9 +818,11 @@ BMI_OBJS += $(BMI_DIR)/src/bmi_1.o TARGET_IF_DIR := $(WLAN_COMMON_ROOT)/target_if TARGET_IF_INC := -I$(WLAN_COMMON_INC)/target_if/core/inc \ - -I$(WLAN_COMMON_INC)/target_if/core/src + -I$(WLAN_COMMON_INC)/target_if/core/src \ + -I$(WLAN_COMMON_INC)/target_if/init_deinit/inc -TARGET_IF_OBJ := $(TARGET_IF_DIR)/core/src/target_if_main.o +TARGET_IF_OBJ := $(TARGET_IF_DIR)/core/src/target_if_main.o \ + $(TARGET_IF_DIR)/init_deinit/src/service_ready_event_handler.o ########### WMI ########### WMI_ROOT_DIR := wmi diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index d5518f6cdf54..9032cc27061f 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -42,6 +42,7 @@ #include "wni_api.h" #include "ani_global.h" #include "wmi_unified.h" +#include "service_ready_event_handler.h" #include "wni_cfg.h" #include "cfg_api.h" #if defined(CONFIG_HL_SUPPORT) @@ -1878,6 +1879,30 @@ static struct wlan_objmgr_psoc *wma_get_psoc_from_scn_handle(void *scn_handle) return wma_handle->psoc; } +/** + * wma_legacy_service_ready_event_handler() - legacy (ext)service ready handler + * @event_id: event_id + * @handle: wma handle + * @event_data: event data + * @length: event length + * + * Return: 0 for success, negative error code for failure + */ +static int wma_legacy_service_ready_event_handler(uint32_t event_id, + void *handle, + uint8_t *event_data, + uint32_t length) +{ + if (wmi_service_ready_event_id == event_id) + return wma_rx_service_ready_event(handle, event_data, length); + else if (wmi_service_ready_ext_event_id == event_id) + return wma_rx_service_ready_ext_event(handle, event_data, + length); + else + QDF_BUG(0); + + return 0; +} /** * wma_flush_complete_evt_handler() - FW log flush complete event handler @@ -2013,6 +2038,10 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc, void *cds_context, } wma_handle->psoc = psoc; + /* Open target_if layer and register wma callback */ + wma_target_if_open(wma_handle); + target_if_open(wma_get_psoc_from_scn_handle); + /* Attach mc_thread context processing function */ ops.wma_process_fw_event_handler_cbk = wma_process_fw_event_handler; /* attach the wmi */ @@ -2024,6 +2053,9 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc, void *cds_context, goto err_wma_handle; } + target_if_register_legacy_service_ready_cb( + wma_legacy_service_ready_event_handler); + WMA_LOGA("WMA --> wmi_unified_attach - success"); /* set the wmi handle (as tgt_if_handle) in psoc */ @@ -2033,11 +2065,11 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc, void *cds_context, wmi_unified_register_event_handler(wmi_handle, WMI_SERVICE_READY_EVENTID, - wma_rx_service_ready_event, + init_deinit_service_ready_event_handler, WMA_RX_SERIALIZER_CTX); wmi_unified_register_event_handler(wmi_handle, WMI_SERVICE_READY_EXT_EVENTID, - wma_rx_service_ready_ext_event, + init_deinit_service_ext_ready_event_handler, WMA_RX_SERIALIZER_CTX); wmi_unified_register_event_handler(wmi_handle, WMI_READY_EVENTID, @@ -2419,8 +2451,6 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc, void *cds_context, WMA_RX_WORK_CTX); wma_ndp_register_all_event_handlers(wma_handle); - wma_target_if_open(wma_handle); - target_if_open(wma_get_psoc_from_scn_handle); wma_register_debug_callback();