From 67d105d4450091a278cced19bb99d94cf68715aa Mon Sep 17 00:00:00 2001 From: Wen Gong Date: Wed, 11 Apr 2018 17:59:03 +0800 Subject: [PATCH] qcacmn: Add DFS master feature flag Add config flag to enable / disable DFS master feature Change-Id: Iddd82dd5f117a4d75fda161f5a531aa7eab25016 CRs-Fixed: 2222557 --- umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h | 136 +++++++++++++------ umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h | 6 + umac/dfs/dispatcher/inc/wlan_dfs_utils_api.h | 37 ++++- umac/dfs/dispatcher/src/wlan_dfs_utils_api.c | 12 +- wmi/inc/wmi_unified_priv.h | 3 +- 5 files changed, 136 insertions(+), 58 deletions(-) diff --git a/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h b/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h index 04ce38338afb..298e81cad6b6 100644 --- a/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h +++ b/umac/dfs/dispatcher/inc/wlan_dfs_tgt_api.h @@ -78,6 +78,7 @@ extern struct dfs_to_mlme global_dfs_to_mlme; * @dfs_ch_vhtop_ch_freq_seg1: Channel Center frequency1. * @dfs_ch_vhtop_ch_freq_seg2: Channel Center frequency2. */ +#ifdef DFS_COMPONENT_ENABLE QDF_STATUS tgt_dfs_set_current_channel(struct wlan_objmgr_pdev *pdev, uint16_t dfs_ch_freq, uint64_t dfs_ch_flags, @@ -86,6 +87,34 @@ QDF_STATUS tgt_dfs_set_current_channel(struct wlan_objmgr_pdev *pdev, uint8_t dfs_ch_vhtop_ch_freq_seg1, uint8_t dfs_ch_vhtop_ch_freq_seg2); +/** + * tgt_dfs_radar_enable() - Enables the radar. + * @pdev: Pointer to DFS pdev object. + * @no_cac: If no_cac is 0, it cancels the CAC. + * + * This is called each time a channel change occurs, to (potentially) enable + * the radar code. + */ +QDF_STATUS tgt_dfs_radar_enable(struct wlan_objmgr_pdev *pdev, + int no_cac, uint32_t opmode); + +/** + * tgt_dfs_control()- Used to process ioctls related to DFS. + * @pdev: Pointer to DFS pdev object. + * @id: Command type. + * @indata: Input buffer. + * @insize: size of the input buffer. + * @outdata: A buffer for the results. + * @outsize: Size of the output buffer. + */ +QDF_STATUS tgt_dfs_control(struct wlan_objmgr_pdev *pdev, + u_int id, + void *indata, + uint32_t insize, + void *outdata, + uint32_t *outsize, + int *error); + /** * tgt_dfs_get_radars() - Based on the chipset, calls init radar table functions * @pdev: Pointer to DFS pdev object. @@ -95,6 +124,60 @@ QDF_STATUS tgt_dfs_set_current_channel(struct wlan_objmgr_pdev *pdev, */ QDF_STATUS tgt_dfs_get_radars(struct wlan_objmgr_pdev *pdev); +/** + * tgt_dfs_process_radar_ind() - Process radar found indication. + * @pdev: Pointer to DFS pdev object. + * @radar_found: radar found info. + * + * Process radar found indication. + * + * Return QDF_STATUS. + */ +QDF_STATUS tgt_dfs_process_radar_ind(struct wlan_objmgr_pdev *pdev, + struct radar_found_info *radar_found); +#else +static inline QDF_STATUS tgt_dfs_set_current_channel( + struct wlan_objmgr_pdev *pdev, + uint16_t dfs_ch_freq, + uint64_t dfs_ch_flags, + uint16_t dfs_ch_flagext, + uint8_t dfs_ch_ieee, + uint8_t dfs_ch_vhtop_ch_freq_seg1, + uint8_t dfs_ch_vhtop_ch_freq_seg2) +{ + return QDF_STATUS_SUCCESS; +} + +static inline QDF_STATUS tgt_dfs_radar_enable(struct wlan_objmgr_pdev *pdev, + int no_cac, uint32_t opmode) +{ + return QDF_STATUS_SUCCESS; +} + +static inline QDF_STATUS tgt_dfs_control(struct wlan_objmgr_pdev *pdev, + u_int id, + void *indata, + uint32_t insize, + void *outdata, + uint32_t *outsize, + int *error) +{ + return QDF_STATUS_SUCCESS; +} + +static inline QDF_STATUS tgt_dfs_get_radars(struct wlan_objmgr_pdev *pdev) +{ + return QDF_STATUS_SUCCESS; +} + +static inline QDF_STATUS tgt_dfs_process_radar_ind( + struct wlan_objmgr_pdev *pdev, + struct radar_found_info *radar_found) +{ + return QDF_STATUS_SUCCESS; +} +#endif + /** * tgt_dfs_process_phyerr() - Process phyerr. * @pdev: Pointer to DFS pdev object. @@ -147,17 +230,6 @@ QDF_STATUS tgt_dfs_is_phyerr_filter_offload(struct wlan_objmgr_psoc *psoc, */ QDF_STATUS tgt_dfs_destroy_object(struct wlan_objmgr_pdev *pdev); -/** - * tgt_dfs_radar_enable() - Enables the radar. - * @pdev: Pointer to DFS pdev object. - * @no_cac: If no_cac is 0, it cancels the CAC. - * - * This is called each time a channel change occurs, to (potentially) enable - * the radar code. - */ -QDF_STATUS tgt_dfs_radar_enable(struct wlan_objmgr_pdev *pdev, - int no_cac, uint32_t opmode); - #ifdef QCA_MCL_DFS_SUPPORT /** * tgt_dfs_set_tx_leakage_threshold() - set tx_leakage_threshold. @@ -168,25 +240,15 @@ QDF_STATUS tgt_dfs_radar_enable(struct wlan_objmgr_pdev *pdev, */ QDF_STATUS tgt_dfs_set_tx_leakage_threshold(struct wlan_objmgr_pdev *pdev, uint16_t tx_leakage_threshold); +#else +static inline QDF_STATUS tgt_dfs_set_tx_leakage_threshold + (struct wlan_objmgr_pdev *pdev, + uint16_t tx_leakage_threshold) +{ + return QDF_STATUS_SUCCESS; +} #endif -/** - * tgt_dfs_control()- Used to process ioctls related to DFS. - * @pdev: Pointer to DFS pdev object. - * @id: Command type. - * @indata: Input buffer. - * @insize: size of the input buffer. - * @outdata: A buffer for the results. - * @outsize: Size of the output buffer. - */ -QDF_STATUS tgt_dfs_control(struct wlan_objmgr_pdev *pdev, - u_int id, - void *indata, - uint32_t insize, - void *outdata, - uint32_t *outsize, - int *error); - /** * tgt_dfs_is_precac_timer_running() - Check whether precac timer is running. * @pdev: Pointer to DFS pdev object. @@ -221,18 +283,6 @@ QDF_STATUS tgt_dfs_find_vht80_chan_for_precac(struct wlan_objmgr_pdev *pdev, bool *dfs_set_cfreq2, bool *set_agile); -/** - * tgt_dfs_process_radar_ind() - Process radar found indication. - * @pdev: Pointer to DFS pdev object. - * @radar_found: radar found info. - * - * Process radar found indication. - * - * Return QDF_STATUS. - */ -QDF_STATUS tgt_dfs_process_radar_ind(struct wlan_objmgr_pdev *pdev, - struct radar_found_info *radar_found); - /** * tgt_dfs_cac_complete() - Process cac complete indication. * @pdev: Pointer to DFS pdev object. @@ -283,6 +333,12 @@ QDF_STATUS tgt_dfs_process_emulate_bang_radar_cmd(struct wlan_objmgr_pdev *pdev, * Return: QDF_STATUS */ QDF_STATUS tgt_dfs_set_phyerr_filter_offload(struct wlan_objmgr_pdev *pdev); +#else +static inline QDF_STATUS tgt_dfs_set_phyerr_filter_offload + (struct wlan_objmgr_pdev *pdev) +{ + return QDF_STATUS_SUCCESS; +} #endif #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST) diff --git a/umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h b/umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h index cbe70e933cbf..4a673960aa56 100644 --- a/umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h +++ b/umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h @@ -251,6 +251,12 @@ QDF_STATUS ucfg_dfs_get_precac_enable(struct wlan_objmgr_pdev *pdev, int *buff); */ QDF_STATUS ucfg_dfs_update_config(struct wlan_objmgr_psoc *psoc, struct dfs_user_config *req); +#else +static inline QDF_STATUS ucfg_dfs_update_config(struct wlan_objmgr_psoc *psoc, + struct dfs_user_config *req) +{ + return QDF_STATUS_SUCCESS; +} #endif /** diff --git a/umac/dfs/dispatcher/inc/wlan_dfs_utils_api.h b/umac/dfs/dispatcher/inc/wlan_dfs_utils_api.h index 4171ab1cb5f7..36523f96d573 100644 --- a/umac/dfs/dispatcher/inc/wlan_dfs_utils_api.h +++ b/umac/dfs/dispatcher/inc/wlan_dfs_utils_api.h @@ -331,8 +331,13 @@ QDF_STATUS utils_dfs_get_random_channel(struct wlan_objmgr_pdev *pdev, * * Return: None */ +#ifdef QCA_DFS_NOL_PLATFORM_DRV_SUPPORT void utils_dfs_init_nol(struct wlan_objmgr_pdev *pdev); - +#else +static inline void utils_dfs_init_nol(struct wlan_objmgr_pdev *pdev) +{ +} +#endif /** * utils_dfs_save_nol() - save nol list to platform driver. * @pdev: pdev handler. @@ -351,7 +356,13 @@ void utils_dfs_save_nol(struct wlan_objmgr_pdev *pdev); * * Return: None */ +#ifdef DFS_COMPONENT_ENABLE void utils_dfs_print_nol_channels(struct wlan_objmgr_pdev *pdev); +#else +static inline void utils_dfs_print_nol_channels(struct wlan_objmgr_pdev *pdev) +{ +} +#endif /** * utils_dfs_clear_nol_channels() - clear nol list. @@ -371,8 +382,10 @@ void utils_dfs_clear_nol_channels(struct wlan_objmgr_pdev *pdev); * * Return: True if channel dfs, else false. */ -bool utils_is_dfs_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan); - +static inline bool utils_is_dfs_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan) +{ + return wlan_reg_is_dfs_ch(pdev, chan); +} /** * utils_dfs_reg_update_nol_ch() - set nol channel * @@ -402,8 +415,14 @@ uint8_t utils_dfs_freq_to_chan(uint32_t freq); * * Return: frequency */ +#ifdef DFS_COMPONENT_ENABLE uint32_t utils_dfs_chan_to_freq(uint8_t chan); - +#else +static inline uint32_t utils_dfs_chan_to_freq(uint8_t chan) +{ + return 0; +} +#endif /** * utils_dfs_update_cur_chan_flags() - Update DFS channel flag and flagext. * @pdev: Pointer to DFS pdev object. @@ -434,8 +453,16 @@ QDF_STATUS utils_dfs_mark_leaking_ch(struct wlan_objmgr_pdev *pdev, enum phy_ch_width ch_width, uint8_t temp_ch_lst_sz, uint8_t *temp_ch_lst); +#else +static inline QDF_STATUS utils_dfs_mark_leaking_ch + (struct wlan_objmgr_pdev *pdev, + enum phy_ch_width ch_width, + uint8_t temp_ch_lst_sz, + uint8_t *temp_ch_lst) +{ + return QDF_STATUS_SUCCESS; +} #endif - /** * utils_get_dfsdomain() - Get DFS domain. * @pdev: Pointer to PDEV structure. diff --git a/umac/dfs/dispatcher/src/wlan_dfs_utils_api.c b/umac/dfs/dispatcher/src/wlan_dfs_utils_api.c index 04bcd2f62910..cd45401c629e 100644 --- a/umac/dfs/dispatcher/src/wlan_dfs_utils_api.c +++ b/umac/dfs/dispatcher/src/wlan_dfs_utils_api.c @@ -670,11 +670,7 @@ random_chan_error: } qdf_export_symbol(utils_dfs_get_random_channel); -#ifndef QCA_DFS_NOL_PLATFORM_DRV_SUPPORT -void utils_dfs_init_nol(struct wlan_objmgr_pdev *pdev) -{ -} -#else +#ifdef QCA_DFS_NOL_PLATFORM_DRV_SUPPORT void utils_dfs_init_nol(struct wlan_objmgr_pdev *pdev) { struct wlan_dfs *dfs; @@ -797,12 +793,6 @@ void utils_dfs_clear_nol_channels(struct wlan_objmgr_pdev *pdev) } qdf_export_symbol(utils_dfs_clear_nol_channels); -bool utils_is_dfs_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan) -{ - return wlan_reg_is_dfs_ch(pdev, chan); -} -qdf_export_symbol(utils_is_dfs_ch); - void utils_dfs_reg_update_nol_ch(struct wlan_objmgr_pdev *pdev, uint8_t *ch_list, uint8_t num_ch, diff --git a/wmi/inc/wmi_unified_priv.h b/wmi/inc/wmi_unified_priv.h index 581b766ccd4b..d2c01942b947 100644 --- a/wmi/inc/wmi_unified_priv.h +++ b/wmi/inc/wmi_unified_priv.h @@ -1474,7 +1474,6 @@ QDF_STATUS (*extract_rcpi_response_event)(wmi_unified_t wmi_handle, void *evt_buf, struct rcpi_res *res); -#ifdef DFS_COMPONENT_ENABLE QDF_STATUS (*extract_dfs_cac_complete_event)(wmi_unified_t wmi_handle, uint8_t *evt_buf, uint32_t *vdev_id, @@ -1487,7 +1486,7 @@ QDF_STATUS (*extract_wlan_radar_event_info)(wmi_unified_t wmi_handle, uint8_t *evt_buf, struct radar_event_info *wlan_radar_event, uint32_t len); -#endif + QDF_STATUS (*send_set_country_cmd)(wmi_unified_t wmi_handle, struct set_country *param);