qcacld-3.0: Disable legacy rates in 6 GHz frequency band
Disable 11a support on 6 GHz band and change default rate of 6 GHz frequency band by using WMI_PDEV_PARAM_DEFAULT_6GHZ_RATE. Change-Id: I2db2dd54c03cf71e1b697796fa3dc58d2646a8b5 CRs-Fixed: 3251997
This commit is contained in:

کامیت شده توسط
Madan Koyyalamudi

والد
97805163c9
کامیت
5d328ac791
@@ -593,6 +593,8 @@ static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
gen->monitor_mode_concurrency =
|
gen->monitor_mode_concurrency =
|
||||||
cfg_get(psoc, CFG_MONITOR_MODE_CONCURRENCY);
|
cfg_get(psoc, CFG_MONITOR_MODE_CONCURRENCY);
|
||||||
gen->tx_retry_multiplier = cfg_get(psoc, CFG_TX_RETRY_MULTIPLIER);
|
gen->tx_retry_multiplier = cfg_get(psoc, CFG_TX_RETRY_MULTIPLIER);
|
||||||
|
gen->enable_he_mcs0_for_6ghz_mgmt =
|
||||||
|
cfg_get(psoc, CFG_ENABLE_HE_MCS0_MGMT_6GHZ);
|
||||||
mlme_init_wds_config_cfg(psoc, gen);
|
mlme_init_wds_config_cfg(psoc, gen);
|
||||||
mlme_init_mgmt_hw_tx_retry_count_cfg(psoc, gen);
|
mlme_init_mgmt_hw_tx_retry_count_cfg(psoc, gen);
|
||||||
mlme_init_relaxed_6ghz_conn_policy(psoc, gen);
|
mlme_init_relaxed_6ghz_conn_policy(psoc, gen);
|
||||||
|
@@ -747,6 +747,26 @@ enum debug_packet_log_type {
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"Max retries for mgmt frames")
|
"Max retries for mgmt frames")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* enable_he_mcs0_for_mgmt_6ghz- if disabled FW will use 6Mbps 11A rate
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 0
|
||||||
|
*
|
||||||
|
* If this ini is disabled firmware will use 6Mbps 11A rate
|
||||||
|
*
|
||||||
|
* Supported Feature: STA/SAP
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_ENABLE_HE_MCS0_MGMT_6GHZ CFG_INI_BOOL( \
|
||||||
|
"enable_he_mcs0_for_mgmt_6ghz", \
|
||||||
|
0, \
|
||||||
|
"MCS0 rate for 6ghz mgmt frames")
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
* bmiss_skip_full_scan - To decide whether firmware does channel map based
|
* bmiss_skip_full_scan - To decide whether firmware does channel map based
|
||||||
@@ -1030,6 +1050,7 @@ enum debug_packet_log_type {
|
|||||||
CFG(CFG_ITO_REPEAT_COUNT) \
|
CFG(CFG_ITO_REPEAT_COUNT) \
|
||||||
CFG(CFG_ENABLE_BEACON_RECEPTION_STATS) \
|
CFG(CFG_ENABLE_BEACON_RECEPTION_STATS) \
|
||||||
CFG(CFG_MGMT_RETRY_MAX) \
|
CFG(CFG_MGMT_RETRY_MAX) \
|
||||||
|
CFG(CFG_ENABLE_HE_MCS0_MGMT_6GHZ) \
|
||||||
CFG(CFG_BMISS_SKIP_FULL_SCAN) \
|
CFG(CFG_BMISS_SKIP_FULL_SCAN) \
|
||||||
CFG(CFG_ENABLE_RING_BUFFER) \
|
CFG(CFG_ENABLE_RING_BUFFER) \
|
||||||
CFG(CFG_DFS_CHAN_AGEOUT_TIME) \
|
CFG(CFG_DFS_CHAN_AGEOUT_TIME) \
|
||||||
|
@@ -2828,6 +2828,18 @@ QDF_STATUS
|
|||||||
wlan_mlme_get_mgmt_max_retry(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_get_mgmt_max_retry(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t *max_retry);
|
uint8_t *max_retry);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_mgmt_6ghz_rate_support() - Get status of HE rates for
|
||||||
|
* 6GHz mgmt frames
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @enable_he_mcs0_for_6ghz_mgmt: pointer to check for HE rates support
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_mgmt_6ghz_rate_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *enable_he_mcs0_for_6ghz_mgmt);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_get_status_ring_buffer() - Get the
|
* wlan_mlme_get_status_ring_buffer() - Get the
|
||||||
* status of ring buffer
|
* status of ring buffer
|
||||||
|
@@ -1339,6 +1339,7 @@ struct wlan_user_mcc_quota {
|
|||||||
* @disable_4way_hs_offload: enable/disable 4 way handshake offload to firmware
|
* @disable_4way_hs_offload: enable/disable 4 way handshake offload to firmware
|
||||||
* @as_enabled: antenna sharing enabled or not (FW capability)
|
* @as_enabled: antenna sharing enabled or not (FW capability)
|
||||||
* @mgmt_retry_max: maximum retries for management frame
|
* @mgmt_retry_max: maximum retries for management frame
|
||||||
|
* @enable_he_mcs0_for_6ghz_mgmt: HE MCS0 rate for mgmt frames in 6GHz band
|
||||||
* @bmiss_skip_full_scan: Decide if full scan can be skipped in firmware if no
|
* @bmiss_skip_full_scan: Decide if full scan can be skipped in firmware if no
|
||||||
* candidate is found in partial scan based on channel map
|
* candidate is found in partial scan based on channel map
|
||||||
* @enable_ring_buffer: Decide to enable/disable ring buffer for bug report
|
* @enable_ring_buffer: Decide to enable/disable ring buffer for bug report
|
||||||
@@ -1392,6 +1393,7 @@ struct wlan_mlme_generic {
|
|||||||
uint32_t disable_4way_hs_offload;
|
uint32_t disable_4way_hs_offload;
|
||||||
bool as_enabled;
|
bool as_enabled;
|
||||||
uint8_t mgmt_retry_max;
|
uint8_t mgmt_retry_max;
|
||||||
|
bool enable_he_mcs0_for_6ghz_mgmt;
|
||||||
bool bmiss_skip_full_scan;
|
bool bmiss_skip_full_scan;
|
||||||
bool enable_ring_buffer;
|
bool enable_ring_buffer;
|
||||||
bool enable_peer_unmap_conf_support;
|
bool enable_peer_unmap_conf_support;
|
||||||
|
@@ -4559,6 +4559,25 @@ wlan_mlme_get_mgmt_max_retry(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_mgmt_6ghz_rate_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *enable_he_mcs0_for_6ghz_mgmt)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||||
|
|
||||||
|
if (!mlme_obj) {
|
||||||
|
*enable_he_mcs0_for_6ghz_mgmt =
|
||||||
|
cfg_default(CFG_ENABLE_HE_MCS0_MGMT_6GHZ);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*enable_he_mcs0_for_6ghz_mgmt =
|
||||||
|
mlme_obj->cfg.gen.enable_he_mcs0_for_6ghz_mgmt;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_get_status_ring_buffer(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_get_status_ring_buffer(struct wlan_objmgr_psoc *psoc,
|
||||||
bool *enable_ring_buffer)
|
bool *enable_ring_buffer)
|
||||||
|
@@ -337,6 +337,7 @@ static qdf_wake_lock_t wlan_wake_lock;
|
|||||||
#define WOW_MAX_FILTERS_PER_LIST 4
|
#define WOW_MAX_FILTERS_PER_LIST 4
|
||||||
#define WOW_MIN_PATTERN_SIZE 6
|
#define WOW_MIN_PATTERN_SIZE 6
|
||||||
#define WOW_MAX_PATTERN_SIZE 64
|
#define WOW_MAX_PATTERN_SIZE 64
|
||||||
|
#define MGMT_DEFAULT_DATA_RATE_6GHZ 0x400 /* This maps to 8.6Mbps data rate */
|
||||||
|
|
||||||
#define IS_IDLE_STOP (!cds_is_driver_unloading() && \
|
#define IS_IDLE_STOP (!cds_is_driver_unloading() && \
|
||||||
!cds_is_driver_recovering() && !cds_is_driver_loading())
|
!cds_is_driver_recovering() && !cds_is_driver_loading())
|
||||||
@@ -13768,6 +13769,7 @@ static int hdd_pre_enable_configure(struct hdd_context *hdd_ctx)
|
|||||||
int ret;
|
int ret;
|
||||||
uint8_t val = 0;
|
uint8_t val = 0;
|
||||||
uint8_t max_retry = 0;
|
uint8_t max_retry = 0;
|
||||||
|
bool enable_he_mcs0_for_6ghz_mgmt = false;
|
||||||
uint32_t tx_retry_multiplier;
|
uint32_t tx_retry_multiplier;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
|
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
|
||||||
@@ -13819,6 +13821,20 @@ static int hdd_pre_enable_configure(struct hdd_context *hdd_ctx)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wlan_mlme_get_mgmt_6ghz_rate_support(hdd_ctx->psoc,
|
||||||
|
&enable_he_mcs0_for_6ghz_mgmt);
|
||||||
|
if (enable_he_mcs0_for_6ghz_mgmt) {
|
||||||
|
hdd_debug("HE rates for 6GHz mgmt frames are supported");
|
||||||
|
ret = sme_cli_set_command(0, WMI_PDEV_PARAM_DEFAULT_6GHZ_RATE,
|
||||||
|
MGMT_DEFAULT_DATA_RATE_6GHZ,
|
||||||
|
PDEV_CMD);
|
||||||
|
if (0 != ret) {
|
||||||
|
hdd_err("WMI_PDEV_PARAM_DEFAULT_6GHZ_RATE failed %d",
|
||||||
|
ret);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
wlan_mlme_get_tx_retry_multiplier(hdd_ctx->psoc,
|
wlan_mlme_get_tx_retry_multiplier(hdd_ctx->psoc,
|
||||||
&tx_retry_multiplier);
|
&tx_retry_multiplier);
|
||||||
ret = sme_cli_set_command(0, WMI_PDEV_PARAM_PDEV_STATS_TX_XRETRY_EXT,
|
ret = sme_cli_set_command(0, WMI_PDEV_PARAM_PDEV_STATS_TX_XRETRY_EXT,
|
||||||
|
@@ -9254,9 +9254,25 @@ enum rateid lim_get_min_session_txrate(struct pe_session *session)
|
|||||||
enum rateid rid = RATEID_DEFAULT;
|
enum rateid rid = RATEID_DEFAULT;
|
||||||
uint8_t min_rate = SIR_MAC_RATE_54, curr_rate, i;
|
uint8_t min_rate = SIR_MAC_RATE_54, curr_rate, i;
|
||||||
tSirMacRateSet *rateset = &session->rateSet;
|
tSirMacRateSet *rateset = &session->rateSet;
|
||||||
|
bool enable_he_mcs0_for_6ghz_mgmt = false;
|
||||||
|
qdf_freq_t op_freq;
|
||||||
|
|
||||||
if (!session)
|
if (!session)
|
||||||
return rid;
|
return rid;
|
||||||
|
else {
|
||||||
|
op_freq = wlan_get_operation_chan_freq(session->vdev);
|
||||||
|
/*
|
||||||
|
* For 6GHz freq and if enable_he_mcs0_for_mgmt_6ghz INI is
|
||||||
|
* enabled then FW will use rate of MCS0 for 11AX and configured
|
||||||
|
* via WMI_MGMT_TX_SEND_CMDID
|
||||||
|
*/
|
||||||
|
wlan_mlme_get_mgmt_6ghz_rate_support(
|
||||||
|
session->mac_ctx->psoc,
|
||||||
|
&enable_he_mcs0_for_6ghz_mgmt);
|
||||||
|
if (op_freq && wlan_reg_is_6ghz_chan_freq(op_freq) &&
|
||||||
|
enable_he_mcs0_for_6ghz_mgmt)
|
||||||
|
return rid;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < rateset->numRates; i++) {
|
for (i = 0; i < rateset->numRates; i++) {
|
||||||
/* Ignore MSB - set to indicate basic rate */
|
/* Ignore MSB - set to indicate basic rate */
|
||||||
|
مرجع در شماره جدید
Block a user