qcacld-3.0: Update band_capability INI to use bitmap

The band_capability field is used in other places to be
a bitmap over reg_wifi_band. Update the field in wma_tgt_cfg and
wlan_mlme_generic to take the same bitmap for consistency.
Update all references to these fields to expect a bitmap as well.

Change-Id: I8abd697e2fbe02b4eadd32f3027bef7408bac2a0
CRs-fixed: 2726710
This commit is contained in:
Lincoln Tran
2020-07-07 18:52:30 -07:00
committed by snandini
parent ae90b01281
commit 1de7a9a643
13 changed files with 65 additions and 42 deletions

View File

@@ -299,6 +299,8 @@ static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc,
cfg_get(psoc, CFG_ENABLE_RTT_MAC_RANDOMIZATION);
gen->band_capability =
cfg_get(psoc, CFG_BAND_CAPABILITY);
if (!gen->band_capability)
gen->band_capability = (BIT(REG_BAND_2G) | BIT(REG_BAND_5G));
gen->band = gen->band_capability;
gen->select_5ghz_margin =
cfg_get(psoc, CFG_SELECT_5GHZ_MARGIN);

View File

@@ -140,13 +140,21 @@
/*
* <ini>
* BandCapability - Preferred band (0: Both, 1: 2.4G only, 2: 5G only)
* BandCapability - Preferred band (0: Both 2.4G and 5G,
* 1: 2.4G only,
* 2: 5G only,
* 3: Both 2.4G and 5G,
* 4: 6G only,
* 5: Both 2.4G and 6G,
* 6: Both 5G and 6G,
* 7: 2.4G, 5G, and 6G)
* @Min: 0
* @Max: 2
* @Default: 0
* @Max: 7
* @Default: 7
*
* This ini is used to set default band capability
* (0: Both, 1: 2.4G only, 2: 5G only)
* (0: Both 2.4G and 5G, 1: 2.4G only, 2: 5G only, 3: Both 2.4G and 5G,
* 4: 6G only, 5: Both 2.4G and 6G, 6: Both 5G and 6G, 7: 2.4G, 5G, and 6G)
*
* Related: None
*
@@ -159,8 +167,8 @@
#define CFG_BAND_CAPABILITY CFG_INI_UINT( \
"BandCapability", \
0, \
2, \
0, \
7, \
7, \
CFG_VALUE_OR_DEFAULT, \
"Band Capability")

View File

@@ -257,7 +257,7 @@ QDF_STATUS wlan_mlme_set_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
* Return: QDF Status
*/
QDF_STATUS wlan_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
uint8_t *band_capability);
uint32_t *band_capability);
/**
* wlan_mlme_set_band_capability() - Set the Band capability config
@@ -267,7 +267,7 @@ QDF_STATUS wlan_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
* Return: QDF Status
*/
QDF_STATUS wlan_mlme_set_band_capability(struct wlan_objmgr_psoc *psoc,
uint8_t band_capability);
uint32_t band_capability);
/**
* wlan_mlme_get_prevent_link_down() - Get the prevent link down config

View File

@@ -1111,8 +1111,8 @@ struct wlan_mlme_chainmask {
* @sae_connect_retries: sae connect retry bitmask
*/
struct wlan_mlme_generic {
enum band_info band_capability;
enum band_info band;
uint32_t band_capability;
uint32_t band;
uint8_t select_5ghz_margin;
uint8_t sub_20_chan_width;
uint8_t ito_repeat_count;

View File

@@ -236,7 +236,7 @@ QDF_STATUS ucfg_mlme_set_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
*/
static inline
QDF_STATUS ucfg_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
uint8_t *band_capability)
uint32_t *band_capability)
{
return wlan_mlme_get_band_capability(psoc, band_capability);
}
@@ -250,7 +250,7 @@ QDF_STATUS ucfg_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
*/
static inline
QDF_STATUS ucfg_mlme_set_band_capability(struct wlan_objmgr_psoc *psoc,
uint8_t band_capability)
uint32_t band_capability)
{
return wlan_mlme_set_band_capability(psoc, band_capability);
}

