From ecef5a40240856f412fa883915613ef4bc0337c6 Mon Sep 17 00:00:00 2001 From: Arif Hussain Date: Fri, 1 Jun 2018 15:57:51 -0700 Subject: [PATCH] qcacmn: Add api to get dfs offload service bit in target_if Add api to get dfs offload service bit in target_if. Change-Id: I771ae8a2194250769d6e6d609b0a1863012110ea CRs-Fixed: 2264477 --- target_if/dfs/src/target_if_dfs.c | 12 +++- target_if/init_deinit/inc/init_deinit_lmac.h | 35 ------------ target_if/init_deinit/src/init_deinit_lmac.c | 57 ------------------- umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h | 8 --- umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h | 4 +- .../dispatcher/src/wlan_dfs_init_deinit_api.c | 17 +++--- umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c | 13 ----- umac/dfs/dispatcher/src/wlan_dfs_tgt_api.c | 5 +- .../lmac_if/inc/wlan_lmac_if_def.h | 6 +- 9 files changed, 24 insertions(+), 133 deletions(-) diff --git a/target_if/dfs/src/target_if_dfs.c b/target_if/dfs/src/target_if_dfs.c index 64d4c4189d0c..b674a1a6d9d0 100644 --- a/target_if/dfs/src/target_if_dfs.c +++ b/target_if/dfs/src/target_if_dfs.c @@ -195,9 +195,14 @@ static QDF_STATUS target_if_reg_phyerr_events_dfs2( } #endif +static bool target_if_dfs_offload(struct wlan_objmgr_psoc *psoc) +{ + return wmi_service_enabled(get_wmi_unified_hdl_from_psoc(psoc), + wmi_service_dfs_phyerr_offload); +} + static QDF_STATUS target_if_dfs_register_event_handler( - struct wlan_objmgr_psoc *psoc, - bool dfs_offload) + struct wlan_objmgr_psoc *psoc) { struct target_psoc_info *tgt_psoc_info; @@ -206,7 +211,7 @@ static QDF_STATUS target_if_dfs_register_event_handler( return QDF_STATUS_E_FAILURE; } - if (!dfs_offload) { + if (!target_if_dfs_offload(psoc)) { tgt_psoc_info = wlan_psoc_get_tgt_if_handle(psoc); if (!tgt_psoc_info) { target_if_err("null tgt_psoc_info"); @@ -359,6 +364,7 @@ QDF_STATUS target_if_register_dfs_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops) dfs_tx_ops->dfs_get_caps = &target_if_dfs_get_caps; dfs_tx_ops->dfs_send_avg_radar_params_to_fw = &target_if_dfs_send_avg_params_to_fw; + dfs_tx_ops->dfs_is_tgt_offload = &target_if_dfs_offload; return QDF_STATUS_SUCCESS; } diff --git a/target_if/init_deinit/inc/init_deinit_lmac.h b/target_if/init_deinit/inc/init_deinit_lmac.h index ec7a382c92ee..3afb5b90fba8 100644 --- a/target_if/init_deinit/inc/init_deinit_lmac.h +++ b/target_if/init_deinit/inc/init_deinit_lmac.h @@ -25,41 +25,6 @@ #ifndef _INIT_DEINIT_LMAC_H_ #define _INIT_DEINIT_LMAC_H_ -/** - * lmac_get_service_param() - get service param - * @psoc: pointer to psoc - * - * API to get service parameters - * - * Return: service parameter array pointer - */ -uint32_t *lmac_get_service_param(struct wlan_objmgr_psoc *psoc); - -/** - * lmac_is_service_param_bit_enabled() - check service param bit enabled - * @service_param: Service bitmap array - * @bit_idx: Service bit index to be checked - * - * API to check service param bitmap - * - * Return: true, if service is enabled - * false, if service is not enabled - */ -bool lmac_is_service_param_bit_enabled(uint32_t *service_param, - uint16_t bit_idx); - -/** - * lmac_get_dfs_offload() - get dfs offload - * @psoc: pointer to psoc - * @is_tgt_offload: boolean flag for offload enabled/disabled - * - * API to get dfs offload - * - * Return: SUCCESS, if API is invoked without any failures - */ -QDF_STATUS lmac_get_dfs_offload(struct wlan_objmgr_psoc *psoc, - bool *is_tgt_offload); - /** * lmac_get_tgt_res_cfg() - get target resource config * @psoc: pointer to psoc diff --git a/target_if/init_deinit/src/init_deinit_lmac.c b/target_if/init_deinit/src/init_deinit_lmac.c index 83f9fc88a10a..3a833c6f53f6 100644 --- a/target_if/init_deinit/src/init_deinit_lmac.c +++ b/target_if/init_deinit/src/init_deinit_lmac.c @@ -29,24 +29,6 @@ #include #include -uint32_t *lmac_get_service_param(struct wlan_objmgr_psoc *psoc) -{ - struct target_psoc_info *tgt_hdl; - - if (!psoc) { - target_if_err("psoc is null"); - return NULL; - } - - tgt_hdl = wlan_psoc_get_tgt_if_handle(psoc); - if (!tgt_hdl) { - target_if_err("target_psoc_info is null"); - return NULL; - } - - return target_psoc_get_service_bitmap(tgt_hdl); -} - struct wlan_psoc_target_capability_info *lmac_get_target_cap( struct wlan_objmgr_psoc *psoc) { @@ -66,45 +48,6 @@ struct wlan_psoc_target_capability_info *lmac_get_target_cap( return target_psoc_get_target_caps(tgt_hdl); } -bool lmac_is_service_param_bit_enabled(uint32_t *service_param, - uint16_t bit_idx) -{ - bool retval = false; - - if (((service_param)[(bit_idx) / (sizeof(uint32_t))] & - (1 << ((bit_idx) % (sizeof(uint32_t))))) != 0) - retval = true; - - return retval; -} - -/* dfs offload service bit */ -#define DFS_SERVICE_PHYERR_OFFLOAD 113 - -QDF_STATUS lmac_get_dfs_offload(struct wlan_objmgr_psoc *psoc, - bool *is_tgt_offload) -{ - uint32_t *service_bitmap; - - *is_tgt_offload = false; - - if (!psoc) { - target_if_err("psoc is null"); - return QDF_STATUS_E_FAILURE; - } - - service_bitmap = lmac_get_service_param(psoc); - if (!service_bitmap) { - target_if_err("pdev is null"); - return QDF_STATUS_E_FAILURE; - } - - *is_tgt_offload = lmac_is_service_param_bit_enabled(service_bitmap, - DFS_SERVICE_PHYERR_OFFLOAD); - - return QDF_STATUS_SUCCESS; -} - target_resource_config *lmac_get_tgt_res_cfg(struct wlan_objmgr_psoc *psoc) { struct target_psoc_info *tgt_hdl; diff --git a/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h b/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h index 38bbc22268e6..5c3838ba3ad3 100644 --- a/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h +++ b/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h @@ -83,14 +83,6 @@ bool lmac_is_mode_offload(struct wlan_objmgr_pdev *pdev); */ uint16_t lmac_get_ah_devid(struct wlan_objmgr_pdev *pdev); -/** - * lmac_is_mode_dfs_offload() - Check the DFS offload is enabled. - * @psoc: Pointer to PSOC structure. - * - * returns true if DFS offload is enabled, otherwise returns false - */ -bool lmac_is_mode_dfs_offload(struct wlan_objmgr_psoc *psoc); - /** * lmac_get_ext_busy() - Get ext_busy. * @pdev: Pointer to PDEV structure. diff --git a/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h b/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h index 298e81cad6b6..963a5cdc8aef 100644 --- a/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h +++ b/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h @@ -298,14 +298,12 @@ QDF_STATUS tgt_dfs_cac_complete(struct wlan_objmgr_pdev *pdev, /** * tgt_dfs_reg_ev_handler() - Register dfs events. * @psoc: Pointer to psoc. - * @dfs_offload: phy err processing offloaded to firmware. * * Register dfs events. * * Return: QDF_STATUS. */ -QDF_STATUS tgt_dfs_reg_ev_handler(struct wlan_objmgr_psoc *psoc, - bool dfs_offload); +QDF_STATUS tgt_dfs_reg_ev_handler(struct wlan_objmgr_psoc *psoc); /** * tgt_dfs_stop() - Clear dfs timers. diff --git a/umac/dfs/dispatcher/src/wlan_dfs_init_deinit_api.c b/umac/dfs/dispatcher/src/wlan_dfs_init_deinit_api.c index f1994be86d7b..400196e64c85 100644 --- a/umac/dfs/dispatcher/src/wlan_dfs_init_deinit_api.c +++ b/umac/dfs/dispatcher/src/wlan_dfs_init_deinit_api.c @@ -337,9 +337,16 @@ QDF_STATUS wlan_dfs_pdev_obj_create_notification(struct wlan_objmgr_pdev *pdev, global_dfs_to_mlme.pdev_component_obj_attach(pdev, WLAN_UMAC_COMP_DFS, (void *)dfs, QDF_STATUS_SUCCESS); dfs->dfs_pdev_obj = pdev; - dfs->dfs_is_offload_enabled = lmac_is_mode_dfs_offload(psoc); + + if (!dfs_tx_ops->dfs_is_tgt_offload) { + dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, + "dfs_is_tgt_offload is null"); + return QDF_STATUS_E_FAILURE; + } + + dfs->dfs_is_offload_enabled = dfs_tx_ops->dfs_is_tgt_offload(psoc); dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "dfs_offload %d", - dfs->dfs_is_offload_enabled); + dfs->dfs_is_offload_enabled); dfs = wlan_pdev_get_dfs_obj(pdev); if (dfs_attach(dfs) == 1) { @@ -441,12 +448,8 @@ static void dfs_scan_serialization_comp_info_cb( QDF_STATUS wifi_dfs_psoc_enable(struct wlan_objmgr_psoc *psoc) { QDF_STATUS status; - bool dfs_offload; - dfs_offload = lmac_is_mode_dfs_offload(psoc); - dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS, "dfs_offload %d", dfs_offload); - - status = tgt_dfs_reg_ev_handler(psoc, dfs_offload); + status = tgt_dfs_reg_ev_handler(psoc); if (status != QDF_STATUS_SUCCESS) { dfs_err(NULL, WLAN_DEBUG_DFS_ALWAYS, "tgt_dfs_reg_ev_handler failed"); return QDF_STATUS_E_FAILURE; diff --git a/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c b/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c index 58b93b85b71e..3cbb46780bfd 100644 --- a/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c +++ b/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c @@ -133,19 +133,6 @@ uint16_t lmac_get_ah_devid(struct wlan_objmgr_pdev *pdev) return devid; } -bool lmac_is_mode_dfs_offload(struct wlan_objmgr_psoc *psoc) -{ - struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops; - bool is_offload = false; - - dfs_tx_ops = &psoc->soc_cb.tx_ops.dfs_tx_ops; - - if (dfs_tx_ops->dfs_is_tgt_offload) - dfs_tx_ops->dfs_is_tgt_offload(psoc, &is_offload); - - return is_offload; -} - uint32_t lmac_get_ext_busy(struct wlan_objmgr_pdev *pdev) { struct wlan_objmgr_psoc *psoc; diff --git a/umac/dfs/dispatcher/src/wlan_dfs_tgt_api.c b/umac/dfs/dispatcher/src/wlan_dfs_tgt_api.c index c8f9a7d1dab3..673cb1b0ddf4 100644 --- a/umac/dfs/dispatcher/src/wlan_dfs_tgt_api.c +++ b/umac/dfs/dispatcher/src/wlan_dfs_tgt_api.c @@ -367,8 +367,7 @@ QDF_STATUS tgt_dfs_cac_complete(struct wlan_objmgr_pdev *pdev, uint32_t vdev_id) #endif qdf_export_symbol(tgt_dfs_cac_complete); -QDF_STATUS tgt_dfs_reg_ev_handler(struct wlan_objmgr_psoc *psoc, - bool dfs_offload) +QDF_STATUS tgt_dfs_reg_ev_handler(struct wlan_objmgr_psoc *psoc) { struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops; @@ -384,7 +383,7 @@ QDF_STATUS tgt_dfs_reg_ev_handler(struct wlan_objmgr_psoc *psoc, } if (dfs_tx_ops->dfs_reg_ev_handler) - return dfs_tx_ops->dfs_reg_ev_handler(psoc, dfs_offload); + return dfs_tx_ops->dfs_reg_ev_handler(psoc); return QDF_STATUS_E_FAILURE; } diff --git a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h b/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h index 47931d1a725f..faf909560e1a 100644 --- a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h +++ b/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h @@ -607,8 +607,7 @@ struct wlan_lmac_if_dfs_tx_ops { uint32_t chan_mode, uint32_t *mode_info, bool is_2gvht_en); - QDF_STATUS (*dfs_reg_ev_handler)(struct wlan_objmgr_psoc *psoc, - bool dfs_offload); + QDF_STATUS (*dfs_reg_ev_handler)(struct wlan_objmgr_psoc *psoc); QDF_STATUS (*dfs_process_emulate_bang_radar_cmd)( struct wlan_objmgr_pdev *pdev, struct dfs_emulate_bang_radar_test_cmd *dfs_unit_test); @@ -617,8 +616,7 @@ struct wlan_lmac_if_dfs_tx_ops { QDF_STATUS (*dfs_set_phyerr_filter_offload)( struct wlan_objmgr_pdev *pdev, bool dfs_phyerr_filter_offload); - QDF_STATUS (*dfs_is_tgt_offload)(struct wlan_objmgr_psoc *psoc, - bool *is_tgt_offload); + bool (*dfs_is_tgt_offload)(struct wlan_objmgr_psoc *psoc); QDF_STATUS (*dfs_send_offload_enable_cmd)( struct wlan_objmgr_pdev *pdev, bool enable);