qcacld-3.0: Replace channel with frequency in wlan_mlme_reg

Replace channel ID with frequency in struct wlan_mlme_reg.

Change-Id: I71fcec5014e451cf912f187c79a1939d2d7e54ad
CRs-Fixed: 2518897
This commit is contained in:
Tushnim Bhattacharyya 2019-08-30 13:50:15 -07:00 • committed by nshrivas
commit d1d0db9db2
11 changed files with 90 additions and 45 deletions

View file

@ -2270,6 +2270,9 @@ static void mlme_init_reg_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_reg *reg)
{
qdf_size_t valid_channel_list_num = 0;
uint8_t channel_list[CFG_VALID_CHANNEL_LIST_LEN];
uint8_t i;
struct wlan_objmgr_pdev *pdev = NULL;
reg->self_gen_frm_pwr = cfg_get(psoc, CFG_SELF_GEN_FRM_PWR);
reg->etsi13_srd_chan_in_master_mode =
@ -2281,10 +2284,23 @@ static void mlme_init_reg_cfg(struct wlan_objmgr_psoc *psoc,
CFG_ENABLE_11D_IN_WORLD_MODE);
reg->scan_11d_interval = cfg_get(psoc, CFG_SCAN_11D_INTERVAL);
qdf_uint8_array_parse(cfg_default(CFG_VALID_CHANNEL_LIST),
reg->valid_channel_list,
channel_list,
CFG_VALID_CHANNEL_LIST_LEN,
&valid_channel_list_num);
reg->valid_channel_list_num = (uint8_t)valid_channel_list_num;
pdev = wlan_objmgr_get_pdev_by_id(psoc, 0, WLAN_MLME_NB_ID);
if (!pdev) {
mlme_legacy_err("null pdev");
return;
}
for (i = 0; i < valid_channel_list_num; i++)
reg->valid_channel_freq_list[i] =
wlan_reg_chan_to_freq(pdev, channel_list[i]);
wlan_objmgr_pdev_release_ref(pdev, WLAN_MLME_NB_ID);
qdf_str_lcopy(reg->country_code, cfg_default(CFG_COUNTRY_CODE),
sizeof(reg->country_code));
reg->country_code_len = (uint8_t)sizeof(reg->country_code);

View file

@ -2040,7 +2040,7 @@ struct wlan_mlme_mwc {
* @restart_beaconing_on_ch_avoid: restart beaconing on ch avoid
* @indoor_channel_support: indoor channel support
* @scan_11d_interval: scan 11d interval
* @valid_channel_list: array for valid channel list
* @valid_channel_freq_list: array for valid channel list
* @valid_channel_list_num: valid channel list number
* @country_code: country code
* @country_code_len: country code length
@ -2056,7 +2056,7 @@ struct wlan_mlme_reg {
restart_beaconing_on_ch_avoid;
bool indoor_channel_support;
uint32_t scan_11d_interval;
uint8_t valid_channel_list[CFG_VALID_CHANNEL_LIST_LEN];
uint32_t valid_channel_freq_list[CFG_VALID_CHANNEL_LIST_LEN];
uint8_t valid_channel_list_num;
uint8_t country_code[CFG_COUNTRY_CODE_LEN + 1];
uint8_t country_code_len;

View file

@ -3732,7 +3732,8 @@ ucfg_mlme_get_scan_11d_interval(struct wlan_objmgr_psoc *psoc,
uint32_t *value);
/**
* ucfg_mlme_get_valid_channel_list() - get valid channel list
* ucfg_mlme_get_valid_channel_freq_list() - get valid channel
* list
* @psoc: pointer to psoc object
* @channel_list: pointer to return channel list
* @channel_list_num: pointer to return channel list number
@ -3740,9 +3741,9 @@ ucfg_mlme_get_scan_11d_interval(struct wlan_objmgr_psoc *psoc,
* Return: QDF Status
*/
QDF_STATUS
ucfg_mlme_get_valid_channel_list(struct wlan_objmgr_psoc *psoc,
uint8_t *channel_list,
uint32_t *channel_list_num);
ucfg_mlme_get_valid_channel_freq_list(struct wlan_objmgr_psoc *psoc,
uint32_t *channel_list,
uint32_t *channel_list_num);
#ifdef FEATURE_LFR_SUBNET_DETECTION
/**

View file

@ -1500,27 +1500,43 @@ ucfg_mlme_get_scan_11d_interval(struct wlan_objmgr_psoc *psoc,
}
QDF_STATUS
ucfg_mlme_get_valid_channel_list(struct wlan_objmgr_psoc *psoc,
uint8_t *channel_list,
uint32_t *channel_list_num)
ucfg_mlme_get_valid_channel_freq_list(struct wlan_objmgr_psoc *psoc,
uint32_t *channel_list,
uint32_t *channel_list_num)
{
struct wlan_mlme_psoc_obj *mlme_obj;
qdf_size_t valid_channel_list_num = 0;
uint8_t tmp_channel_list[CFG_VALID_CHANNEL_LIST_LEN];
uint8_t i;
struct wlan_objmgr_pdev *pdev = NULL;
mlme_obj = mlme_get_psoc_obj(psoc);
if (!mlme_obj) {
qdf_uint8_array_parse(cfg_default(CFG_VALID_CHANNEL_LIST),
channel_list,
tmp_channel_list,
CFG_VALID_CHANNEL_LIST_LEN,
&valid_channel_list_num);
*channel_list_num = (uint8_t)valid_channel_list_num;
mlme_legacy_err("Failed to get MLME Obj");
pdev = wlan_objmgr_get_pdev_by_id(psoc, 0, WLAN_MLME_NB_ID);
if (!pdev) {
mlme_legacy_err("null pdev");
return QDF_STATUS_E_INVAL;
}
for (i = 0; i < valid_channel_list_num; i++) {
channel_list[i] =
wlan_reg_chan_to_freq(pdev, tmp_channel_list[i]);
}
wlan_objmgr_pdev_release_ref(pdev, WLAN_MLME_NB_ID);
return QDF_STATUS_E_INVAL;
}
*channel_list_num = (uint32_t)mlme_obj->cfg.reg.valid_channel_list_num;
qdf_mem_copy(channel_list, mlme_obj->cfg.reg.valid_channel_list,
*channel_list_num);
for (i = 0; i < *channel_list_num; i++)
channel_list[i] = mlme_obj->cfg.reg.valid_channel_freq_list[i];
return QDF_STATUS_SUCCESS;
}

View file

@ -14695,7 +14695,7 @@ QDF_STATUS wlan_hdd_validate_operation_channel(struct hdd_adapter *adapter,
int channel)
{
uint32_t num_ch = 0;
u8 valid_ch[CFG_VALID_CHANNEL_LIST_LEN];
uint32_t valid_ch[CFG_VALID_CHANNEL_LIST_LEN];
u32 indx = 0;
bool is_valid_channel = false;
uint8_t count;
@ -14721,10 +14721,11 @@ QDF_STATUS wlan_hdd_validate_operation_channel(struct hdd_adapter *adapter,
return QDF_STATUS_E_FAILURE;
}
} else {
ucfg_mlme_get_valid_channel_list(hdd_ctx->psoc, valid_ch,
&num_ch);
ucfg_mlme_get_valid_channel_freq_list(hdd_ctx->psoc, valid_ch,
&num_ch);
for (indx = 0; indx < num_ch; indx++) {
if (channel == valid_ch[indx])
if (channel ==
wlan_reg_freq_to_chan(hdd_ctx->pdev, valid_ch[indx]))
break;
}
@ -19685,7 +19686,7 @@ static int __wlan_hdd_cfg80211_join_ibss(struct wiphy *wiphy,
if (NULL !=
params->chandef.chan) {
uint32_t numChans = CFG_VALID_CHANNEL_LIST_LEN;
uint8_t validChan[CFG_VALID_CHANNEL_LIST_LEN];
uint32_t validChan[CFG_VALID_CHANNEL_LIST_LEN];
int indx;
/* Get channel number */
@ -19694,11 +19695,12 @@ static int __wlan_hdd_cfg80211_join_ibss(struct wiphy *wiphy,
chandef.
chan->
center_freq);
ucfg_mlme_get_valid_channel_list(hdd_ctx->psoc, validChan,
&numChans);
ucfg_mlme_get_valid_channel_freq_list(hdd_ctx->psoc, validChan,
&numChans);
for (indx = 0; indx < numChans; indx++) {
if (channelNum == validChan[indx])
if (channelNum ==
wlan_reg_freq_to_chan(hdd_ctx->pdev, validChan[indx]))
break;
}
if (indx >= numChans) {

View file

@ -205,8 +205,11 @@ static void populate_dot11f_tdls_offchannel_params(
uint8_t nss_5g;
numChans = mac->mlme_cfg->reg.valid_channel_list_num;
qdf_mem_copy(validChan, mac->mlme_cfg->reg.valid_channel_list,
mac->mlme_cfg->reg.valid_channel_list_num);
for (i = 0; i < mac->mlme_cfg->reg.valid_channel_list_num; i++) {
validChan[i] = wlan_reg_freq_to_chan(mac->pdev,
mac->mlme_cfg->reg.valid_channel_freq_list[i]);
}
if (wlan_reg_is_5ghz_ch_freq(pe_session->curr_op_freq))
band = BAND_5G;

View file

@ -600,6 +600,7 @@ QDF_STATUS lim_send_ht40_obss_scanind(struct mac_context *mac_ctx,
struct scheduler_msg msg = {0};
uint8_t chan_list[CFG_VALID_CHANNEL_LIST_LEN];
uint8_t channel24gnum, count;
uint8_t i;
ht40_obss_scanind = qdf_mem_malloc(sizeof(struct obss_ht40_scanind));
if (!ht40_obss_scanind)
@ -631,8 +632,11 @@ QDF_STATUS lim_send_ht40_obss_scanind(struct mac_context *mac_ctx,
mac_ctx->pdev, session->curr_op_freq),
session->ch_width);
channelnum = mac_ctx->mlme_cfg->reg.valid_channel_list_num;
qdf_mem_copy(chan_list, mac_ctx->mlme_cfg->reg.valid_channel_list,
channelnum);
for (i = 0; i < channelnum; i++) {
chan_list[i] = wlan_reg_freq_to_chan(mac_ctx->pdev,
mac_ctx->mlme_cfg->reg.valid_channel_freq_list[i]);
}
/* Extract 24G channel list */
channel24gnum = 0;
for (count = 0; count < channelnum &&

View file

@ -4427,8 +4427,6 @@ void lim_add_channel_status_info(struct mac_context *p_mac,
bool lim_is_channel_valid_for_channel_switch(struct mac_context *mac, uint8_t channel)
{
uint8_t index;
uint32_t validChannelListLen = CFG_VALID_CHANNEL_LIST_LEN;
tSirMacChanNum validChannelList[CFG_VALID_CHANNEL_LIST_LEN];
bool ok = false;
if (policy_mgr_is_chan_ok_for_dnbs(mac->psoc, channel, &ok)) {
@ -4441,11 +4439,9 @@ bool lim_is_channel_valid_for_channel_switch(struct mac_context *mac, uint8_t ch
return false;
}
validChannelListLen = mac->mlme_cfg->reg.valid_channel_list_num;
qdf_mem_copy(validChannelList, mac->mlme_cfg->reg.valid_channel_list,
mac->mlme_cfg->reg.valid_channel_list_num);
for (index = 0; index < validChannelListLen; index++) {
if (validChannelList[index] != channel)
for (index = 0; index < mac->mlme_cfg->reg.valid_channel_list_num; index++) {
if (mac->mlme_cfg->reg.valid_channel_freq_list[index] !=
wlan_reg_chan_to_freq(mac->pdev, channel))
continue;
ok = policy_mgr_is_valid_for_channel_switch(mac->psoc,

View file

@ -1130,6 +1130,7 @@ QDF_STATUS sme_get_valid_channels(uint8_t *chan_list, uint32_t *list_len)
{
struct mac_context *mac_ctx = sme_get_mac_context();
uint32_t num_valid_chan;
uint8_t i;
if (!mac_ctx) {
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
@ -1146,8 +1147,10 @@ QDF_STATUS sme_get_valid_channels(uint8_t *chan_list, uint32_t *list_len)
num_valid_chan = *list_len;
}
*list_len = num_valid_chan;
qdf_mem_copy(chan_list, mac_ctx->mlme_cfg->reg.valid_channel_list,
*list_len);
for (i = 0; i < *list_len; i++) {
chan_list[i] = wlan_reg_freq_to_chan(mac_ctx->pdev,
mac_ctx->mlme_cfg->reg.valid_channel_freq_list[i]);
}
return QDF_STATUS_SUCCESS;
}

View file

@ -13370,14 +13370,15 @@ QDF_STATUS csr_get_cfg_valid_channels(struct mac_context *mac, uint8_t *pChannel
{
uint8_t num_chan_temp = 0;
int i;
uint8_t chan;
*pNumChan = (uint32_t)mac->mlme_cfg->reg.valid_channel_list_num;
qdf_mem_copy(pChannels, mac->mlme_cfg->reg.valid_channel_list,
*pNumChan);
for (i = 0; i < *pNumChan; i++) {
if (!wlan_reg_is_dsrc_chan(mac->pdev, pChannels[i])) {
pChannels[num_chan_temp] = pChannels[i];
chan = wlan_reg_freq_to_chan(mac->pdev,
mac->mlme_cfg->reg.valid_channel_freq_list[i]);
if (!wlan_reg_is_dsrc_chan(mac->pdev, chan)) {
pChannels[num_chan_temp] = chan;
num_chan_temp++;
}
}
@ -13392,13 +13393,12 @@ QDF_STATUS csr_get_cfg_valid_freqs(struct mac_context *mac,
{
uint8_t num_chan_temp = 0;
int i;
uint8_t chan;
uint32_t chan;
for (i = 0; i < mac->mlme_cfg->reg.valid_channel_list_num; i++) {
chan = mac->mlme_cfg->reg.valid_channel_list[i];
if (!wlan_reg_is_dsrc_chan(mac->pdev, chan)) {
freq_list[num_chan_temp] =
wlan_reg_chan_to_freq(mac->pdev, chan);
chan = mac->mlme_cfg->reg.valid_channel_freq_list[i];
if (!wlan_reg_is_dsrc_chan(mac->pdev, wlan_reg_freq_to_chan(mac->pdev, chan))) {
freq_list[num_chan_temp] = chan;
num_chan_temp++;
}
}

View file

@ -1460,14 +1460,18 @@ static void csr_set_cfg_valid_channel_list(struct mac_context *mac,
uint8_t NumChannels)
{
QDF_STATUS status;
uint8_t i;
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
"%s: dump valid channel list(NumChannels(%d))",
__func__, NumChannels);
QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
pChannelList, NumChannels);
qdf_mem_copy(mac->mlme_cfg->reg.valid_channel_list, pChannelList,
NumChannels);
for (i = 0; i < NumChannels; i++) {
mac->mlme_cfg->reg.valid_channel_freq_list[i] =
wlan_reg_chan_to_freq(mac->pdev, pChannelList[i]);
}
mac->mlme_cfg->reg.valid_channel_list_num = NumChannels;
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,