View File

@@ -187,7 +187,7 @@ QDF_STATUS wlan_mlme_set_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
}
QDF_STATUS wlan_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
uint8_t *band_capability)
uint32_t *band_capability)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
@@ -201,7 +201,7 @@ QDF_STATUS wlan_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
}
QDF_STATUS wlan_mlme_set_band_capability(struct wlan_objmgr_psoc *psoc,
uint8_t band_capability)
uint32_t band_capability)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;

View File

@@ -38,7 +38,7 @@ wlan_cm_roam_send_set_vdev_pcl(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev;
struct wmi_pcl_chan_weights *weights;
QDF_STATUS status = QDF_STATUS_E_FAILURE;
uint8_t band_capability;
uint32_t band_capability;
uint16_t i;
/*
@@ -94,13 +94,13 @@ wlan_cm_roam_send_set_vdev_pcl(struct wlan_objmgr_psoc *psoc,
wma_map_pcl_weights(weights->weighed_valid_list[i]);
/* Dont allow roaming on 2G when 5G_ONLY configured */
if ((band_capability == BAND_5G ||
if ((band_capability == BIT(REG_BAND_5G) ||
pcl_req->band_mask == BIT(REG_BAND_5G)) &&
WLAN_REG_IS_24GHZ_CH_FREQ(weights->saved_chan_list[i]))
weights->weighed_valid_list[i] =
WEIGHT_OF_DISALLOWED_CHANNELS;
if ((band_capability == BAND_2G ||
if ((band_capability == BIT(REG_BAND_2G) ||
pcl_req->band_mask == BIT(REG_BAND_2G)) &&
!WLAN_REG_IS_24GHZ_CH_FREQ(weights->saved_chan_list[i]))
weights->weighed_valid_list[i] =

View File

@@ -16010,7 +16010,7 @@ static void wlan_hdd_update_ht_cap(struct hdd_context *hdd_ctx)
static void wlan_hdd_update_band_cap_in_wiphy(struct hdd_context *hdd_ctx)
{
int i, j;
uint8_t band_capability;
uint32_t band_capability;
QDF_STATUS status;
struct ieee80211_supported_band *band;
@@ -16028,7 +16028,7 @@ static void wlan_hdd_update_band_cap_in_wiphy(struct hdd_context *hdd_ctx)
band = hdd_ctx->wiphy->bands[i];
if (HDD_NL80211_BAND_2GHZ == i &&
BAND_5G == band_capability) {
BIT(REG_BAND_5G) == band_capability) {
/* 5G only */
#ifdef WLAN_ENABLE_SOCIAL_CHANNELS_5G_ONLY
/* Enable social channels for P2P */
@@ -16042,7 +16042,7 @@ static void wlan_hdd_update_band_cap_in_wiphy(struct hdd_context *hdd_ctx)
IEEE80211_CHAN_DISABLED;
continue;
} else if (HDD_NL80211_BAND_5GHZ == i &&
BAND_2G == band_capability) {
BIT(REG_BAND_2G) == band_capability) {
/* 2G only */
band->channels[j].flags |=
IEEE80211_CHAN_DISABLED;

View File

@@ -2176,7 +2176,7 @@ int hdd_update_tgt_cfg(hdd_handle_t hdd_handle, struct wma_tgt_cfg *cfg)
{
int ret;
struct hdd_context *hdd_ctx = hdd_handle_to_context(hdd_handle);
uint8_t temp_band_cap, band_capability;
uint32_t temp_band_cap, band_capability;
struct cds_config_info *cds_cfg = cds_get_ini_config();
uint8_t antenna_mode;
uint8_t sub_20_chan_width;
@@ -2269,17 +2269,14 @@ int hdd_update_tgt_cfg(hdd_handle_t hdd_handle, struct wma_tgt_cfg *cfg)
cfg->services.is_11k_offload_supported;
/*
* now overwrite the target band capability with INI
* setting if INI setting is a subset
* merge the target band capability with INI setting if the merge has
* at least 1 band enabled
*/
if ((band_capability == BAND_ALL) &&
(temp_band_cap != BAND_ALL))
band_capability = temp_band_cap;
else if ((band_capability != BAND_ALL) &&
(temp_band_cap != BAND_ALL) &&
(band_capability != temp_band_cap)) {
temp_band_cap &= band_capability;
if (!temp_band_cap)
hdd_warn("ini BandCapability not supported by the target");
}
else
band_capability = temp_band_cap;
status = ucfg_mlme_set_band_capability(hdd_ctx->psoc, band_capability);
if (QDF_IS_STATUS_ERROR(status)) {
@@ -11637,6 +11634,7 @@ static int hdd_update_cds_config(struct hdd_context *hdd_ctx)
struct cds_config_info *cds_cfg;
int value;
uint8_t band_capability;
uint32_t band_bitmap;
uint8_t ito_repeat_count;
bool crash_inject;
bool self_recovery;
@@ -11702,10 +11700,11 @@ static int hdd_update_cds_config(struct hdd_context *hdd_ctx)
cds_cfg->ito_repeat_count = ito_repeat_count;
status = ucfg_mlme_get_band_capability(hdd_ctx->psoc, &band_capability);
status = ucfg_mlme_get_band_capability(hdd_ctx->psoc, &band_bitmap);
if (QDF_IS_STATUS_ERROR(status))
goto exit;
band_capability = wlan_reg_band_bitmap_to_band_info(band_bitmap);
cds_cfg->bandcapability = band_capability;
cds_cfg->num_vdevs = hdd_ctx->config->num_vdevs;
cds_cfg->enable_tx_compl_tsf64 =
@@ -11731,10 +11730,11 @@ static int hdd_update_user_config(struct hdd_context *hdd_ctx)
{
struct wlan_objmgr_psoc_user_config *user_config;
uint8_t band_capability;
uint32_t band_bitmap;
QDF_STATUS status;
bool value = false;
status = ucfg_mlme_get_band_capability(hdd_ctx->psoc, &band_capability);
status = ucfg_mlme_get_band_capability(hdd_ctx->psoc, &band_bitmap);
if (QDF_IS_STATUS_ERROR(status))
return -EIO;
@@ -11753,6 +11753,7 @@ static int hdd_update_user_config(struct hdd_context *hdd_ctx)
if (!QDF_IS_STATUS_SUCCESS(status))
hdd_err("Invalid 11h_enable flag");
user_config->is_11h_support_enabled = value;
band_capability = wlan_reg_band_bitmap_to_band_info(band_bitmap);
user_config->band_capability = band_capability;
wlan_objmgr_psoc_set_user_config(hdd_ctx->psoc, user_config);

View File

@@ -62,6 +62,7 @@ static int populate_oem_data_cap(struct hdd_adapter *adapter,
uint32_t num_chan, i;
uint32_t *chan_freq_list;
uint8_t band_capability;
uint32_t band_bitmap;
uint16_t neighbor_scan_min_chan_time;
uint16_t neighbor_scan_max_chan_time;
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
@@ -72,12 +73,14 @@ static int populate_oem_data_cap(struct hdd_adapter *adapter,
return -EINVAL;
}
status = ucfg_mlme_get_band_capability(hdd_ctx->psoc, &band_capability);
status = ucfg_mlme_get_band_capability(hdd_ctx->psoc, &band_bitmap);
if (QDF_IS_STATUS_ERROR(status)) {
hdd_err("Failed to get MLME band capability");
return -EIO;
}
band_capability = wlan_reg_band_bitmap_to_band_info(band_bitmap);
chan_freq_list =
qdf_mem_malloc(sizeof(uint32_t) * OEM_CAP_MAX_NUM_CHANNELS);
if (!chan_freq_list)

View File

@@ -211,8 +211,8 @@ void hdd_reset_global_reg_params(void)
static void reg_program_config_vars(struct hdd_context *hdd_ctx,
struct reg_config_vars *config_vars)
{
uint8_t band_capability = 0, indoor_chnl_marking = 0;
uint32_t scan_11d_interval = 0;
uint8_t indoor_chnl_marking = 0;
uint32_t band_capability = 0, scan_11d_interval = 0;
bool indoor_chan_enabled = false;
uint32_t restart_beaconing = 0;
bool enable_srd_chan = false;

View File

@@ -157,7 +157,7 @@ struct board_info {
* struct wma_tgt_cfg - target config
* @target_fw_version: target fw version
* @target_fw_vers_ext: target fw extended sub version
* @band_cap: band capability
* @band_cap: band capability bitmap
* @reg_domain: reg domain
* @eeprom_rd_ext: eeprom rd ext
* @hw_macaddr: hw mcast addr
@@ -182,7 +182,7 @@ struct board_info {
struct wma_tgt_cfg {
uint32_t target_fw_version;
uint32_t target_fw_vers_ext;
uint8_t band_cap;
uint32_t band_cap;
uint32_t reg_domain;
uint32_t eeprom_rd_ext;
struct qdf_mac_addr hw_macaddr;

View File

@@ -5090,28 +5090,37 @@ wma_update_sar_version(struct wlan_psoc_host_service_ext_param *param,
* wma_update_hdd_band_cap() - update band cap which hdd understands
* @supported_band: supported band which has been given by FW
* @tgt_cfg: target configuration to be updated
* @psoc: psoc ptr
*
* Convert WMA given supported band to enum which HDD understands
*
* Return: None
*/
static void wma_update_hdd_band_cap(WMI_PHY_CAPABILITY supported_band,
struct wma_tgt_cfg *tgt_cfg)
struct wma_tgt_cfg *tgt_cfg,
struct wlan_objmgr_psoc *psoc)
{
switch (supported_band) {
case WMI_11G_CAPABILITY:
case WMI_11NG_CAPABILITY:
tgt_cfg->band_cap = BAND_2G;
tgt_cfg->band_cap = BIT(REG_BAND_2G);
break;
case WMI_11A_CAPABILITY:
case WMI_11NA_CAPABILITY:
case WMI_11AC_CAPABILITY:
tgt_cfg->band_cap = BAND_5G;
tgt_cfg->band_cap = BIT(REG_BAND_5G);
break;
case WMI_11AG_CAPABILITY:
case WMI_11NAG_CAPABILITY:
case WMI_11AX_CAPABILITY:
tgt_cfg->band_cap = (BIT(REG_BAND_2G) | BIT(REG_BAND_5G));
if (wlan_reg_is_6ghz_supported(psoc))
tgt_cfg->band_cap |= BIT(REG_BAND_6G);
break;
default:
tgt_cfg->band_cap = BAND_ALL;
tgt_cfg->band_cap = (BIT(REG_BAND_2G) |
BIT(REG_BAND_5G) |
BIT(REG_BAND_6G));
}
}
@@ -5450,7 +5459,7 @@ static int wma_update_hdd_cfg(tp_wma_handle wma_handle)
tgt_cfg.dfs_cac_offload = wma_handle->is_dfs_offloaded;
tgt_cfg.rcpi_enabled = wma_handle->rcpi_enabled;
wma_update_hdd_band_cap(target_if_get_phy_capability(tgt_hdl),
&tgt_cfg);
&tgt_cfg, wma_handle->psoc);
wma_update_sar_version(service_ext_param, &tgt_cfg);
tgt_cfg.fine_time_measurement_cap =
target_if_get_wmi_fw_sub_feat_caps(tgt_hdl);