mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 01:01:56 -04:00
qcacld-3.0: Make max msdus per pkt configurable
Introduce a new parameter in the ini file for the maximum number of MSDUs per HTT_RX_INORDERIND message. This parameter is now sent over to the FW through the RFS configuration message. Change-Id: Id0057861bc172a36483804170274b202198b6824 CRs-Fixed: 2106760
This commit is contained in:
parent
d9c528eba1
commit
30e8cbcd4f
5 changed files with 48 additions and 6 deletions
|
|
@ -159,6 +159,7 @@ struct cds_config_info {
|
|||
uint16_t self_gen_frm_pwr;
|
||||
enum cfg_sub_20_channel_width sub_20_channel_width;
|
||||
bool flow_steering_enabled;
|
||||
uint8_t max_msdus_per_rxinorderind;
|
||||
bool self_recovery_enabled;
|
||||
bool fw_timeout_crash;
|
||||
struct ol_tx_sched_wrr_ac_specs_t ac_specs[TX_WMM_AC_NUM];
|
||||
|
|
|
|||
|
|
@ -309,6 +309,8 @@ QDF_STATUS htt_h2t_rx_ring_rfs_cfg_msg_ll(struct htt_pdev_t *pdev)
|
|||
struct htt_htc_pkt *pkt;
|
||||
qdf_nbuf_t msg;
|
||||
uint32_t *msg_word;
|
||||
uint32_t msg_local;
|
||||
struct cds_config_info *cds_cfg;
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_HTT, QDF_TRACE_LEVEL_INFO,
|
||||
"Receive flow steering configuration, disable gEnableFlowSteering(=0) in ini if FW doesnot support it\n");
|
||||
|
|
@ -342,16 +344,28 @@ QDF_STATUS htt_h2t_rx_ring_rfs_cfg_msg_ll(struct htt_pdev_t *pdev)
|
|||
/* rewind beyond alignment pad to get to the HTC header reserved area */
|
||||
qdf_nbuf_push_head(msg, HTC_HDR_ALIGNMENT_PADDING);
|
||||
|
||||
*msg_word = 0;
|
||||
HTT_H2T_MSG_TYPE_SET(*msg_word, HTT_H2T_MSG_TYPE_RFS_CONFIG);
|
||||
msg_local = 0;
|
||||
HTT_H2T_MSG_TYPE_SET(msg_local, HTT_H2T_MSG_TYPE_RFS_CONFIG);
|
||||
if (ol_cfg_is_flow_steering_enabled(pdev->ctrl_pdev)) {
|
||||
HTT_RX_RFS_CONFIG_SET(*msg_word, 1);
|
||||
QDF_TRACE(QDF_MODULE_ID_HTT, QDF_TRACE_LEVEL_INFO,
|
||||
"Enable Rx flow steering\n");
|
||||
HTT_RX_RFS_CONFIG_SET(msg_local, 1);
|
||||
QDF_TRACE(QDF_MODULE_ID_HTT, QDF_TRACE_LEVEL_INFO,
|
||||
"Enable Rx flow steering");
|
||||
} else {
|
||||
QDF_TRACE(QDF_MODULE_ID_HTT, QDF_TRACE_LEVEL_INFO,
|
||||
"Disable Rx flow steering\n");
|
||||
"Disable Rx flow steering");
|
||||
}
|
||||
cds_cfg = cds_get_ini_config();
|
||||
if (cds_cfg != NULL) {
|
||||
msg_local |= ((cds_cfg->max_msdus_per_rxinorderind & 0xff)
|
||||
<< 16);
|
||||
QDF_TRACE(QDF_MODULE_ID_HTT, QDF_TRACE_LEVEL_INFO,
|
||||
"Updated maxMSDUsPerRxInd");
|
||||
}
|
||||
|
||||
*msg_word = msg_local;
|
||||
QDF_TRACE(QDF_MODULE_ID_HTT, QDF_TRACE_LEVEL_INFO,
|
||||
"%s: Sending msg_word: 0x%08x",
|
||||
__func__, *msg_word);
|
||||
|
||||
SET_HTC_PACKET_INFO_TX(&pkt->htc_pkt,
|
||||
htt_h2t_send_complete_free_netbuf,
|
||||
|
|
|
|||
|
|
@ -8567,6 +8567,20 @@ enum hdd_link_speed_rpt_type {
|
|||
#define CFG_FLOW_STEERING_ENABLED_MAX (1)
|
||||
#define CFG_FLOW_STEERING_ENABLED_DEFAULT (0)
|
||||
|
||||
/*
|
||||
* Max number of MSDUs per HTT RX IN ORDER INDICATION msg.
|
||||
* Note that this has a direct impact on the size of source CE rings.
|
||||
* It is possible to go below 8, but would require testing; so we are
|
||||
* restricting the lower limit to 8 artificially
|
||||
*
|
||||
* It is recommended that this value is a POWER OF 2.
|
||||
*
|
||||
* Values lower than 8 are for experimental purposes only.
|
||||
*/
|
||||
#define CFG_MAX_MSDUS_PER_RXIND_NAME "maxMSDUsPerRxInd"
|
||||
#define CFG_MAX_MSDUS_PER_RXIND_MIN (4)
|
||||
#define CFG_MAX_MSDUS_PER_RXIND_MAX (32)
|
||||
#define CFG_MAX_MSDUS_PER_RXIND_DEFAULT (32)
|
||||
/*
|
||||
* In static display use case when APPS is in stand alone power save mode enable
|
||||
* active offload mode which helps FW to filter out MC/BC data packets to avoid
|
||||
|
|
@ -13762,6 +13776,7 @@ struct hdd_config {
|
|||
bool tso_enable;
|
||||
bool lro_enable;
|
||||
bool flow_steering_enable;
|
||||
uint8_t max_msdus_per_rxinorderind;
|
||||
bool active_mode_offload;
|
||||
bool bpf_packet_filter_enable;
|
||||
/* parameter for defer timer for enabling TDLS on p2p listen */
|
||||
|
|
|
|||
|
|
@ -3660,6 +3660,13 @@ struct reg_table_entry g_registry_table[] = {
|
|||
CFG_FLOW_STEERING_ENABLED_MIN,
|
||||
CFG_FLOW_STEERING_ENABLED_MAX),
|
||||
|
||||
REG_VARIABLE(CFG_MAX_MSDUS_PER_RXIND_NAME, WLAN_PARAM_Integer,
|
||||
struct hdd_config, max_msdus_per_rxinorderind,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_MAX_MSDUS_PER_RXIND_DEFAULT,
|
||||
CFG_MAX_MSDUS_PER_RXIND_MIN,
|
||||
CFG_MAX_MSDUS_PER_RXIND_MAX),
|
||||
|
||||
REG_VARIABLE(CFG_ACTIVE_MODE_OFFLOAD, WLAN_PARAM_Integer,
|
||||
struct hdd_config, active_mode_offload,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
|
|
@ -6537,6 +6544,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
|
|||
hdd_ctx->config->tso_enable);
|
||||
hdd_debug("Name = [LROEnable] value = [%d]",
|
||||
hdd_ctx->config->lro_enable);
|
||||
hdd_debug("Name = [%s] value = [%d]",
|
||||
CFG_MAX_MSDUS_PER_RXIND_NAME,
|
||||
hdd_ctx->config->max_msdus_per_rxinorderind);
|
||||
hdd_debug("Name = [active_mode_offload] value = [%d]",
|
||||
hdd_ctx->config->active_mode_offload);
|
||||
hdd_debug("Name = [gfine_time_meas_cap] value = [%u]",
|
||||
|
|
|
|||
|
|
@ -8280,6 +8280,8 @@ static int hdd_update_cds_config(struct hdd_context *hdd_ctx)
|
|||
cds_cfg->max_station = hdd_ctx->config->maxNumberOfPeers;
|
||||
cds_cfg->sub_20_channel_width = WLAN_SUB_20_CH_WIDTH_NONE;
|
||||
cds_cfg->flow_steering_enabled = hdd_ctx->config->flow_steering_enable;
|
||||
cds_cfg->max_msdus_per_rxinorderind =
|
||||
hdd_ctx->config->max_msdus_per_rxinorderind;
|
||||
cds_cfg->self_recovery_enabled = hdd_ctx->config->enableSelfRecovery;
|
||||
cds_cfg->fw_timeout_crash = hdd_ctx->config->fw_timeout_crash;
|
||||
cds_cfg->active_uc_bpf_mode = hdd_ctx->config->active_uc_bpf_mode;
|
||||
|
|
|
|||
Loading…
Reference in a new issue