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); cfg_get(psoc, CFG_ENABLE_RTT_MAC_RANDOMIZATION);
gen->band_capability = gen->band_capability =
cfg_get(psoc, CFG_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->band = gen->band_capability;
gen->select_5ghz_margin = gen->select_5ghz_margin =
cfg_get(psoc, CFG_SELECT_5GHZ_MARGIN); cfg_get(psoc, CFG_SELECT_5GHZ_MARGIN);

View File

@@ -140,13 +140,21 @@
/* /*
* <ini> * <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 * @Min: 0
* @Max: 2 * @Max: 7
* @Default: 0 * @Default: 7
* *
* This ini is used to set default band capability * 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 * Related: None
* *
@@ -159,8 +167,8 @@
#define CFG_BAND_CAPABILITY CFG_INI_UINT( \ #define CFG_BAND_CAPABILITY CFG_INI_UINT( \
"BandCapability", \ "BandCapability", \
0, \ 0, \
2, \ 7, \
0, \ 7, \
CFG_VALUE_OR_DEFAULT, \ CFG_VALUE_OR_DEFAULT, \
"Band Capability") "Band Capability")

View File

@@ -257,7 +257,7 @@ QDF_STATUS wlan_mlme_set_ht_mpdu_density(struct wlan_objmgr_psoc *psoc,
* Return: QDF Status * Return: QDF Status
*/ */
QDF_STATUS wlan_mlme_get_band_capability(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);
/** /**
* wlan_mlme_set_band_capability() - Set the Band capability config * 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 * Return: QDF Status
*/ */
QDF_STATUS wlan_mlme_set_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);
/** /**
* wlan_mlme_get_prevent_link_down() - Get the prevent link down config * 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 * @sae_connect_retries: sae connect retry bitmask
*/ */
struct wlan_mlme_generic { struct wlan_mlme_generic {
enum band_info band_capability; uint32_t band_capability;
enum band_info band; uint32_t band;
uint8_t select_5ghz_margin; uint8_t select_5ghz_margin;
uint8_t sub_20_chan_width; uint8_t sub_20_chan_width;
uint8_t ito_repeat_count; 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 static inline
QDF_STATUS ucfg_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc, 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); 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 static inline
QDF_STATUS ucfg_mlme_set_band_capability(struct wlan_objmgr_psoc *psoc, 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); 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, 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; 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, 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; 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 wlan_objmgr_vdev *vdev;
struct wmi_pcl_chan_weights *weights; struct wmi_pcl_chan_weights *weights;
QDF_STATUS status = QDF_STATUS_E_FAILURE; QDF_STATUS status = QDF_STATUS_E_FAILURE;
uint8_t band_capability; uint32_t band_capability;
uint16_t i; 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]); wma_map_pcl_weights(weights->weighed_valid_list[i]);
/* Dont allow roaming on 2G when 5G_ONLY configured */ /* 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)) && pcl_req->band_mask == BIT(REG_BAND_5G)) &&
WLAN_REG_IS_24GHZ_CH_FREQ(weights->saved_chan_list[i])) WLAN_REG_IS_24GHZ_CH_FREQ(weights->saved_chan_list[i]))
weights->weighed_valid_list[i] = weights->weighed_valid_list[i] =
WEIGHT_OF_DISALLOWED_CHANNELS; WEIGHT_OF_DISALLOWED_CHANNELS;
if ((band_capability == BAND_2G || if ((band_capability == BIT(REG_BAND_2G) ||
pcl_req->band_mask == BIT(REG_BAND_2G)) && pcl_req->band_mask == BIT(REG_BAND_2G)) &&
!WLAN_REG_IS_24GHZ_CH_FREQ(weights->saved_chan_list[i])) !WLAN_REG_IS_24GHZ_CH_FREQ(weights->saved_chan_list[i]))
weights->weighed_valid_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) static void wlan_hdd_update_band_cap_in_wiphy(struct hdd_context *hdd_ctx)
{ {
int i, j; int i, j;
uint8_t band_capability; uint32_t band_capability;
QDF_STATUS status; QDF_STATUS status;
struct ieee80211_supported_band *band; 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]; band = hdd_ctx->wiphy->bands[i];
if (HDD_NL80211_BAND_2GHZ == i && if (HDD_NL80211_BAND_2GHZ == i &&
BAND_5G == band_capability) { BIT(REG_BAND_5G) == band_capability) {
/* 5G only */ /* 5G only */
#ifdef WLAN_ENABLE_SOCIAL_CHANNELS_5G_ONLY #ifdef WLAN_ENABLE_SOCIAL_CHANNELS_5G_ONLY
/* Enable social channels for P2P */ /* 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; IEEE80211_CHAN_DISABLED;
continue; continue;
} else if (HDD_NL80211_BAND_5GHZ == i && } else if (HDD_NL80211_BAND_5GHZ == i &&
BAND_2G == band_capability) { BIT(REG_BAND_2G) == band_capability) {
/* 2G only */ /* 2G only */
band->channels[j].flags |= band->channels[j].flags |=
IEEE80211_CHAN_DISABLED; 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; int ret;
struct hdd_context *hdd_ctx = hdd_handle_to_context(hdd_handle); 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(); struct cds_config_info *cds_cfg = cds_get_ini_config();
uint8_t antenna_mode; uint8_t antenna_mode;
uint8_t sub_20_chan_width; 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; cfg->services.is_11k_offload_supported;
/* /*
* now overwrite the target band capability with INI * merge the target band capability with INI setting if the merge has
* setting if INI setting is a subset * at least 1 band enabled
*/ */
if ((band_capability == BAND_ALL) && temp_band_cap &= band_capability;
(temp_band_cap != BAND_ALL)) if (!temp_band_cap)
band_capability = temp_band_cap;
else if ((band_capability != BAND_ALL) &&
(temp_band_cap != BAND_ALL) &&
(band_capability != temp_band_cap)) {
hdd_warn("ini BandCapability not supported by the target"); 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); status = ucfg_mlme_set_band_capability(hdd_ctx->psoc, band_capability);
if (QDF_IS_STATUS_ERROR(status)) { 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; struct cds_config_info *cds_cfg;
int value; int value;
uint8_t band_capability; uint8_t band_capability;
uint32_t band_bitmap;
uint8_t ito_repeat_count; uint8_t ito_repeat_count;
bool crash_inject; bool crash_inject;
bool self_recovery; 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; 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)) if (QDF_IS_STATUS_ERROR(status))
goto exit; goto exit;
band_capability = wlan_reg_band_bitmap_to_band_info(band_bitmap);
cds_cfg->bandcapability = band_capability; cds_cfg->bandcapability = band_capability;
cds_cfg->num_vdevs = hdd_ctx->config->num_vdevs; cds_cfg->num_vdevs = hdd_ctx->config->num_vdevs;
cds_cfg->enable_tx_compl_tsf64 = 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; struct wlan_objmgr_psoc_user_config *user_config;
uint8_t band_capability; uint8_t band_capability;
uint32_t band_bitmap;
QDF_STATUS status; QDF_STATUS status;
bool value = false; 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)) if (QDF_IS_STATUS_ERROR(status))
return -EIO; return -EIO;
@@ -11753,6 +11753,7 @@ static int hdd_update_user_config(struct hdd_context *hdd_ctx)
if (!QDF_IS_STATUS_SUCCESS(status)) if (!QDF_IS_STATUS_SUCCESS(status))
hdd_err("Invalid 11h_enable flag"); hdd_err("Invalid 11h_enable flag");
user_config->is_11h_support_enabled = value; user_config->is_11h_support_enabled = value;
band_capability = wlan_reg_band_bitmap_to_band_info(band_bitmap);
user_config->band_capability = band_capability; user_config->band_capability = band_capability;
wlan_objmgr_psoc_set_user_config(hdd_ctx->psoc, user_config); 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 num_chan, i;
uint32_t *chan_freq_list; uint32_t *chan_freq_list;
uint8_t band_capability; uint8_t band_capability;
uint32_t band_bitmap;
uint16_t neighbor_scan_min_chan_time; uint16_t neighbor_scan_min_chan_time;
uint16_t neighbor_scan_max_chan_time; uint16_t neighbor_scan_max_chan_time;
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); 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; 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)) { if (QDF_IS_STATUS_ERROR(status)) {
hdd_err("Failed to get MLME band capability"); hdd_err("Failed to get MLME band capability");
return -EIO; return -EIO;
} }
band_capability = wlan_reg_band_bitmap_to_band_info(band_bitmap);
chan_freq_list = chan_freq_list =
qdf_mem_malloc(sizeof(uint32_t) * OEM_CAP_MAX_NUM_CHANNELS); qdf_mem_malloc(sizeof(uint32_t) * OEM_CAP_MAX_NUM_CHANNELS);
if (!chan_freq_list) 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, static void reg_program_config_vars(struct hdd_context *hdd_ctx,
struct reg_config_vars *config_vars) struct reg_config_vars *config_vars)
{ {
uint8_t band_capability = 0, indoor_chnl_marking = 0; uint8_t indoor_chnl_marking = 0;
uint32_t scan_11d_interval = 0; uint32_t band_capability = 0, scan_11d_interval = 0;
bool indoor_chan_enabled = false; bool indoor_chan_enabled = false;
uint32_t restart_beaconing = 0; uint32_t restart_beaconing = 0;
bool enable_srd_chan = false; bool enable_srd_chan = false;

View File

@@ -157,7 +157,7 @@ struct board_info {
* struct wma_tgt_cfg - target config * struct wma_tgt_cfg - target config
* @target_fw_version: target fw version * @target_fw_version: target fw version
* @target_fw_vers_ext: target fw extended sub version * @target_fw_vers_ext: target fw extended sub version
* @band_cap: band capability * @band_cap: band capability bitmap
* @reg_domain: reg domain * @reg_domain: reg domain
* @eeprom_rd_ext: eeprom rd ext * @eeprom_rd_ext: eeprom rd ext
* @hw_macaddr: hw mcast addr * @hw_macaddr: hw mcast addr
@@ -182,7 +182,7 @@ struct board_info {
struct wma_tgt_cfg { struct wma_tgt_cfg {
uint32_t target_fw_version; uint32_t target_fw_version;
uint32_t target_fw_vers_ext; uint32_t target_fw_vers_ext;
uint8_t band_cap; uint32_t band_cap;
uint32_t reg_domain; uint32_t reg_domain;
uint32_t eeprom_rd_ext; uint32_t eeprom_rd_ext;
struct qdf_mac_addr hw_macaddr; 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 * wma_update_hdd_band_cap() - update band cap which hdd understands
* @supported_band: supported band which has been given by FW * @supported_band: supported band which has been given by FW
* @tgt_cfg: target configuration to be updated * @tgt_cfg: target configuration to be updated
* @psoc: psoc ptr
* *
* Convert WMA given supported band to enum which HDD understands * Convert WMA given supported band to enum which HDD understands
* *
* Return: None * Return: None
*/ */
static void wma_update_hdd_band_cap(WMI_PHY_CAPABILITY supported_band, 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) { switch (supported_band) {
case WMI_11G_CAPABILITY: case WMI_11G_CAPABILITY:
case WMI_11NG_CAPABILITY: case WMI_11NG_CAPABILITY:
tgt_cfg->band_cap = BAND_2G; tgt_cfg->band_cap = BIT(REG_BAND_2G);
break; break;
case WMI_11A_CAPABILITY: case WMI_11A_CAPABILITY:
case WMI_11NA_CAPABILITY: case WMI_11NA_CAPABILITY:
case WMI_11AC_CAPABILITY: case WMI_11AC_CAPABILITY:
tgt_cfg->band_cap = BAND_5G; tgt_cfg->band_cap = BIT(REG_BAND_5G);
break; break;
case WMI_11AG_CAPABILITY: case WMI_11AG_CAPABILITY:
case WMI_11NAG_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: 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.dfs_cac_offload = wma_handle->is_dfs_offloaded;
tgt_cfg.rcpi_enabled = wma_handle->rcpi_enabled; tgt_cfg.rcpi_enabled = wma_handle->rcpi_enabled;
wma_update_hdd_band_cap(target_if_get_phy_capability(tgt_hdl), 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); wma_update_sar_version(service_ext_param, &tgt_cfg);
tgt_cfg.fine_time_measurement_cap = tgt_cfg.fine_time_measurement_cap =
target_if_get_wmi_fw_sub_feat_caps(tgt_hdl); target_if_get_wmi_fw_sub_feat_caps(tgt_hdl);