diff --git a/umac/dfs/core/src/dfs.h b/umac/dfs/core/src/dfs.h index 220877948c..2c46220035 100644 --- a/umac/dfs/core/src/dfs.h +++ b/umac/dfs/core/src/dfs.h @@ -2076,6 +2076,23 @@ static inline void dfs_process_phyerr(struct wlan_dfs *dfs, } #endif +#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL +/** + * dfs_switch_to_postnol_chan_if_nol_expired() - Find if NOL is expired + * in the postNOL channel configured. If true, trigger channel change. + * @dfs: Pointer to DFS of wlan_dfs structure. + * + * Return: True, if channel change is triggered, else false. + */ +bool dfs_switch_to_postnol_chan_if_nol_expired(struct wlan_dfs *dfs); +#else +static inline bool +dfs_switch_to_postnol_chan_if_nol_expired(struct wlan_dfs *dfs) +{ + return false; +} +#endif + #ifdef QCA_MCL_DFS_SUPPORT /** * dfs_process_phyerr_filter_offload() - Process radar event. @@ -3049,84 +3066,11 @@ dfs_bang_radar(struct wlan_dfs *dfs, void *indata, uint32_t insize) } #endif -#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL -/** - * dfs_set_postnol_freq() - DFS API to set postNOL frequency. - * @dfs: Pointer to wlan_dfs object. - * @postnol_freq: PostNOL frequency value configured by the user. - */ -void dfs_set_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t postnol_freq); - -/** - * dfs_set_postnol_mode() - DFS API to set postNOL mode. - * @dfs: Pointer to wlan_dfs object. - * @postnol_mode: PostNOL frequency value configured by the user. - */ -void dfs_set_postnol_mode(struct wlan_dfs *dfs, uint8_t postnol_mode); - -/** - * dfs_set_postnol_cfreq2() - DFS API to set postNOL secondary center frequency. - * @dfs: Pointer to wlan_dfs object. - * @postnol_cfreq2: PostNOL secondary center frequency value configured by the - * user. - */ -void dfs_set_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t postnol_cfreq2); - -/** - * dfs_get_postnol_freq() - DFS API to get postNOL frequency. - * @dfs: Pointer to wlan_dfs object. - * @postnol_freq: PostNOL frequency value configured by the user. - */ -void dfs_get_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t *postnol_freq); - -/** - * dfs_get_postnol_mode() - DFS API to get postNOL mode. - * @dfs: Pointer to wlan_dfs object. - * @postnol_mode: PostNOL frequency value configured by the user. - */ -void dfs_get_postnol_mode(struct wlan_dfs *dfs, uint8_t *postnol_mode); - -/** - * dfs_get_postnol_cfreq2() - DFS API to get postNOL secondary center frequency. - * @dfs: Pointer to wlan_dfs object. - * @postnol_cfreq2: PostNOL secondary center frequency value configured by the - * user. - */ -void dfs_get_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t *postnol_cfreq2); +#if defined(QCA_SUPPORT_DFS_CHAN_POSTNOL) +void dfs_postnol_attach(struct wlan_dfs *dfs); #else -static inline void -dfs_set_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t postnol_freq) +static inline void dfs_postnol_attach(struct wlan_dfs *dfs) { } - -static inline void -dfs_set_postnol_mode(struct wlan_dfs *dfs, uint8_t postnol_mode) -{ -} - -static inline void -dfs_set_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t postnol_cfreq2) -{ -} - -static inline void -dfs_get_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t *postnol_freq) -{ - *postnol_freq = 0; -} - -static inline void -dfs_get_postnol_mode(struct wlan_dfs *dfs, uint8_t *postnol_mode) -{ - *postnol_mode = CH_WIDTH_INVALID; -} - -static inline void -dfs_get_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t *postnol_cfreq2) -{ - *postnol_cfreq2 = 0; -} - -#endif /* QCA_SUPPORT_DFS_CHAN_POSTNOL */ - +#endif #endif /* _DFS_H_ */ diff --git a/umac/dfs/core/src/misc/dfs.c b/umac/dfs/core/src/misc/dfs.c index 1a694b2319..b78002adfd 100644 --- a/umac/dfs/core/src/misc/dfs.c +++ b/umac/dfs/core/src/misc/dfs.c @@ -205,17 +205,6 @@ int dfs_create_object(struct wlan_dfs **dfs) return 0; } -#if defined(QCA_SUPPORT_DFS_CHAN_POSTNOL) -static void dfs_postnol_attach(struct wlan_dfs *dfs) -{ - dfs->dfs_chan_postnol_mode = CH_WIDTH_INVALID; -} -#else -static inline void dfs_postnol_attach(struct wlan_dfs *dfs) -{ -} -#endif - int dfs_attach(struct wlan_dfs *dfs) { int ret; @@ -932,74 +921,3 @@ uint8_t dfs_get_agile_detector_id(struct wlan_dfs *dfs) return dfs->dfs_agile_detector_id; } #endif - -#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL -void dfs_set_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t postnol_freq) -{ - dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, - "dfs_chan_postnol_freq configured as %d", postnol_freq); - - dfs->dfs_chan_postnol_freq = postnol_freq; -} - -void dfs_set_postnol_mode(struct wlan_dfs *dfs, uint8_t postnol_mode) -{ - if (dfs->dfs_chan_postnol_cfreq2) { - dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, - "postNOL cfreq2 has been set,reset it to change mode"); - return; - } - - switch (postnol_mode) { - case DFS_CHWIDTH_20_VAL: - dfs->dfs_chan_postnol_mode = CH_WIDTH_20MHZ; - break; - case DFS_CHWIDTH_40_VAL: - dfs->dfs_chan_postnol_mode = CH_WIDTH_40MHZ; - break; - case DFS_CHWIDTH_80_VAL: - dfs->dfs_chan_postnol_mode = CH_WIDTH_80MHZ; - break; - case DFS_CHWIDTH_160_VAL: - dfs->dfs_chan_postnol_mode = CH_WIDTH_160MHZ; - break; - default: - dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, - "Invalid postNOL mode configured"); - return; - } - - dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, - "DFS postnol mode configured as %d", - dfs->dfs_chan_postnol_mode); -} - -void dfs_set_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t postnol_cfreq2) -{ - dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, - "dfs_chan_postnol_cfreq2 configured as %d", postnol_cfreq2); - - dfs->dfs_chan_postnol_cfreq2 = postnol_cfreq2; - - if (postnol_cfreq2) { - dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, - "postNOL cfreq2 is set, changing mode to 80P80"); - dfs->dfs_chan_postnol_mode = CH_WIDTH_80P80MHZ; - } -} - -void dfs_get_postnol_freq(struct wlan_dfs *dfs, qdf_freq_t *postnol_freq) -{ - *postnol_freq = dfs->dfs_chan_postnol_freq; -} - -void dfs_get_postnol_mode(struct wlan_dfs *dfs, uint8_t *postnol_mode) -{ - *postnol_mode = dfs->dfs_chan_postnol_mode; -} - -void dfs_get_postnol_cfreq2(struct wlan_dfs *dfs, qdf_freq_t *postnol_cfreq2) -{ - *postnol_cfreq2 = dfs->dfs_chan_postnol_cfreq2; -} -#endif diff --git a/umac/dfs/core/src/misc/dfs_nol.c b/umac/dfs/core/src/misc/dfs_nol.c index 823fc659ca..a30c2b3198 100644 --- a/umac/dfs/core/src/misc/dfs_nol.c +++ b/umac/dfs/core/src/misc/dfs_nol.c @@ -283,127 +283,6 @@ static void dfs_nol_delete(struct wlan_dfs *dfs, } } -#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL -/** - * dfs_switch_to_postnol_chan_if_nol_expired() - Find if NOL is expired - * in the postNOL channel configured. If true, trigger channel change. - * @dfs: Pointer to DFS of wlan_dfs structure. - * - * Return: True, if channel change is triggered, else false. - */ -static bool -dfs_switch_to_postnol_chan_if_nol_expired(struct wlan_dfs *dfs) -{ - struct dfs_channel chan; - struct dfs_channel *curchan = dfs->dfs_curchan; - bool is_curchan_11ac = false, is_curchan_11axa = false; - enum wlan_phymode postnol_phymode; - - if (!dfs->dfs_chan_postnol_freq) - return false; - - if (WLAN_IS_CHAN_11AC_VHT20(curchan) || - WLAN_IS_CHAN_11AC_VHT40(curchan) || - WLAN_IS_CHAN_11AC_VHT80(curchan) || - WLAN_IS_CHAN_11AC_VHT160(curchan) || - WLAN_IS_CHAN_11AC_VHT80_80(curchan)) - is_curchan_11ac = true; - else if (WLAN_IS_CHAN_11AXA_HE20(curchan) || - WLAN_IS_CHAN_11AXA_HE40PLUS(curchan) || - WLAN_IS_CHAN_11AXA_HE40MINUS(curchan) || - WLAN_IS_CHAN_11AXA_HE80(curchan) || - WLAN_IS_CHAN_11AXA_HE160(curchan) || - WLAN_IS_CHAN_11AXA_HE80_80(curchan)) - is_curchan_11axa = true; - - switch (dfs->dfs_chan_postnol_mode) { - case CH_WIDTH_20MHZ: - if (is_curchan_11ac) - postnol_phymode = WLAN_PHYMODE_11AC_VHT20; - else if (is_curchan_11axa) - postnol_phymode = WLAN_PHYMODE_11AXA_HE20; - else - return false; - break; - case CH_WIDTH_40MHZ: - if (is_curchan_11ac) - postnol_phymode = WLAN_PHYMODE_11AC_VHT40; - else if (is_curchan_11axa) - postnol_phymode = WLAN_PHYMODE_11AXA_HE40; - else - return false; - break; - case CH_WIDTH_80MHZ: - if (is_curchan_11ac) - postnol_phymode = WLAN_PHYMODE_11AC_VHT80; - else if (is_curchan_11axa) - postnol_phymode = WLAN_PHYMODE_11AXA_HE80; - else - return false; - break; - case CH_WIDTH_160MHZ: - if (is_curchan_11ac) - postnol_phymode = WLAN_PHYMODE_11AC_VHT160; - else if (is_curchan_11axa) - postnol_phymode = WLAN_PHYMODE_11AXA_HE160; - else - return false; - break; - case CH_WIDTH_80P80MHZ: - if (is_curchan_11ac) - postnol_phymode = WLAN_PHYMODE_11AC_VHT80_80; - else if (is_curchan_11axa) - postnol_phymode = WLAN_PHYMODE_11AXA_HE80_80; - else - return false; - break; - default: - dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, - "Invalid postNOL mode set. Cannot switch to the chan"); - return false; - } - - qdf_mem_zero(&chan, sizeof(struct dfs_channel)); - if (QDF_STATUS_SUCCESS != - dfs_mlme_find_dot11_chan_for_freq( - dfs->dfs_pdev_obj, - dfs->dfs_chan_postnol_freq, - dfs->dfs_chan_postnol_cfreq2, - postnol_phymode, - &chan.dfs_ch_freq, - &chan.dfs_ch_flags, - &chan.dfs_ch_flagext, - &chan.dfs_ch_ieee, - &chan.dfs_ch_vhtop_ch_freq_seg1, - &chan.dfs_ch_vhtop_ch_freq_seg2, - &chan.dfs_ch_mhz_freq_seg1, - &chan.dfs_ch_mhz_freq_seg2)) { - dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, - "Channel %d not found for mode %d and cfreq2 %d", - dfs->dfs_chan_postnol_freq, - postnol_phymode, - dfs->dfs_chan_postnol_cfreq2); - return false; - } - if (WLAN_IS_CHAN_RADAR(&chan)) - return false; - - if (global_dfs_to_mlme.mlme_postnol_chan_switch) - global_dfs_to_mlme.mlme_postnol_chan_switch( - dfs->dfs_pdev_obj, - dfs->dfs_chan_postnol_freq, - dfs->dfs_chan_postnol_cfreq2, - postnol_phymode); - return true; -} -#else -static inline bool -dfs_switch_to_postnol_chan_if_nol_expired(struct wlan_dfs *dfs) -{ - return false; -} -#endif - /** * dfs_remove_from_nol() - Remove the freq from NOL list. * diff --git a/umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h b/umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h index f5a701606c..de031130ad 100644 --- a/umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h +++ b/umac/dfs/dispatcher/inc/wlan_dfs_ucfg_api.h @@ -653,109 +653,6 @@ ucfg_dfs_set_rcac_freq(struct wlan_objmgr_pdev *pdev, } #endif -#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL -/** - * ucfg_dfs_set_postnol_freq() - Set PostNOL freq. - * @pdev: Pointer to DFS pdev object. - * @postnol_freq: User configured freq to switch to, post NOL, in MHZ. - * - */ -QDF_STATUS ucfg_dfs_set_postnol_freq(struct wlan_objmgr_pdev *pdev, - qdf_freq_t postnol_freq); - -/** - * ucfg_dfs_set_postnol_mode() - Set PostNOL mode. - * @pdev: Pointer to DFS pdev object. - * @postnol_mode: User configured mode to switch to, post NOL, in MHZ. - * - */ -QDF_STATUS ucfg_dfs_set_postnol_mode(struct wlan_objmgr_pdev *pdev, - uint8_t postnol_mode); - -/** - * ucfg_dfs_set_postnol_cfreq2() - Set PostNOL secondary center frequency. - * @pdev: Pointer to DFS pdev object. - * @postnol_freq: User configured secondary center frequency to switch to, - * post NOL, in MHZ. - * - */ -QDF_STATUS ucfg_dfs_set_postnol_cfreq2(struct wlan_objmgr_pdev *pdev, - qdf_freq_t postnol_cfreq2); - -/** - * ucfg_dfs_get_postnol_freq() - Get PostNOL freq. - * @pdev: Pointer to DFS pdev object. - * @postnol_freq: Pointer to user configured freq to switch to, post NOL. - * - */ -QDF_STATUS ucfg_dfs_get_postnol_freq(struct wlan_objmgr_pdev *pdev, - qdf_freq_t *postnol_freq); - -/** - * ucfg_dfs_get_postnol_mode() - Set PostNOL mode. - * @pdev: Pointer to DFS pdev object. - * @postnol_mode: Pointer to user configured mode to switch to, post NOL. - * - */ -QDF_STATUS ucfg_dfs_get_postnol_mode(struct wlan_objmgr_pdev *pdev, - uint8_t *postnol_mode); - -/** - * ucfg_dfs_get_postnol_cfreq2() - Set PostNOL secondary center frequency. - * @pdev: Pointer to DFS pdev object. - * @postnol_freq: Pointer to user configured secondary center frequency to - * switch to post NOL. - * - */ -QDF_STATUS ucfg_dfs_get_postnol_cfreq2(struct wlan_objmgr_pdev *pdev, - qdf_freq_t *postnol_cfreq2); -#else -static inline QDF_STATUS -ucfg_dfs_set_postnol_freq(struct wlan_objmgr_pdev *pdev, - qdf_freq_t postnol_freq) -{ - return QDF_STATUS_SUCCESS; -} - -static inline QDF_STATUS -ucfg_dfs_set_postnol_mode(struct wlan_objmgr_pdev *pdev, - uint8_t postnol_mode) -{ - return QDF_STATUS_SUCCESS; -} - -static inline QDF_STATUS -ucfg_dfs_set_postnol_cfreq2(struct wlan_objmgr_pdev *pdev, - qdf_freq_t postnol_cfreq2) -{ - return QDF_STATUS_SUCCESS; -} - -static inline QDF_STATUS -ucfg_dfs_get_postnol_freq(struct wlan_objmgr_pdev *pdev, - qdf_freq_t *postnol_freq) -{ - *postnol_freq = 0; - return QDF_STATUS_SUCCESS; -} - -static inline QDF_STATUS -ucfg_dfs_get_postnol_mode(struct wlan_objmgr_pdev *pdev, - uint8_t *postnol_mode) -{ - *postnol_mode = CH_WIDTH_INVALID; - return QDF_STATUS_SUCCESS; -} - -static inline QDF_STATUS -ucfg_dfs_get_postnol_cfreq2(struct wlan_objmgr_pdev *pdev, - qdf_freq_t *postnol_cfreq2) -{ - *postnol_cfreq2 = 0; - return QDF_STATUS_SUCCESS; -} -#endif - /** * ucfg_dfs_get_rcac_freq() - Get rcac freq. * @pdev: Pointer to DFS pdev object. 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 186bb31b55..a09161cdab 100644 --- a/umac/dfs/dispatcher/src/wlan_dfs_init_deinit_api.c +++ b/umac/dfs/dispatcher/src/wlan_dfs_init_deinit_api.c @@ -75,7 +75,7 @@ register_dfs_precac_auto_chan_callbacks_freq(struct dfs_to_mlme *mlme_callback) #endif /** - * register_dfs_postnol_csa_callback - Register postNOL channel switch callbacks + * register_dfs_postnol_csa_callback - Register CSA callback * @mlme_callback: Pointer to dfs_to_mlme. */ #ifndef QCA_MCL_DFS_SUPPORT diff --git a/umac/dfs/dispatcher/src/wlan_dfs_ucfg_api.c b/umac/dfs/dispatcher/src/wlan_dfs_ucfg_api.c index ac677699a7..bfddb6d3e2 100644 --- a/umac/dfs/dispatcher/src/wlan_dfs_ucfg_api.c +++ b/umac/dfs/dispatcher/src/wlan_dfs_ucfg_api.c @@ -538,112 +538,3 @@ bool ucfg_dfs_is_agile_rcac_enabled(struct wlan_objmgr_pdev *pdev) qdf_export_symbol(ucfg_dfs_is_agile_rcac_enabled); #endif -#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL -QDF_STATUS ucfg_dfs_set_postnol_freq(struct wlan_objmgr_pdev *pdev, - qdf_freq_t postnol_freq) -{ - struct wlan_dfs *dfs; - - dfs = wlan_pdev_get_dfs_obj(pdev); - if (!dfs) { - dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs"); - return QDF_STATUS_E_FAILURE; - } - - dfs_set_postnol_freq(dfs, postnol_freq); - - return QDF_STATUS_SUCCESS; -} - -qdf_export_symbol(ucfg_dfs_set_postnol_freq); - -QDF_STATUS ucfg_dfs_set_postnol_mode(struct wlan_objmgr_pdev *pdev, - uint8_t postnol_mode) -{ - struct wlan_dfs *dfs; - - dfs = wlan_pdev_get_dfs_obj(pdev); - if (!dfs) { - dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs"); - return QDF_STATUS_E_FAILURE; - } - - dfs_set_postnol_mode(dfs, postnol_mode); - - return QDF_STATUS_SUCCESS; -} - -qdf_export_symbol(ucfg_dfs_set_postnol_mode); - -QDF_STATUS ucfg_dfs_set_postnol_cfreq2(struct wlan_objmgr_pdev *pdev, - qdf_freq_t postnol_cfreq2) -{ - struct wlan_dfs *dfs; - - dfs = wlan_pdev_get_dfs_obj(pdev); - if (!dfs) { - dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs"); - return QDF_STATUS_E_FAILURE; - } - - dfs_set_postnol_cfreq2(dfs, postnol_cfreq2); - - return QDF_STATUS_SUCCESS; -} - -qdf_export_symbol(ucfg_dfs_set_postnol_cfreq2); - -QDF_STATUS ucfg_dfs_get_postnol_freq(struct wlan_objmgr_pdev *pdev, - qdf_freq_t *postnol_freq) -{ - struct wlan_dfs *dfs; - - dfs = wlan_pdev_get_dfs_obj(pdev); - if (!dfs) { - dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs"); - return QDF_STATUS_E_FAILURE; - } - - dfs_get_postnol_freq(dfs, postnol_freq); - - return QDF_STATUS_SUCCESS; -} - -qdf_export_symbol(ucfg_dfs_get_postnol_freq); - -QDF_STATUS ucfg_dfs_get_postnol_mode(struct wlan_objmgr_pdev *pdev, - uint8_t *postnol_mode) -{ - struct wlan_dfs *dfs; - - dfs = wlan_pdev_get_dfs_obj(pdev); - if (!dfs) { - dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs"); - return QDF_STATUS_E_FAILURE; - } - - dfs_get_postnol_mode(dfs, postnol_mode); - - return QDF_STATUS_SUCCESS; -} - -qdf_export_symbol(ucfg_dfs_get_postnol_mode); - -QDF_STATUS ucfg_dfs_get_postnol_cfreq2(struct wlan_objmgr_pdev *pdev, - qdf_freq_t *postnol_cfreq2) -{ - struct wlan_dfs *dfs; - - dfs = wlan_pdev_get_dfs_obj(pdev); - if (!dfs) { - dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "null dfs"); - return QDF_STATUS_E_FAILURE; - } - - dfs_get_postnol_cfreq2(dfs, postnol_cfreq2); - - return QDF_STATUS_SUCCESS; -} - -qdf_export_symbol(ucfg_dfs_get_postnol_cfreq2); -#endif diff --git a/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c b/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c index 838dd47124..ff9282350e 100644 --- a/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c +++ b/umac/global_umac_dispatcher/lmac_if/src/wlan_lmac_if.c @@ -49,6 +49,9 @@ #include #include #include +#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL +#include +#endif #endif #ifdef WLAN_SUPPORT_GREEN_AP