diff --git a/os_if/linux/scan/src/wlan_cfg80211_scan.c b/os_if/linux/scan/src/wlan_cfg80211_scan.c index 0fb64761fe50..9eb728bffb3e 100644 --- a/os_if/linux/scan/src/wlan_cfg80211_scan.c +++ b/os_if/linux/scan/src/wlan_cfg80211_scan.c @@ -444,7 +444,7 @@ int wlan_cfg80211_sched_scan_start(struct wlan_objmgr_pdev *pdev, for (i = 0; i < request->n_channels; i++) { channel = request->channels[i]->hw_value; - if (wlan_is_dsrc_channel(wlan_chan_to_freq(channel))) + if (wlan_reg_is_dsrc_chan(pdev, channel)) continue; if (ap_or_go_present) { @@ -1317,7 +1317,7 @@ int wlan_cfg80211_scan(struct wlan_objmgr_pdev *pdev, for (i = 0; i < request->n_channels; i++) { channel = request->channels[i]->hw_value; c_freq = wlan_reg_chan_to_freq(pdev, channel); - if (wlan_is_dsrc_channel(c_freq)) + if (wlan_reg_is_dsrc_chan(pdev, channel)) continue; #ifdef WLAN_POLICY_MGR_ENABLE if (ap_or_go_present) { diff --git a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c index 54583ed52b19..ee1ac42303b2 100644 --- a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c +++ b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c @@ -1800,6 +1800,7 @@ QDF_STATUS policy_mgr_get_channel_list(struct wlan_objmgr_psoc *psoc, uint8_t channel_list_5[QDF_MAX_NUM_CHAN] = {0}; uint8_t sbs_channel_list[QDF_MAX_NUM_CHAN] = {0}; bool skip_dfs_channel = false; + bool is_etsi13_srd_chan_allowed_in_mas_mode = true; uint32_t i = 0, j = 0; struct policy_mgr_psoc_priv_obj *pm_ctx; bool sta_sap_scc_on_dfs_chan; @@ -1840,12 +1841,17 @@ QDF_STATUS policy_mgr_get_channel_list(struct wlan_objmgr_psoc *psoc, sta_sap_scc_on_dfs_chan = policy_mgr_is_sta_sap_scc_allowed_on_dfs_chan(psoc); policy_mgr_debug("sta_sap_scc_on_dfs_chan %u", sta_sap_scc_on_dfs_chan); - if ((((mode == PM_SAP_MODE) || (mode == PM_P2P_GO_MODE)) && - (policy_mgr_mode_specific_connection_count( - psoc, PM_STA_MODE, NULL) > 0)) || - !sta_sap_scc_on_dfs_chan) { - policy_mgr_debug("STA present, skip DFS channels from pcl for SAP/Go"); - skip_dfs_channel = true; + if ((mode == PM_SAP_MODE) || (mode == PM_P2P_GO_MODE)) { + if ((policy_mgr_mode_specific_connection_count(psoc, + PM_STA_MODE, + NULL) > 0) || + !sta_sap_scc_on_dfs_chan) { + policy_mgr_debug("skip DFS ch from pcl for SAP/Go"); + skip_dfs_channel = true; + } + is_etsi13_srd_chan_allowed_in_mas_mode = + wlan_reg_is_etsi13_srd_chan_allowed_master_mode(pm_ctx-> + pdev); } /* Let's divide the list in 2.4 & 5 Ghz lists */ @@ -1878,6 +1884,12 @@ QDF_STATUS policy_mgr_get_channel_list(struct wlan_objmgr_psoc *psoc, chan_index++; continue; } + if (!is_etsi13_srd_chan_allowed_in_mas_mode && + wlan_reg_is_etsi13_srd_chan(pm_ctx->pdev, + channel_list[chan_index])) { + chan_index++; + continue; + } channel_list_5[chan_index_5++] = channel_list[chan_index++]; } diff --git a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c index b122d2130cbb..88a58f085785 100644 --- a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c +++ b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c @@ -1391,13 +1391,14 @@ policy_mgr_get_nondfs_preferred_channel(struct wlan_objmgr_psoc *psoc, } static void policy_mgr_remove_dsrc_channels(uint8_t *chan_list, - uint32_t *num_channels) + uint32_t *num_channels, + struct wlan_objmgr_pdev *pdev) { uint32_t num_chan_temp = 0; int i; for (i = 0; i < *num_channels; i++) { - if (!wlan_is_dsrc_channel(wlan_chan_to_freq(chan_list[i]))) { + if (!wlan_reg_is_dsrc_chan(pdev, chan_list[i])) { chan_list[num_chan_temp] = chan_list[i]; num_chan_temp++; } @@ -1434,7 +1435,7 @@ QDF_STATUS policy_mgr_get_valid_chans(struct wlan_objmgr_psoc *psoc, return status; } - policy_mgr_remove_dsrc_channels(chan_list, list_len); + policy_mgr_remove_dsrc_channels(chan_list, list_len, pm_ctx->pdev); return QDF_STATUS_SUCCESS; } diff --git a/umac/cmn_services/utils/inc/wlan_utility.h b/umac/cmn_services/utils/inc/wlan_utility.h index 57ad2ed2404f..eff13eebc81f 100644 --- a/umac/cmn_services/utils/inc/wlan_utility.h +++ b/umac/cmn_services/utils/inc/wlan_utility.h @@ -46,14 +46,6 @@ struct wlan_find_vdev_filter { */ uint32_t wlan_chan_to_freq(uint8_t chan); -/* - * wlan_is_dsrc_channel() - is the channel DSRC - * @center_freq: center freq of the channel - * - * Return: true if DSRC channel or false otherwise - */ -bool wlan_is_dsrc_channel(uint16_t center_freq); - /** * wlan_freq_to_chan() - converts frequency to channel * @freq: frequency diff --git a/umac/cmn_services/utils/src/wlan_utility.c b/umac/cmn_services/utils/src/wlan_utility.c index 2d9a5659ec2b..4552552ac4e2 100644 --- a/umac/cmn_services/utils/src/wlan_utility.c +++ b/umac/cmn_services/utils/src/wlan_utility.c @@ -44,15 +44,6 @@ uint32_t wlan_chan_to_freq(uint8_t chan) return WLAN_5_GHZ_BASE_FREQ + chan * WLAN_CHAN_SPACING_5MHZ; } -bool wlan_is_dsrc_channel(uint16_t center_freq) -{ - if (center_freq >= 5852 && - center_freq <= 5920) - return true; - - return false; -} - uint8_t wlan_freq_to_chan(uint32_t freq) { uint8_t chan; diff --git a/umac/regulatory/core/src/reg_db.c b/umac/regulatory/core/src/reg_db.c index f4c20137badf..c0dd4debabb4 100644 --- a/umac/regulatory/core/src/reg_db.c +++ b/umac/regulatory/core/src/reg_db.c @@ -1148,3 +1148,8 @@ QDF_STATUS reg_get_default_country(uint16_t *default_country) return QDF_STATUS_SUCCESS; } + +bool reg_etsi13_regdmn(uint8_t reg_dmn) +{ + return reg_dmn == ETSI13; +} diff --git a/umac/regulatory/core/src/reg_db.h b/umac/regulatory/core/src/reg_db.h index da5c65480ed5..7e286e263d8f 100644 --- a/umac/regulatory/core/src/reg_db.h +++ b/umac/regulatory/core/src/reg_db.h @@ -156,4 +156,11 @@ QDF_STATUS reg_get_num_reg_dmn_pairs(int *num_reg_dmn); QDF_STATUS reg_get_default_country(uint16_t *default_country); +/** + * reg_etsi13_regdmn () - Checks if the reg domain is ETSI13 or not + * @reg_dmn: reg domain + * + * Return: true or false + */ +bool reg_etsi13_regdmn(uint8_t reg_dmn); #endif diff --git a/umac/regulatory/core/src/reg_priv.h b/umac/regulatory/core/src/reg_priv.h index 1b2d4bd1a18f..bffd6dd5d439 100644 --- a/umac/regulatory/core/src/reg_priv.h +++ b/umac/regulatory/core/src/reg_priv.h @@ -80,6 +80,7 @@ struct wlan_regulatory_psoc_priv_obj { struct wlan_psoc_host_hal_reg_capabilities_ext reg_cap[PSOC_MAX_PHY_REG_CAP]; bool force_ssc_disable_indoor_channel; + bool enable_srd_chan_in_master_mode; qdf_spinlock_t cbk_list_lock; }; diff --git a/umac/regulatory/core/src/reg_services.c b/umac/regulatory/core/src/reg_services.c index 4859adcdda58..de030ec37ea8 100644 --- a/umac/regulatory/core/src/reg_services.c +++ b/umac/regulatory/core/src/reg_services.c @@ -121,8 +121,10 @@ static const struct chan_map channel_map_old[NUM_CHANNELS] = { [CHAN_ENUM_157] = {5785, 157, 2, 160}, [CHAN_ENUM_161] = {5805, 161, 2, 160}, [CHAN_ENUM_165] = {5825, 165, 2, 160}, +#ifndef WLAN_FEATURE_DSRC [CHAN_ENUM_169] = {5845, 169, 2, 20}, - + [CHAN_ENUM_173] = {5865, 173, 2, 20}, +#else [CHAN_ENUM_170] = {5852, 170, 2, 20}, [CHAN_ENUM_171] = {5855, 171, 2, 20}, [CHAN_ENUM_172] = {5860, 172, 2, 20}, @@ -138,6 +140,7 @@ static const struct chan_map channel_map_old[NUM_CHANNELS] = { [CHAN_ENUM_182] = {5910, 182, 2, 20}, [CHAN_ENUM_183] = {5915, 183, 2, 20}, [CHAN_ENUM_184] = {5920, 184, 2, 20}, +#endif }; #else @@ -1707,6 +1710,91 @@ bool reg_is_passive_or_disable_ch(struct wlan_objmgr_pdev *pdev, (ch_state == CHANNEL_STATE_DISABLE); } +#ifdef WLAN_FEATURE_DSRC +bool reg_is_dsrc_chan(struct wlan_objmgr_pdev *pdev, uint32_t chan) +{ + struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj; + uint32_t freq = 0; + + pdev_priv_obj = reg_get_pdev_obj(pdev); + + if (!IS_VALID_PDEV_REG_OBJ(pdev_priv_obj)) { + reg_err("reg pdev priv obj is NULL"); + return false; + } + + if (!REG_IS_5GHZ_CH(chan)) + return false; + + freq = reg_chan_to_freq(pdev, chan); + + if (!(freq >= REG_DSRC_START_FREQ && freq <= REG_DSRC_END_FREQ)) + return false; + + return true; +} + +#else + +bool reg_is_etsi13_regdmn(struct wlan_objmgr_pdev *pdev) +{ + struct cur_regdmn_info cur_reg_dmn; + QDF_STATUS status; + + status = reg_get_curr_regdomain(pdev, &cur_reg_dmn); + if (QDF_STATUS_SUCCESS != status) { + reg_err("Failed to get reg domain"); + return false; + } + + return reg_etsi13_regdmn(cur_reg_dmn.dmn_id_5g); +} + +bool reg_is_etsi13_srd_chan(struct wlan_objmgr_pdev *pdev, uint32_t chan) +{ + struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj; + uint32_t freq = 0; + + pdev_priv_obj = reg_get_pdev_obj(pdev); + + if (!IS_VALID_PDEV_REG_OBJ(pdev_priv_obj)) { + reg_err("reg pdev priv obj is NULL"); + return false; + } + + if (!REG_IS_5GHZ_CH(chan)) + return false; + + freq = reg_chan_to_freq(pdev, chan); + + if (!(freq >= REG_ETSI13_SRD_START_FREQ && + freq <= REG_ETSI13_SRD_END_FREQ)) + return false; + + return reg_is_etsi13_regdmn(pdev); +} + +bool reg_is_etsi13_srd_chan_allowed_master_mode(struct wlan_objmgr_pdev *pdev) +{ + struct wlan_objmgr_psoc *psoc; + struct wlan_regulatory_psoc_priv_obj *psoc_priv_obj; + + if (!pdev) { + reg_alert("pdev is NULL"); + return true; + } + psoc = wlan_pdev_get_psoc(pdev); + + psoc_priv_obj = reg_get_psoc_obj(psoc); + if (!IS_VALID_PSOC_REG_OBJ(psoc_priv_obj)) { + reg_alert("psoc reg component is NULL"); + return true; + } + + return psoc_priv_obj->enable_srd_chan_in_master_mode && + reg_is_etsi13_regdmn(pdev); +} +#endif uint32_t reg_freq_to_chan(struct wlan_objmgr_pdev *pdev, uint32_t freq) @@ -3086,6 +3174,7 @@ QDF_STATUS wlan_regulatory_psoc_obj_created_notification( soc_reg_obj->master_vdev_cnt = 0; soc_reg_obj->vdev_cnt_11d = 0; soc_reg_obj->restart_beaconing = CH_AVOID_RULE_RESTART; + soc_reg_obj->enable_srd_chan_in_master_mode = false; for (i = 0; i < MAX_STA_VDEV_CNT; i++) soc_reg_obj->vdev_ids_11d[i] = INVALID_VDEV_ID; @@ -3722,6 +3811,8 @@ QDF_STATUS reg_set_config_vars(struct wlan_objmgr_psoc *psoc, config_vars.force_ssc_disable_indoor_channel; psoc_priv_obj->band_capability = config_vars.band_capability; psoc_priv_obj->restart_beaconing = config_vars.restart_beaconing; + psoc_priv_obj->enable_srd_chan_in_master_mode = + config_vars.enable_srd_chan_in_master_mode; status = wlan_objmgr_psoc_try_get_ref(psoc, WLAN_REGULATORY_SB_ID); if (QDF_IS_STATUS_ERROR(status)) { diff --git a/umac/regulatory/core/src/reg_services.h b/umac/regulatory/core/src/reg_services.h index d73f50cb957b..f843eb61c920 100644 --- a/umac/regulatory/core/src/reg_services.h +++ b/umac/regulatory/core/src/reg_services.h @@ -40,8 +40,14 @@ #define REG_MAX_24GHZ_CH_NUM channel_map[MAX_24GHZ_CHANNEL].chan_num #define REG_MIN_5GHZ_CH_NUM channel_map[MIN_5GHZ_CHANNEL].chan_num #define REG_MAX_5GHZ_CH_NUM channel_map[MAX_5GHZ_CHANNEL].chan_num -#define REG_MIN_11P_CH_NUM channel_map[MIN_11P_CHANNEL].chan_num -#define REG_MAX_11P_CH_NUM channel_map[MAX_11P_CHANNEL].chan_num + +#ifdef WLAN_FEATURE_DSRC +#define REG_DSRC_START_FREQ channel_map[MIN_DSRC_CHANNEL].center_freq +#define REG_DSRC_END_FREQ channel_map[MAX_DSRC_CHANNEL].center_freq +#endif + +#define REG_ETSI13_SRD_START_FREQ 5745 +#define REG_ETSI13_SRD_END_FREQ 5865 #define REG_IS_24GHZ_CH(chan_num) \ ((chan_num >= REG_MIN_24GHZ_CH_NUM) && \ @@ -67,10 +73,6 @@ ((chan_num >= REG_MIN_5GHZ_CH_NUM) && \ (chan_num <= REG_MAX_5GHZ_CH_NUM)) -#define REG_IS_11P_CH(chan_num) \ - ((chan_num >= REG_MIN_11P_CH_NUM) && \ - (chan_num <= REG_MAX_11P_CH_NUM)) - #define REG_IS_5GHZ_FREQ(freq) \ ((freq >= channel_map[MIN_5GHZ_CHANNEL].center_freq) && \ (freq <= channel_map[MAX_5GHZ_CHANNEL].center_freq)) @@ -308,6 +310,67 @@ void reg_update_nol_ch(struct wlan_objmgr_pdev *pdev, uint8_t *ch_list, */ bool reg_is_dfs_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan); +#ifdef WLAN_FEATURE_DSRC +/** + * reg_is_dsrc_chan () - Checks the channel for DSRC or not + * @chan: channel + * @pdev: pdev ptr + * + * Return: true or false + */ +bool reg_is_dsrc_chan(struct wlan_objmgr_pdev *pdev, uint32_t chan); + +static inline bool reg_is_etsi13_srd_chan(struct wlan_objmgr_pdev *pdev, + uint32_t chan) +{ + return false; +} + +static inline bool reg_is_etsi13_regdmn(struct wlan_objmgr_pdev *pdev) +{ + return false; +} + +static inline bool +reg_is_etsi13_srd_chan_allowed_master_mode(struct wlan_objmgr_pdev *pdev) +{ + return true; +} +#else +/** + * reg_is_etsi13_regdmn () - Checks if the current reg domain is ETSI13 or not + * @pdev: pdev ptr + * + * Return: true or false + */ +bool reg_is_etsi13_regdmn(struct wlan_objmgr_pdev *pdev); + +/** + * reg_is_etsi13_srd_chan () - Checks the channel for ETSI13 srd ch or not + * @chan: channel + * @pdev: pdev ptr + * + * Return: true or false + */ +bool reg_is_etsi13_srd_chan(struct wlan_objmgr_pdev *pdev, uint32_t chan); + +/** + * reg_is_etsi13_srd_chan_allowed_master_mode() - Checks if regdmn is ETSI13 + * and SRD channels are allowed in master mode or not. + * + * @pdev: pdev ptr + * + * Return: true or false + */ +bool reg_is_etsi13_srd_chan_allowed_master_mode(struct wlan_objmgr_pdev *pdev); + +static inline bool reg_is_dsrc_chan(struct wlan_objmgr_pdev *pdev, + uint32_t chan) +{ + return false; +} +#endif + bool reg_is_passive_or_disable_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan); diff --git a/umac/regulatory/dispatcher/inc/reg_services_public_struct.h b/umac/regulatory/dispatcher/inc/reg_services_public_struct.h index 1c1f864476aa..f13ce62a164f 100644 --- a/umac/regulatory/dispatcher/inc/reg_services_public_struct.h +++ b/umac/regulatory/dispatcher/inc/reg_services_public_struct.h @@ -146,8 +146,10 @@ enum channel_enum { CHAN_ENUM_157, CHAN_ENUM_161, CHAN_ENUM_165, +#ifndef WLAN_FEATURE_DSRC CHAN_ENUM_169, - + CHAN_ENUM_173, +#else CHAN_ENUM_170, CHAN_ENUM_171, CHAN_ENUM_172, @@ -163,6 +165,7 @@ enum channel_enum { CHAN_ENUM_182, CHAN_ENUM_183, CHAN_ENUM_184, +#endif NUM_CHANNELS, @@ -175,12 +178,18 @@ enum channel_enum { NUM_49GHZ_CHANNELS = MAX_49GHZ_CHANNEL - MIN_49GHZ_CHANNEL + 1, MIN_5GHZ_CHANNEL = CHAN_ENUM_36, +#ifndef WLAN_FEATURE_DSRC + MAX_5GHZ_CHANNEL = CHAN_ENUM_173, +#else MAX_5GHZ_CHANNEL = CHAN_ENUM_184, +#endif NUM_5GHZ_CHANNELS = (MAX_5GHZ_CHANNEL - MIN_5GHZ_CHANNEL + 1), - MIN_11P_CHANNEL = CHAN_ENUM_170, - MAX_11P_CHANNEL = CHAN_ENUM_184, - NUM_11P_CHANNELS = (MAX_11P_CHANNEL - MIN_11P_CHANNEL + 1), +#ifdef WLAN_FEATURE_DSRC + MIN_DSRC_CHANNEL = CHAN_ENUM_170, + MAX_DSRC_CHANNEL = CHAN_ENUM_184, + NUM_DSRC_CHANNELS = (MAX_DSRC_CHANNEL - MIN_DSRC_CHANNEL + 1), +#endif INVALID_CHANNEL = 0xBAD, }; @@ -402,9 +411,9 @@ enum channel_enum { MAX_5GHZ_CHANNEL = CHAN_ENUM_5920, NUM_5GHZ_CHANNELS = (MAX_5GHZ_CHANNEL - MIN_5GHZ_CHANNEL + 1), - MIN_11P_CHANNEL = CHAN_ENUM_5850, - MAX_11P_CHANNEL = CHAN_ENUM_5920, - NUM_11P_CHANNELS = (MAX_11P_CHANNEL - MIN_11P_CHANNEL + 1), + MIN_DSRC_CHANNEL = CHAN_ENUM_5850, + MAX_DSRC_CHANNEL = CHAN_ENUM_5920, + NUM_DSRC_CHANNELS = (MAX_DSRC_CHANNEL - MIN_DSRC_CHANNEL + 1), INVALID_CHANNEL = 0xBAD, }; @@ -789,6 +798,7 @@ enum restart_beaconing_on_ch_avoid_rule { * @force_ssc_disable_indoor_channel: Disable indoor channel on sap start * @restart_beaconing: control the beaconing entity to move * away from active LTE channels + * @enable_srd_chan_in_master_mode: SRD channel support in master mode */ struct reg_config_vars { uint32_t enable_11d_support; @@ -799,6 +809,7 @@ struct reg_config_vars { uint32_t indoor_chan_enabled; uint32_t force_ssc_disable_indoor_channel; enum restart_beaconing_on_ch_avoid_rule restart_beaconing; + bool enable_srd_chan_in_master_mode; }; /** diff --git a/umac/regulatory/dispatcher/inc/wlan_reg_services_api.h b/umac/regulatory/dispatcher/inc/wlan_reg_services_api.h index 72b16b3ea270..a11c4efa16f8 100644 --- a/umac/regulatory/dispatcher/inc/wlan_reg_services_api.h +++ b/umac/regulatory/dispatcher/inc/wlan_reg_services_api.h @@ -34,12 +34,9 @@ #define WLAN_REG_MAX_24GHZ_CH_NUM REG_MAX_24GHZ_CH_NUM #define WLAN_REG_MIN_5GHZ_CH_NUM REG_MIN_5GHZ_CH_NUM #define WLAN_REG_MAX_5GHZ_CH_NUM REG_MAX_5GHZ_CH_NUM -#define WLAN_REG_MIN_11P_CH_NUM REG_MIN_11P_CH_NUM -#define WLAN_REG_MAX_11P_CH_NUM REG_MAX_11P_CH_NUM #define WLAN_REG_IS_24GHZ_CH(chan) REG_IS_24GHZ_CH(chan) #define WLAN_REG_IS_5GHZ_CH(chan) REG_IS_5GHZ_CH(chan) -#define WLAN_REG_IS_11P_CH(chan) REG_IS_11P_CH(chan) #define WLAN_REG_IS_24GHZ_CH_FREQ(freq) REG_IS_24GHZ_CH_FREQ(freq) @@ -336,6 +333,44 @@ void wlan_reg_update_nol_ch(struct wlan_objmgr_pdev *pdev, */ bool wlan_reg_is_dfs_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan); +/** + * wlan_reg_is_dsrc_chan () - Checks if the channel is dsrc channel or not + * @pdev: pdev ptr + * @chan_num: channel + * + * Return: true or false + */ +bool wlan_reg_is_dsrc_chan(struct wlan_objmgr_pdev *pdev, uint8_t chan_num); + +/** + * wlan_reg_is_etsi13_srd_chan () - Checks if the ch is ETSI13 srd ch or not + * @pdev: pdev ptr + * @chan_num: channel + * + * Return: true or false + */ +bool wlan_reg_is_etsi13_srd_chan(struct wlan_objmgr_pdev *pdev, + uint8_t chan_num); + +/** + * wlan_reg_is_etsi13_regdmn() - Checks if current reg domain is ETSI13 or not + * @pdev: pdev ptr + * + * Return: true or false + */ +bool wlan_reg_is_etsi13_regdmn(struct wlan_objmgr_pdev *pdev); + +/** + * wlan_reg_is_etsi13_srd_chan_allowed_master_mode() - Checks if regdmn is + * ETSI13 and SRD channels are allowed in master mode or not. + * + * @pdev: pdev ptr + * + * Return: true or false + */ +bool wlan_reg_is_etsi13_srd_chan_allowed_master_mode(struct wlan_objmgr_pdev + *pdev); + /** * wlan_reg_is_passive_or_disable_ch () - Checks chan state for passive * and disabled diff --git a/umac/regulatory/dispatcher/src/wlan_reg_services_api.c b/umac/regulatory/dispatcher/src/wlan_reg_services_api.c index 419096e7d190..3345061bc145 100644 --- a/umac/regulatory/dispatcher/src/wlan_reg_services_api.c +++ b/umac/regulatory/dispatcher/src/wlan_reg_services_api.c @@ -508,6 +508,28 @@ bool wlan_reg_11d_enabled_on_host(struct wlan_objmgr_psoc *psoc) return reg_11d_enabled_on_host(psoc); } +bool wlan_reg_is_dsrc_chan(struct wlan_objmgr_pdev *pdev, uint8_t chan_num) +{ + return reg_is_dsrc_chan(pdev, chan_num); +} + +bool wlan_reg_is_etsi13_srd_chan(struct wlan_objmgr_pdev *pdev, + uint8_t chan_num) +{ + return reg_is_etsi13_srd_chan(pdev, chan_num); +} + +bool wlan_reg_is_etsi13_regdmn(struct wlan_objmgr_pdev *pdev) +{ + return reg_is_etsi13_regdmn(pdev); +} + +bool wlan_reg_is_etsi13_srd_chan_allowed_master_mode(struct wlan_objmgr_pdev + *pdev) +{ + return reg_is_etsi13_srd_chan_allowed_master_mode(pdev); +} + QDF_STATUS wlan_reg_get_chip_mode(struct wlan_objmgr_pdev *pdev, uint32_t *chip_mode) { diff --git a/umac/tdls/core/src/wlan_tdls_peer.c b/umac/tdls/core/src/wlan_tdls_peer.c index 82ecb43d326c..3f8a132e0e87 100644 --- a/umac/tdls/core/src/wlan_tdls_peer.c +++ b/umac/tdls/core/src/wlan_tdls_peer.c @@ -515,7 +515,7 @@ void tdls_extract_peer_state_param(struct tdls_peer_update_state *peer_param, if (CHANNEL_STATE_INVALID != ch_state && CHANNEL_STATE_DFS != ch_state && - !wlan_is_dsrc_channel(wlan_is_dsrc_channel(chan_id))) { + !wlan_reg_is_dsrc_chan(pdev, chan_id)) { peer_param->peer_cap.peer_chan[num].chan_id = chan_id; peer_param->peer_cap.peer_chan[num].pwr = wlan_reg_get_channel_reg_power(pdev, chan_id);