qcacmn: Add API to get current regdomain
Add API to get regdomain pair ID, 2GHz/5GHz regdomain, 2GHz/5GHz ctl values and dfs domain. For Partial-offload, during country code change HOST sends these values to FW. Change-Id: I718813d7559ea1564e0952221a881589c6f3cd0d CRs-Fixed: 2058130
This commit is contained in:

committed by
snandini

parent
af06bcbb63
commit
8216667362
@@ -26,6 +26,7 @@
|
|||||||
#include "reg_db_parser.h"
|
#include "reg_db_parser.h"
|
||||||
#include <qdf_mem.h>
|
#include <qdf_mem.h>
|
||||||
#include "reg_priv.h"
|
#include "reg_priv.h"
|
||||||
|
#include "reg_services.h"
|
||||||
|
|
||||||
QDF_STATUS reg_is_country_code_valid(uint8_t alpha[3])
|
QDF_STATUS reg_is_country_code_valid(uint8_t alpha[3])
|
||||||
{
|
{
|
||||||
@@ -213,7 +214,8 @@ static inline QDF_STATUS reg_get_reginfo_form_country_code_and_regdmn_pair(
|
|||||||
|
|
||||||
reg_info->ctry_code =
|
reg_info->ctry_code =
|
||||||
g_all_countries[country_index].country_code;
|
g_all_countries[country_index].country_code;
|
||||||
reg_info->reg_dmn_pair = 0;
|
reg_info->reg_dmn_pair =
|
||||||
|
g_reg_dmn_pairs[regdmn_pair].reg_dmn_pair_id;
|
||||||
reg_info->dfs_region = regdomains_5g[dmn_id_5g].dfs_region;
|
reg_info->dfs_region = regdomains_5g[dmn_id_5g].dfs_region;
|
||||||
reg_info->phybitmap =
|
reg_info->phybitmap =
|
||||||
g_all_countries[country_index].phymode_bitmap;
|
g_all_countries[country_index].phymode_bitmap;
|
||||||
|
@@ -39,10 +39,6 @@
|
|||||||
#define MAX_PWR_FCC_CHAN_13 2
|
#define MAX_PWR_FCC_CHAN_13 2
|
||||||
#define SCAN_11D_PERIOD_MS 360000
|
#define SCAN_11D_PERIOD_MS 360000
|
||||||
|
|
||||||
#define IS_VALID_PSOC_REG_OBJ(psoc_priv_obj) (NULL != psoc_priv_obj)
|
|
||||||
#define IS_VALID_PDEV_REG_OBJ(pdev_priv_obj) (NULL != pdev_priv_obj)
|
|
||||||
|
|
||||||
|
|
||||||
const struct bonded_channel bonded_chan_40mhz_list[] = {
|
const struct bonded_channel bonded_chan_40mhz_list[] = {
|
||||||
{36, 40},
|
{36, 40},
|
||||||
{44, 48},
|
{44, 48},
|
||||||
@@ -230,13 +226,7 @@ static const struct reg_dmn_op_class_map_t japan_op_class[] = {
|
|||||||
{0, 0, 0, {0} },
|
{0, 0, 0, {0} },
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
struct wlan_regulatory_psoc_priv_obj *reg_get_psoc_obj(
|
||||||
* reg_get_psoc_obj() - Provides the reg component object pointer
|
|
||||||
* @psoc: pointer to psoc object.
|
|
||||||
*
|
|
||||||
* Return: reg component object pointer
|
|
||||||
*/
|
|
||||||
static struct wlan_regulatory_psoc_priv_obj *reg_get_psoc_obj(
|
|
||||||
struct wlan_objmgr_psoc *psoc)
|
struct wlan_objmgr_psoc *psoc)
|
||||||
{
|
{
|
||||||
struct wlan_regulatory_psoc_priv_obj *soc_reg;
|
struct wlan_regulatory_psoc_priv_obj *soc_reg;
|
||||||
@@ -3059,3 +3049,45 @@ QDF_STATUS reg_set_11d_offloaded(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS reg_get_curr_regdomain(struct wlan_objmgr_pdev *pdev,
|
||||||
|
struct cur_regdmn_info *cur_regdmn)
|
||||||
|
{
|
||||||
|
struct wlan_objmgr_psoc *psoc;
|
||||||
|
struct wlan_regulatory_psoc_priv_obj *soc_reg;
|
||||||
|
uint16_t index;
|
||||||
|
int num_reg_dmn;
|
||||||
|
uint8_t phy_id;
|
||||||
|
|
||||||
|
psoc = wlan_pdev_get_psoc(pdev);
|
||||||
|
soc_reg = reg_get_psoc_obj(psoc);
|
||||||
|
if (!IS_VALID_PSOC_REG_OBJ(soc_reg)) {
|
||||||
|
reg_err("soc reg component is NULL");
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
phy_id = wlan_objmgr_pdev_get_pdev_id(pdev);
|
||||||
|
cur_regdmn->regdmn_pair_id =
|
||||||
|
soc_reg->mas_chan_params[phy_id].reg_dmn_pair;
|
||||||
|
|
||||||
|
reg_get_num_reg_dmn_pairs(&num_reg_dmn);
|
||||||
|
for (index = 0; index < num_reg_dmn; index++) {
|
||||||
|
if (g_reg_dmn_pairs[index].reg_dmn_pair_id ==
|
||||||
|
cur_regdmn->regdmn_pair_id)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (index == num_reg_dmn) {
|
||||||
|
reg_err("invalid regdomain");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_regdmn->dmn_id_2g = g_reg_dmn_pairs[index].dmn_id_2g;
|
||||||
|
cur_regdmn->dmn_id_5g = g_reg_dmn_pairs[index].dmn_id_5g;
|
||||||
|
cur_regdmn->ctl_2g = regdomains_2g[cur_regdmn->dmn_id_2g].ctl_val;
|
||||||
|
cur_regdmn->ctl_5g = regdomains_5g[cur_regdmn->dmn_id_5g].ctl_val;
|
||||||
|
cur_regdmn->dfs_region =
|
||||||
|
regdomains_5g[cur_regdmn->dmn_id_5g].dfs_region;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
@@ -67,6 +67,9 @@
|
|||||||
- REG_CH_TO_FREQ(reg_get_chan_enum(curchan)) \
|
- REG_CH_TO_FREQ(reg_get_chan_enum(curchan)) \
|
||||||
> REG_SBS_SEPARATION_THRESHOLD)
|
> REG_SBS_SEPARATION_THRESHOLD)
|
||||||
|
|
||||||
|
#define IS_VALID_PSOC_REG_OBJ(psoc_priv_obj) (NULL != psoc_priv_obj)
|
||||||
|
#define IS_VALID_PDEV_REG_OBJ(pdev_priv_obj) (NULL != pdev_priv_obj)
|
||||||
|
|
||||||
/* EEPROM setting is a country code */
|
/* EEPROM setting is a country code */
|
||||||
#define COUNTRY_ERD_FLAG 0x8000
|
#define COUNTRY_ERD_FLAG 0x8000
|
||||||
|
|
||||||
@@ -334,6 +337,15 @@ QDF_STATUS reg_11d_vdev_delete_update(struct wlan_objmgr_vdev *vdev);
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS reg_11d_vdev_created_update(struct wlan_objmgr_vdev *vdev);
|
QDF_STATUS reg_11d_vdev_created_update(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* reg_get_psoc_obj() - Provides the reg component object pointer
|
||||||
|
* @psoc: pointer to psoc object.
|
||||||
|
*
|
||||||
|
* Return: reg component object pointer
|
||||||
|
*/
|
||||||
|
struct wlan_regulatory_psoc_priv_obj *reg_get_psoc_obj(
|
||||||
|
struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* reg_set_regdb_offloaded() - set/clear regulatory offloaded flag
|
* reg_set_regdb_offloaded() - set/clear regulatory offloaded flag
|
||||||
*
|
*
|
||||||
@@ -351,4 +363,14 @@ QDF_STATUS reg_set_regdb_offloaded(struct wlan_objmgr_psoc *psoc,
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS reg_set_11d_offloaded(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS reg_set_11d_offloaded(struct wlan_objmgr_psoc *psoc,
|
||||||
bool val);
|
bool val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* reg_get_curr_regdomain() - Get current regdomain in use
|
||||||
|
* @pdev: pdev pointer
|
||||||
|
* @cur_regdmn: Current regdomain info
|
||||||
|
*
|
||||||
|
* Return: QDF status
|
||||||
|
*/
|
||||||
|
QDF_STATUS reg_get_curr_regdomain(struct wlan_objmgr_pdev *pdev,
|
||||||
|
struct cur_regdmn_info *cur_regdmn);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -604,4 +604,21 @@ struct cc_regdmn_s {
|
|||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct cur_regdmn_info: Current regulatory info
|
||||||
|
* @regdmn_pair_id: Current regdomain pair ID
|
||||||
|
* @dmn_id_2g: 2GHz regdomain ID
|
||||||
|
* @dmn_id_5g: 5GHz regdomain ID
|
||||||
|
* @ctl_2g: 2GHz CTL value
|
||||||
|
* @ctl_5g: 5GHzCTL value
|
||||||
|
* @dfs_region: dfs region
|
||||||
|
*/
|
||||||
|
struct cur_regdmn_info {
|
||||||
|
uint16_t regdmn_pair_id;
|
||||||
|
uint16_t dmn_id_2g;
|
||||||
|
uint16_t dmn_id_5g;
|
||||||
|
uint8_t ctl_2g;
|
||||||
|
uint8_t ctl_5g;
|
||||||
|
uint8_t dfs_region;
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@@ -416,4 +416,13 @@ QDF_STATUS wlan_reg_get_freq_range(struct wlan_objmgr_pdev *pdev,
|
|||||||
struct wlan_lmac_if_reg_tx_ops *
|
struct wlan_lmac_if_reg_tx_ops *
|
||||||
wlan_reg_get_tx_ops(struct wlan_objmgr_psoc *psoc);
|
wlan_reg_get_tx_ops(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_reg_get_curr_regdomain() - Get current regdomain in use
|
||||||
|
* @pdev: pdev pointer
|
||||||
|
* @cur_regdmn: Current regdomain info
|
||||||
|
*
|
||||||
|
* Return: QDF status
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_reg_get_curr_regdomain(struct wlan_objmgr_pdev *pdev,
|
||||||
|
struct cur_regdmn_info *cur_regdmn);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#include <wlan_reg_services_api.h>
|
#include <wlan_reg_services_api.h>
|
||||||
#include "../../core/src/reg_services.h"
|
#include "../../core/src/reg_services.h"
|
||||||
#include "../../core/src/reg_priv.h"
|
#include "../../core/src/reg_priv.h"
|
||||||
|
#include "../../core/src/reg_db_parser.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_reg_get_channel_list_with_power() - Provide the channel list with power
|
* wlan_reg_get_channel_list_with_power() - Provide the channel list with power
|
||||||
@@ -488,3 +489,9 @@ wlan_reg_get_tx_ops(struct wlan_objmgr_psoc *psoc)
|
|||||||
{
|
{
|
||||||
return reg_get_psoc_tx_ops(psoc);
|
return reg_get_psoc_tx_ops(psoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_reg_get_curr_regdomain(struct wlan_objmgr_pdev *pdev,
|
||||||
|
struct cur_regdmn_info *cur_regdmn)
|
||||||
|
{
|
||||||
|
return reg_get_curr_regdomain(pdev, cur_regdmn);
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user