diff --git a/umac/dfs/core/src/dfs_internal.h b/umac/dfs/core/src/dfs_internal.h index e0c3ba9b09f4..6f4918e47902 100644 --- a/umac/dfs/core/src/dfs_internal.h +++ b/umac/dfs/core/src/dfs_internal.h @@ -29,17 +29,23 @@ #include "dfs.h" /** - * enum DFS_DOMAIN - These defines should match the table from ah_internal.h - * @DFS_UNINIT_DOMAIN: Uninitialized dfs domain. - * @DFS_FCC_DOMAIN: FCC3 dfs domain. - * @DFS_ETSI_DOMAIN: ETSI dfs domain. - * @DFS_MKK4_DOMAIN: Japan dfs domain. + * enum DFS_DOMAIN - DFS domain + * @DFS_UNINIT_DOMAIN: Uninitialized domain + * @DFS_FCC_DOMAIN: FCC domain + * @DFS_ETSI_DOMAIN: ETSI domain + * @DFS_MKK4_DOMAIN: MKK domain + * @DFS_CN_DOMAIN: China domain + * @DFS_KR_DOMAIN: Korea domain + * @DFS_UNDEF_DOMAIN: Undefined domain */ enum DFS_DOMAIN { DFS_UNINIT_DOMAIN = 0, DFS_FCC_DOMAIN = 1, DFS_ETSI_DOMAIN = 2, - DFS_MKK4_DOMAIN = 3 + DFS_MKK4_DOMAIN = 3, + DFS_CN_DOMAIN = 4, + DFS_KR_DOMAIN = 5, + DFS_UNDEF_DOMAIN }; /* CAPABILITY: the device support STA DFS */ diff --git a/umac/dfs/core/src/filtering/ar5212_radar.c b/umac/dfs/core/src/filtering/ar5212_radar.c index cd7166db3a94..7a9226bddb5c 100644 --- a/umac/dfs/core/src/filtering/ar5212_radar.c +++ b/umac/dfs/core/src/filtering/ar5212_radar.c @@ -25,7 +25,7 @@ */ #include "../dfs.h" #include "../dfs_internal.h" -#include "wlan_dfs_lmac_api.h" +#include "wlan_dfs_utils_api.h" /* Default 5212/5312 radar phy parameters. */ #define AR5212_DFS_FIRPWR -41 @@ -167,7 +167,7 @@ void dfs_get_radars_for_ar5212(struct wlan_dfs *dfs) int dfsdomain = DFS_FCC_DOMAIN; qdf_mem_zero(&rinfo, sizeof(rinfo)); - dfsdomain = lmac_get_dfsdomain(dfs->dfs_pdev_obj); + dfsdomain = utils_get_dfsdomain(dfs->dfs_pdev_obj); switch (dfsdomain) { case DFS_FCC_DOMAIN: diff --git a/umac/dfs/core/src/filtering/ar5416_radar.c b/umac/dfs/core/src/filtering/ar5416_radar.c index f34127cf1879..c6128226ed68 100644 --- a/umac/dfs/core/src/filtering/ar5416_radar.c +++ b/umac/dfs/core/src/filtering/ar5416_radar.c @@ -26,7 +26,7 @@ #include "../dfs.h" #include "../dfs_internal.h" -#include "wlan_dfs_lmac_api.h" +#include "wlan_dfs_utils_api.h" /* Default 5413/5416 radar phy parameters. */ #define AR5416_DFS_FIRPWR -33 @@ -110,7 +110,7 @@ void dfs_get_radars_for_ar5416(struct wlan_dfs *dfs) int dfsdomain = DFS_FCC_DOMAIN; qdf_mem_zero(&rinfo, sizeof(rinfo)); - dfsdomain = lmac_get_dfsdomain(dfs->dfs_pdev_obj); + dfsdomain = utils_get_dfsdomain(dfs->dfs_pdev_obj); switch (dfsdomain) { case DFS_FCC_DOMAIN: diff --git a/umac/dfs/core/src/filtering/ar9300_radar.c b/umac/dfs/core/src/filtering/ar9300_radar.c index d1892525b92f..c93208370f52 100644 --- a/umac/dfs/core/src/filtering/ar9300_radar.c +++ b/umac/dfs/core/src/filtering/ar9300_radar.c @@ -25,6 +25,7 @@ #include "../dfs.h" #include "../dfs_internal.h" +#include "wlan_dfs_utils_api.h" #include "wlan_dfs_lmac_api.h" /* @@ -164,7 +165,7 @@ void dfs_get_radars_for_ar9300(struct wlan_dfs *dfs) int dfsdomain = DFS_FCC_DOMAIN; qdf_mem_zero(&rinfo, sizeof(rinfo)); - dfsdomain = lmac_get_dfsdomain(dfs->dfs_pdev_obj); + dfsdomain = utils_get_dfsdomain(dfs->dfs_pdev_obj); switch (dfsdomain) { case DFS_FCC_DOMAIN: @@ -185,12 +186,15 @@ void dfs_get_radars_for_ar9300(struct wlan_dfs *dfs) rinfo.numradars = QDF_ARRAY_SIZE(ar9300_etsi_radars); rinfo.b5pulses = &ar9300_bin5pulses[0]; rinfo.numb5radars = QDF_ARRAY_SIZE(ar9300_bin5pulses); - - if (lmac_is_countryCode_KOREA_ROC3(dfs->dfs_pdev_obj)) { - dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "DFS_ETSI_DOMAIN_9300_Country_Korea"); - rinfo.dfs_radars = &ar9300_korea_radars[0]; - rinfo.numradars = QDF_ARRAY_SIZE(ar9300_korea_radars); - } + break; + case DFS_KR_DOMAIN: + dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, + "DFS_ETSI_DOMAIN_9300_Country_Korea"); + rinfo.dfsdomain = DFS_ETSI_DOMAIN; + rinfo.dfs_radars = &ar9300_korea_radars[0]; + rinfo.numradars = QDF_ARRAY_SIZE(ar9300_korea_radars); + rinfo.b5pulses = &ar9300_bin5pulses[0]; + rinfo.numb5radars = QDF_ARRAY_SIZE(ar9300_bin5pulses); break; case DFS_MKK4_DOMAIN: dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "DFS_MKK4_DOMAIN_9300"); diff --git a/umac/dfs/core/src/filtering/dfs_radar.c b/umac/dfs/core/src/filtering/dfs_radar.c index 406f065110e0..bcbeef7e4840 100644 --- a/umac/dfs/core/src/filtering/dfs_radar.c +++ b/umac/dfs/core/src/filtering/dfs_radar.c @@ -22,8 +22,8 @@ #include "../dfs.h" #include "wlan_dfs_mlme_api.h" +#include "wlan_dfs_utils_api.h" #include "wlan_dfs_lmac_api.h" -#include "wlan_dfs_mlme_api.h" #include "../dfs_internal.h" /** @@ -287,7 +287,7 @@ void ol_if_dfs_configure(struct wlan_dfs *dfs) * Look up the current DFS regulatory domain and decide * which radar pulses to use. */ - dfsdomain = lmac_get_dfsdomain(dfs->dfs_pdev_obj); + dfsdomain = utils_get_dfsdomain(dfs->dfs_pdev_obj); target_type = lmac_get_target_type(dfs->dfs_pdev_obj); psoc = wlan_pdev_get_psoc(dfs->dfs_pdev_obj); @@ -301,29 +301,35 @@ void ol_if_dfs_configure(struct wlan_dfs *dfs) case DFS_FCC_DOMAIN: dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "FCC domain"); rinfo.dfsdomain = DFS_FCC_DOMAIN; + dfs_assign_fcc_pulse_table(&rinfo, target_type, tx_ops); + break; + case DFS_CN_DOMAIN: + dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, + "FCC domain -- Country China(156) override FCC radar pattern" + ); + rinfo.dfsdomain = DFS_FCC_DOMAIN; /* * China uses a radar pattern that is similar to ETSI but it * follows FCC in all other respect like transmit power, CCA * threshold etc. */ - if (lmac_is_countryCode_CHINA(dfs->dfs_pdev_obj)) { - dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, - "FCC domain -- Country China(156) override FCC radar pattern" - ); - rinfo.dfs_radars = dfs_china_radars; - rinfo.numradars = QDF_ARRAY_SIZE(dfs_china_radars); - rinfo.b5pulses = NULL; - rinfo.numb5radars = 0; - } else { - dfs_assign_fcc_pulse_table(&rinfo, target_type, tx_ops); - } - + rinfo.dfs_radars = dfs_china_radars; + rinfo.numradars = QDF_ARRAY_SIZE(dfs_china_radars); + rinfo.b5pulses = NULL; + rinfo.numb5radars = 0; break; case DFS_ETSI_DOMAIN: dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "ETSI domain"); rinfo.dfsdomain = DFS_ETSI_DOMAIN; rinfo.dfs_radars = dfs_etsi_radars; rinfo.numradars = QDF_ARRAY_SIZE(dfs_etsi_radars); + rinfo.b5pulses = NULL; + rinfo.numb5radars = 0; + break; + case DFS_KR_DOMAIN: + dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, + "ETSI domain -- Korea(412)"); + rinfo.dfsdomain = DFS_ETSI_DOMAIN; /* * So far we have treated Korea as part of ETSI and did not @@ -333,13 +339,8 @@ void ol_if_dfs_configure(struct wlan_dfs *dfs) * we will address in the future. However, for now override * ETSI tables for Korea. */ - - if (lmac_is_countryCode_KOREA_ROC3(dfs->dfs_pdev_obj)) { - dfs_info(dfs, WLAN_DEBUG_DFS_ALWAYS, "ETSI domain -- Korea(412)"); - rinfo.dfs_radars = dfs_korea_radars; - rinfo.numradars = QDF_ARRAY_SIZE(dfs_korea_radars); - } - + rinfo.dfs_radars = dfs_korea_radars; + rinfo.numradars = QDF_ARRAY_SIZE(dfs_korea_radars); rinfo.b5pulses = NULL; rinfo.numb5radars = 0; break; diff --git a/umac/dfs/core/src/misc/dfs_cac.c b/umac/dfs/core/src/misc/dfs_cac.c index 78544ce7816b..0c9650bffea5 100644 --- a/umac/dfs/core/src/misc/dfs_cac.c +++ b/umac/dfs/core/src/misc/dfs_cac.c @@ -30,7 +30,7 @@ #include "../dfs_channel.h" #include "../dfs_zero_cac.h" -#include "wlan_dfs_lmac_api.h" +#include "wlan_dfs_utils_api.h" #include "wlan_dfs_mlme_api.h" #include "../dfs_internal.h" @@ -288,7 +288,7 @@ int dfs_random_channel(struct wlan_dfs *dfs, * Similarly if the current channel is 100 or higher then * pick a channel that is 100 or higher. */ - if (lmac_get_dfsdomain(dfs->dfs_pdev_obj) == DFS_MKK4_DOMAIN) { + if (utils_get_dfsdomain(dfs->dfs_pdev_obj) == DFS_MKK4_DOMAIN) { if (IEEE80211_IS_CHAN_11AC_VHT80_80(dfs->dfs_curchan)) { /* No action required for now. */ use_lower_5g_only = 0; @@ -390,7 +390,7 @@ int dfs_random_channel(struct wlan_dfs *dfs, chan_flags) && (freq == ADJACENT_WEATHER_RADAR_CHANNEL) )) && (DFS_ETSI_DOMAIN == - lmac_get_dfsdomain(dfs->dfs_pdev_obj))) + utils_get_dfsdomain(dfs->dfs_pdev_obj))) continue; } #undef ADJACENT_WEATHER_RADAR_CHANNEL diff --git a/umac/dfs/core/src/misc/dfs_zero_cac.c b/umac/dfs/core/src/misc/dfs_zero_cac.c index 2c60314d520a..95996c07799e 100644 --- a/umac/dfs/core/src/misc/dfs_zero_cac.c +++ b/umac/dfs/core/src/misc/dfs_zero_cac.c @@ -92,6 +92,7 @@ #include "../dfs_zero_cac.h" #include "wlan_dfs_lmac_api.h" #include "wlan_dfs_mlme_api.h" +#include "wlan_dfs_utils_api.h" #include "../dfs_internal.h" void dfs_zero_cac_reset(struct wlan_dfs *dfs) @@ -803,7 +804,7 @@ void dfs_find_vht80_chan_for_precac(struct wlan_dfs *dfs, if (dfs->dfs_precac_enable && tx_ops->tgt_is_tgt_type_qca9984(target_type) && - (lmac_get_dfsdomain(dfs->dfs_pdev_obj) == + (utils_get_dfsdomain(dfs->dfs_pdev_obj) == DFS_ETSI_DOMAIN)) { /* * If precac timer is running then do not change the diff --git a/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h b/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h index 2a9c031cc5cc..35d25e7c3ca0 100644 --- a/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h +++ b/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h @@ -75,12 +75,6 @@ uint64_t lmac_get_tsf64(struct wlan_objmgr_pdev *pdev); */ void lmac_dfs_disable(struct wlan_objmgr_pdev *pdev, int no_cac); -/** - * lmac_get_dfsdomain() - Get DFS domain. - * @pdev: Pointer to PDEV structure. - */ -int lmac_get_dfsdomain(struct wlan_objmgr_pdev *pdev); - /** * lmac_dfs_enable() - Enable DFS. * @pdev: Pointer to PDEV structure. @@ -147,12 +141,6 @@ uint16_t lmac_get_ah_devid(struct wlan_objmgr_pdev *pdev); */ uint32_t lmac_get_ext_busy(struct wlan_objmgr_pdev *pdev); -/** - * lmac_is_countryCode_KOREA_ROC3() - Check is county code Korea. - * @pdev: Pointer to PDEV structure. - */ -bool lmac_is_countryCode_KOREA_ROC3(struct wlan_objmgr_pdev *pdev); - /** * lmac_set_use_cac_prssi() - Set use_cac_prssi value. * @pdev: Pointer to PDEV structure. @@ -165,12 +153,6 @@ void lmac_set_use_cac_prssi(struct wlan_objmgr_pdev *pdev); */ uint32_t lmac_get_target_type(struct wlan_objmgr_pdev *pdev); -/** - * lmac_is_countryCode_CHINA() - Check is country code CHINA. - * @pdev: Pointer to PDEV structure. - */ -bool lmac_is_countryCode_CHINA(struct wlan_objmgr_pdev *pdev); - /** * lmac_get_phymode_info() - Get phymode info. * @pdev: Pointer to PDEV structure. diff --git a/umac/dfs/dispatcher/inc/wlan_dfs_utils_api.h b/umac/dfs/dispatcher/inc/wlan_dfs_utils_api.h index 1151d2f0e721..b156463fd72c 100644 --- a/umac/dfs/dispatcher/inc/wlan_dfs_utils_api.h +++ b/umac/dfs/dispatcher/inc/wlan_dfs_utils_api.h @@ -432,8 +432,19 @@ uint32_t utils_dfs_chan_to_freq(uint8_t chan); * @pdev: Pointer to DFS pdev object. * @flags: New channel flags * @flagext: New Extended flags + * + * Return: QDF_STATUS */ QDF_STATUS utils_dfs_update_cur_chan_flags(struct wlan_objmgr_pdev *pdev, uint64_t flags, uint16_t flagext); + +/** + * utils_get_dfsdomain() - Get DFS domain. + * @pdev: Pointer to PDEV structure. + * + * Return: DFS domain. + */ +int utils_get_dfsdomain(struct wlan_objmgr_pdev *pdev); + #endif /* _WLAN_DFS_UTILS_API_H_ */ diff --git a/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c b/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c index d7a2719b169f..c1de48e04bc8 100644 --- a/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c +++ b/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c @@ -85,15 +85,6 @@ void lmac_dfs_disable(struct wlan_objmgr_pdev *pdev, int no_cac) dfs_tx_ops->dfs_disable(pdev, no_cac); } -int lmac_get_dfsdomain(struct wlan_objmgr_pdev *pdev) -{ - enum dfs_reg dfsdomain; - - wlan_reg_get_dfs_region(pdev, &dfsdomain); - - return dfsdomain; -} - void lmac_dfs_enable(struct wlan_objmgr_pdev *pdev, int *is_fastclk, int32_t pe_firpwr, @@ -204,24 +195,6 @@ uint32_t lmac_get_ext_busy(struct wlan_objmgr_pdev *pdev) return ext_chan_busy; } -bool lmac_is_countryCode_KOREA_ROC3(struct wlan_objmgr_pdev *pdev) -{ - struct wlan_objmgr_psoc *psoc; - struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops; - bool ctry_korea = false; - - psoc = wlan_pdev_get_psoc(pdev); - - dfs_tx_ops = &psoc->soc_cb.tx_ops.dfs_tx_ops; - - if (dfs_tx_ops->dfs_is_countryCode_KOREA_ROC3) - dfs_tx_ops->dfs_is_countryCode_KOREA_ROC3(pdev, - &ctry_korea); - - return ctry_korea; - -} - void lmac_set_use_cac_prssi(struct wlan_objmgr_pdev *pdev) { struct wlan_objmgr_psoc *psoc; @@ -251,22 +224,6 @@ uint32_t lmac_get_target_type(struct wlan_objmgr_pdev *pdev) return target_type; } -bool lmac_is_countryCode_CHINA(struct wlan_objmgr_pdev *pdev) -{ - struct wlan_objmgr_psoc *psoc; - struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops; - bool country_china = false; - - psoc = wlan_pdev_get_psoc(pdev); - - dfs_tx_ops = &psoc->soc_cb.tx_ops.dfs_tx_ops; - - if (dfs_tx_ops->dfs_is_countryCode_CHINA) - dfs_tx_ops->dfs_is_countryCode_CHINA(pdev, &country_china); - - return country_china; -} - uint32_t lmac_get_phymode_info(struct wlan_objmgr_pdev *pdev, uint32_t chan_mode) { diff --git a/umac/dfs/dispatcher/src/wlan_dfs_utils_api.c b/umac/dfs/dispatcher/src/wlan_dfs_utils_api.c index 31c600b65e13..53dc362ab7c2 100644 --- a/umac/dfs/dispatcher/src/wlan_dfs_utils_api.c +++ b/umac/dfs/dispatcher/src/wlan_dfs_utils_api.c @@ -761,3 +761,12 @@ uint32_t utils_dfs_chan_to_freq(uint8_t chan) return DFS_5_GHZ_BASE_FREQ + (chan * DFS_CHAN_SPACING_5MHZ); } EXPORT_SYMBOL(utils_dfs_chan_to_freq); + +int utils_get_dfsdomain(struct wlan_objmgr_pdev *pdev) +{ + enum dfs_reg dfsdomain; + + wlan_reg_get_dfs_region(pdev, &dfsdomain); + + return dfsdomain; +} 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 79bd4be7e591..c2077bc4b8be 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 @@ -437,12 +437,9 @@ struct wlan_lmac_if_reg_tx_ops { * @dfs_disable: Disable DFS * @dfs_gettsf64: Get tsf64 value. * @dfs_set_use_cac_prssi: Set use_cac_prssi value. - * @dfs_get_dfsdomain: Get DFS domain. - * @dfs_is_countryCode_CHINA: Check is country code CHINA. * @dfs_get_thresholds: Get thresholds. * @dfs_get_ext_busy: Get ext_busy. * @dfs_get_target_type: Get target type. - * @dfs_is_countryCode_KOREA_ROC3: Check is county code Korea. * @dfs_is_mode_offload: Check the radio for offload. * @dfs_get_ah_devid: Get ah devid. * @dfs_get_phymode_info: Get phymode info. @@ -476,10 +473,6 @@ struct wlan_lmac_if_dfs_tx_ops { QDF_STATUS (*dfs_gettsf64)(struct wlan_objmgr_pdev *pdev, uint64_t *tsf64); QDF_STATUS (*dfs_set_use_cac_prssi)(struct wlan_objmgr_pdev *pdev); - QDF_STATUS (*dfs_get_dfsdomain)(struct wlan_objmgr_pdev *pdev, - int *country_china); - QDF_STATUS (*dfs_is_countryCode_CHINA)(struct wlan_objmgr_pdev *pdev, - bool *status); QDF_STATUS (*dfs_get_thresholds)(struct wlan_objmgr_pdev *pdev, int32_t *pe_firpwr, int32_t *pe_rrssi, @@ -493,9 +486,6 @@ struct wlan_lmac_if_dfs_tx_ops { int *dfs_ext_chan_busy); QDF_STATUS (*dfs_get_target_type)(struct wlan_objmgr_pdev *pdev, uint32_t *target_type); - QDF_STATUS (*dfs_is_countryCode_KOREA_ROC3)( - struct wlan_objmgr_pdev *pdev, - bool *ctry_korea); QDF_STATUS (*dfs_is_mode_offload)(struct wlan_objmgr_pdev *pdev, bool *is_offload); QDF_STATUS (*dfs_get_ah_devid)(struct wlan_objmgr_pdev *pdev,