From 7db3b04cd92ff9a8bc92f7480e455153e0da10d8 Mon Sep 17 00:00:00 2001 From: Vignesh Viswanathan Date: Wed, 3 Oct 2018 23:33:35 +0530 Subject: [PATCH] qcacld-3.0: Add MLME Generic CFG Items Add multiple general INI Items to the MLME CFG Component. Change-Id: I0d5368ec82c8b19e477e80c71dd8d4524a9726b4 CRs-Fixed: 2326704 --- components/mlme/core/src/wlan_mlme_main.c | 45 ++ .../mlme/dispatcher/inc/cfg_mlme_generic.h | 383 +++++++++++++++++- .../dispatcher/inc/wlan_mlme_public_struct.h | 38 +- core/hdd/inc/wlan_hdd_cfg.h | 10 +- core/hdd/src/wlan_hdd_cfg.c | 10 +- 5 files changed, 472 insertions(+), 14 deletions(-) diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index ce4db76dd685..191fd3223aaa 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -139,11 +139,56 @@ static void mlme_init_pmf_cfg(struct wlan_objmgr_psoc *psoc, } #endif /*WLAN_FEATURE_11W*/ +#ifdef WLAN_FEATURE_LPSS +static inline void +mlme_init_lpass_support_cfg(struct wlan_objmgr_psoc *psoc, + struct wlan_mlme_generic *gen) +{ + gen->lpass_support = cfg_get(psoc, CFG_ENABLE_LPASS_SUPPORT); +} +#else +static inline void +mlme_init_lpass_support_cfg(struct wlan_objmgr_psoc *psoc, + struct wlan_mlme_generic *gen) +{ + gen->lpass_support = cfg_default(CFG_ENABLE_LPASS_SUPPORT); +} +#endif + static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc, struct wlan_mlme_generic *gen) { gen->rtt3_enabled = cfg_default(CFG_RTT3_ENABLE); + gen->band_capability = + cfg_get(psoc, CFG_BAND_CAPABILITY); + gen->select_5ghz_margin = + cfg_get(psoc, CFG_SELECT_5GHZ_MARGIN); + gen->sub_20_chan_width = + cfg_get(psoc, CFG_SUB_20_CHANNEL_WIDTH); + gen->ito_repeat_count = + cfg_get(psoc, CFG_ITO_REPEAT_COUNT); + gen->dropped_pkt_disconnect_thresh = + cfg_get(psoc, CFG_DROPPED_PKT_DISCONNECT_THRESHOLD); + gen->prevent_link_down = + cfg_get(psoc, CFG_PREVENT_LINK_DOWN); + gen->memory_deep_sleep = + cfg_get(psoc, CFG_ENABLE_MEM_DEEP_SLEEP); + gen->cck_tx_fir_override = + cfg_get(psoc, CFG_ENABLE_CCK_TX_FIR_OVERRIDE); + gen->crash_inject = + cfg_get(psoc, CFG_ENABLE_CRASH_INJECT); + gen->self_recovery = + cfg_get(psoc, CFG_ENABLE_SELF_RECOVERY); + gen->sap_dot11mc = + cfg_get(psoc, CFG_SAP_DOT11MC); + gen->fatal_event_trigger = + cfg_get(psoc, CFG_ENABLE_FATAL_EVENT_TRIGGER); + gen->optimize_ca_event = + cfg_get(psoc, CFG_OPTIMIZE_CA_EVENT); + gen->fw_timeout_crash = + cfg_get(psoc, CFG_CRASH_FW_TIMEOUT); mlme_init_pmf_cfg(psoc, gen); + mlme_init_lpass_support_cfg(psoc, gen); } static void mlme_init_edca_ani_cfg(struct wlan_mlme_edca_params *edca_params) diff --git a/components/mlme/dispatcher/inc/cfg_mlme_generic.h b/components/mlme/dispatcher/inc/cfg_mlme_generic.h index f5b26785e5e6..667f855064eb 100644 --- a/components/mlme/dispatcher/inc/cfg_mlme_generic.h +++ b/components/mlme/dispatcher/inc/cfg_mlme_generic.h @@ -78,8 +78,389 @@ 1, \ "RTT3 enable/disable info") +/* + * + * BandCapability - Preferred band (0: Both, 1: 2.4G only, 2: 5G only) + * @Min: 0 + * @Max: 2 + * @Default: 0 + * + * This ini is used to set default band capability + * (0: Both, 1: 2.4G only, 2: 5G only) + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ +#define CFG_BAND_CAPABILITY CFG_INI_UINT( \ + "BandCapability", \ + 0, \ + 2, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "Band Capability") + +/* + * + * gPreventLinkDown - Enable to prevent bus link from going down + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * Enable to prevent bus link from going down. Useful for platforms that do not + * (yet) support link down suspend cases. + * + * Related: N/A + * + * Supported Feature: Suspend/Resume + * + * Usage: Internal + * + * + */ +#if defined(QCA_WIFI_NAPIER_EMULATION) || defined(QCA_WIFI_QCA6290) +#define CFG_PREVENT_LINK_DOWN CFG_INI_BOOL( \ + "gPreventLinkDown", \ + 1, \ + "Prevent Bus Link Down") +#else +#define CFG_PREVENT_LINK_DOWN CFG_INI_BOOL( \ + "gPreventLinkDown", \ + 0, \ + "Prevent Bus Link Down") +#endif /* QCA_WIFI_NAPIER_EMULATION */ + +/* + * + * gSelect5GHzMargin - Sets RSSI preference for 5GHz over 2.4GHz AP. + * @Min: 0 + * @Max: 60 + * @Default: 0 + * + * Prefer connecting to 5G AP even if its RSSI is lower by gSelect5GHzMargin + * dBm than 2.4G AP. This feature requires the dependent cfg.ini + * "gRoamPrefer5GHz" set to 1 + * + * Related: gRoamPrefer5GHz + * + * Supported Feature: Roaming + * + * Usage: External + * + * + */ +#define CFG_SELECT_5GHZ_MARGIN CFG_INI_UINT( \ + "gSelect5GHzMargin", \ + 0, \ + 60, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "Select 5Ghz Margin") + +/* + * + * gEnableMemDeepSleep - Sets Memory Deep Sleep on/off. + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * + * Related: None + * + * Supported Feature: General + * + * Usage: External + * + * + */ +#define CFG_ENABLE_MEM_DEEP_SLEEP CFG_INI_BOOL( \ + "gEnableMemDeepSleep", \ + 1, \ + "Enable Memory Deep Sleep") + +/* + * + * + * gEnableCckTxFirOverride - Enable/disable CCK TxFIR Override + * @Min: 0 (disabled) + * @Max: 1 (enabled) + * @Default: 0 (disabled) + * + * When operating in an 802.11b mode, this configuration item forces a 2x2 radio + * configuration into 1x for Tx and 2x for Rx (ie 1x2) for regulatory compliance + * reasons. + * + * Related: enable2x2 + * + * Supported Feature: 802.11b, 2x2 + * + * Usage: Internal/External + * + * + */ +#define CFG_ENABLE_CCK_TX_FIR_OVERRIDE CFG_INI_BOOL( \ + "gEnableCckTxFirOverride", \ + 0, \ + "Enable CCK TX FIR Override") + +/* + * + * + * gEnableForceTargetAssert - Enable/disable SSR + * @Min: 0 (disabled) + * @Max: 1 (enabled) + * @Default: 0 (disabled) + * + * This INI item is used to control subsystem restart(SSR) test framework + * Set it's value to 1 to enable APPS trigerred SSR testing + * + * Related: None + * + * Supported Feature: General + * + * Usage: Internal/External + * + * + */ +#define CFG_ENABLE_CRASH_INJECT CFG_INI_BOOL( \ + "gEnableForceTargetAssert", \ + 0, \ + "Enable Crash Inject") + +/* + * + * + * gEnableLpassSupport - Enable/disable LPASS Support + * @Min: 0 (disabled) + * @Max: 1 (enabled) + * @Default: 0 (disabled) + * + * Related: None + * + * Supported Feature: General + * + * Usage: Internal/External + * + * + */ +#ifdef WLAN_FEATURE_LPSS +#define CFG_ENABLE_LPASS_SUPPORT CFG_INI_BOOL( \ + "gEnableLpassSupport", \ + 0, \ + "Enable LPASS Support") +#else +#define CFG_ENABLE_LPASS_SUPPORT CFG_BOOL( \ + "gEnableLpassSupport", \ + 0, \ + "Enable LPASS Support") +#endif + +/* + * + * + * gEnableSelfRecovery - Enable/disable Self Recovery + * @Min: 0 (disabled) + * @Max: 1 (enabled) + * @Default: 0 (disabled) + * + * Related: None + * + * Supported Feature: General + * + * Usage: Internal/External + * + * + */ +#define CFG_ENABLE_SELF_RECOVERY CFG_INI_BOOL( \ + "gEnableSelfRecovery", \ + 0, \ + "Enable Self Recovery") + +/* + * + * + * gSapDot11mc - Enable/disable SAP 802.11mc support + * @Min: 0 (disabled) + * @Max: 1 (enabled) + * @Default: 0 (disabled) + * + * Related: None + * + * Supported Feature: General + * + * Usage: Internal/External + * + * + */ +#define CFG_SAP_DOT11MC CFG_INI_BOOL( \ + "gSapDot11mc", \ + 0, \ + "SAP 802.11mc support") + +/* + * + * + * gEnableFatalEvent - Enable/Disable BUG report in case of fatal event + * @Min: 0 (disabled) + * @Max: 1 (enabled) + * @Default: 1 (enabled) + * + * Related: None + * + * Supported Feature: General + * + * Usage: Internal/External + * + * + */ +#define CFG_ENABLE_FATAL_EVENT_TRIGGER CFG_INI_BOOL( \ + "gEnableFatalEvent", \ + 1, \ + "Enable Fatal Event Trigger") + +/* + * + * gSub20ChannelWidth - Control sub 20 channel width (5/10 Mhz) + * @Min: 0 + * @Max: 2 + * @Default: 0 + * + * This ini is used to set the sub 20 channel width. + * gSub20ChannelWidth=0: indicates do not use Sub 20 MHz bandwidth + * gSub20ChannelWidth=1: Bring up SAP/STA in 5 MHz bandwidth + * gSub20ChannelWidth=2: Bring up SAP/STA in 10 MHz bandwidth + * + * Related: None + * + * Supported Feature: 5/10 Mhz channel width support + * + * Usage: Internal/External + * + * + */ +#define CFG_SUB_20_CHANNEL_WIDTH CFG_INI_UINT( \ + "gSub20ChannelWidth", \ + 0, \ + 2, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "Sub 20 Channel Width") + +/* + * + * goptimize_chan_avoid_event - Optimize channel avoidance indication + * coming from firmware + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * Related: None + * + * Supported Feature: General + * + * Usage: Internal/External + * + * + */ +#define CFG_OPTIMIZE_CA_EVENT CFG_INI_BOOL( \ + "goptimize_chan_avoid_event", \ + 0, \ + "Optimize FW CA Event") + +/* + * + * fw_timeout_crash - Enable/Disable BUG ON + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * This ini is used to Trigger host crash when firmware fails to send the + * response to host + * fw_timeout_crash = 0 Disabled + * fw_timeout_crash = 1 Trigger host crash + * + * Related: None + * + * Supported Feature: SSR + * + * Usage: Internal/External + * + * + */ +#define CFG_CRASH_FW_TIMEOUT CFG_INI_BOOL( \ + "fw_timeout_crash", \ + 1, \ + "Enable FW Timeout Crash") + +/* + * + * gDroppedPktDisconnectTh - Sets dropped packet threshold in firmware + * @Min: 0 + * @Max: 512 + * @Default: 512 + * + * This INI is the packet drop threshold will trigger disconnect from remote + * peer. + * + * Related: None + * + * Supported Feature: connection + * + * Usage: External + * + * + */ +#define CFG_DROPPED_PKT_DISCONNECT_THRESHOLD CFG_INI_UINT( \ + "gDroppedPktDisconnectTh", \ + 0, \ + 65535, \ + 512, \ + CFG_VALUE_OR_DEFAULT, \ + "Dropped Pkt Disconnect threshold") + +/* + * + * gItoRepeatCount - sets ito repeated count + * @Min: 0 + * @Max: 5 + * @Default: 0 + * + * This ini sets the ito count in FW + * + * Usage: External + * + * + */ +#define CFG_ITO_REPEAT_COUNT CFG_INI_UINT( \ + "gItoRepeatCount", \ + 0, \ + 5, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "ITO Repeat Count") + #define CFG_GENERIC_ALL \ CFG(CFG_PMF_SA_QUERY_MAX_RETRIES) \ CFG(CFG_PMF_SA_QUERY_RETRY_INTERVAL) \ - CFG(CFG_RTT3_ENABLE) + CFG(CFG_RTT3_ENABLE) \ + CFG(CFG_BAND_CAPABILITY) \ + CFG(CFG_PREVENT_LINK_DOWN) \ + CFG(CFG_SELECT_5GHZ_MARGIN) \ + CFG(CFG_ENABLE_MEM_DEEP_SLEEP) \ + CFG(CFG_ENABLE_CCK_TX_FIR_OVERRIDE) \ + CFG(CFG_ENABLE_CRASH_INJECT) \ + CFG(CFG_ENABLE_LPASS_SUPPORT) \ + CFG(CFG_ENABLE_SELF_RECOVERY) \ + CFG(CFG_SAP_DOT11MC) \ + CFG(CFG_ENABLE_FATAL_EVENT_TRIGGER) \ + CFG(CFG_SUB_20_CHANNEL_WIDTH) \ + CFG(CFG_OPTIMIZE_CA_EVENT) \ + CFG(CFG_CRASH_FW_TIMEOUT) \ + CFG(CFG_DROPPED_PKT_DISCONNECT_THRESHOLD) \ + CFG(CFG_ITO_REPEAT_COUNT) + #endif /* __CFG_MLME_GENERIC_H */ diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 9e086531400a..5364f8a57a7d 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -24,6 +24,7 @@ #define _WLAN_MLME_STRUCT_H_ #include +#include #define CFG_PMKID_MODES_OKC (0x1) #define CFG_PMKID_MODES_PMKSA_CACHING (0x2) @@ -608,15 +609,46 @@ struct wlan_mlme_chainmask { /* struct wlan_mlme_generic - Generic CFG config items * - * @rtt3_enabled: RTT3 enable or disable info + * @band_capability: HW Band Capability - Both or 2.4G only or 5G only + * @band: Current Band - Internal variable, initialized to INI and updated later + * @select_5ghz_margin: RSSI margin to select 5Ghz over 2.4 Ghz + * @sub_20_chan_width: Sub 20Mhz Channel Width + * @ito_repeat_count: ITO Repeat Count * @pmf_sa_query_max_retries: PMF query max retries for SAP * @pmf_sa_query_retry_interval: PMF query retry interval for SAP - * + * @dropped_pkt_disconnect_thresh: Threshold for dropped pkts before disconnect + * @rtt3_enabled: RTT3 enable or disable info + * @prevent_link_down: Enable/Disable prevention of link down + * @memory_deep_sleep: Enable/Disable memory deep sleep + * @cck_tx_fir_override: Enable/Disable CCK Tx FIR Override + * @crash_inject: Enable/Disable Crash Inject + * @lpass_support: Enable/Disable LPASS Support + * @self_recovery: Enable/Disable Self Recovery + * @sap_dot11mc: Enable/Disable SAP 802.11mc support + * @fatal_event_trigger: Enable/Disable Fatal Events Trigger + * @optimize_ca_event: Enable/Disable Optimization of CA events + * @fw_timeout_crash: Enable/Disable FW Timeout Crash * */ struct wlan_mlme_generic { - bool rtt3_enabled; + enum band_info band_capability; + enum band_info band; + uint8_t select_5ghz_margin; + uint8_t sub_20_chan_width; + uint8_t ito_repeat_count; uint8_t pmf_sa_query_max_retries; uint16_t pmf_sa_query_retry_interval; + uint16_t dropped_pkt_disconnect_thresh; + bool rtt3_enabled; + bool prevent_link_down; + bool memory_deep_sleep; + bool cck_tx_fir_override; + bool crash_inject; + bool lpass_support; + bool self_recovery; + bool sap_dot11mc; + bool fatal_event_trigger; + bool optimize_ca_event; + bool fw_timeout_crash; }; /* diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 5205aace4d4a..f0042fa75186 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -4800,7 +4800,7 @@ enum hdd_link_speed_rpt_type { * This INI item is used to control subsystem restart(SSR) test framework * Set it's value to 1 to enable APPS trigerred SSR testing */ -#define CFG_ENABLE_CRASH_INJECT "gEnableForceTargetAssert" +#define CFG_ENABLE_CRASH_INJECT_NAME "gEnableForceTargetAssert" #define CFG_ENABLE_CRASH_INJECT_MIN (0) #define CFG_ENABLE_CRASH_INJECT_MAX (1) #define CFG_ENABLE_CRASH_INJECT_DEFAULT (0) @@ -5873,13 +5873,13 @@ enum hdd_link_speed_rpt_type { #endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */ #ifdef WLAN_FEATURE_LPSS -#define CFG_ENABLE_LPASS_SUPPORT "gEnableLpassSupport" +#define CFG_ENABLE_LPASS_SUPPORT_NAME "gEnableLpassSupport" #define CFG_ENABLE_LPASS_SUPPORT_DEFAULT (0) #define CFG_ENABLE_LPASS_SUPPORT_MIN (0) #define CFG_ENABLE_LPASS_SUPPORT_MAX (1) #endif -#define CFG_ENABLE_SELF_RECOVERY "gEnableSelfRecovery" +#define CFG_ENABLE_SELF_RECOVERY_NAME "gEnableSelfRecovery" #define CFG_ENABLE_SELF_RECOVERY_MIN (0) #define CFG_ENABLE_SELF_RECOVERY_MAX (1) #define CFG_ENABLE_SELF_RECOVERY_DEFAULT (0) @@ -6086,7 +6086,7 @@ enum hdd_link_speed_rpt_type { #define CFG_GO_11AC_OVERRIDE_MAX (1) #define CFG_GO_11AC_OVERRIDE_DEFAULT (1) -#define CFG_SAP_DOT11MC "gSapDot11mc" +#define CFG_SAP_DOT11MC_NAME "gSapDot11mc" #define CFG_SAP_DOT11MC_MIN (0) #define CFG_SAP_DOT11MC_MAX (1) #define CFG_SAP_DOT11MC_DEFAULT (0) @@ -6551,7 +6551,7 @@ enum hdd_link_speed_rpt_type { * Enable/Disable to initiate BUG report in case of fatal event * Default: Enable */ -#define CFG_ENABLE_FATAL_EVENT_TRIGGER "gEnableFatalEvent" +#define CFG_ENABLE_FATAL_EVENT_TRIGGER_NAME "gEnableFatalEvent" #define CFG_ENABLE_FATAL_EVENT_TRIGGER_MIN (0) #define CFG_ENABLE_FATAL_EVENT_TRIGGER_MAX (1) #define CFG_ENABLE_FATAL_EVENT_TRIGGER_DEFAULT (1) diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 071d2b3f75ce..98aed220a9c7 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -2362,7 +2362,7 @@ struct reg_table_entry g_registry_table[] = { CFG_MAX_CONCURRENT_CONNECTIONS_MIN, CFG_MAX_CONCURRENT_CONNECTIONS_MAX), - REG_VARIABLE(CFG_ENABLE_CRASH_INJECT, WLAN_PARAM_Integer, + REG_VARIABLE(CFG_ENABLE_CRASH_INJECT_NAME, WLAN_PARAM_Integer, struct hdd_config, crash_inject_enabled, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_ENABLE_CRASH_INJECT_DEFAULT, @@ -2435,7 +2435,7 @@ struct reg_table_entry g_registry_table[] = { #endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */ #ifdef WLAN_FEATURE_LPSS - REG_VARIABLE(CFG_ENABLE_LPASS_SUPPORT, WLAN_PARAM_Integer, + REG_VARIABLE(CFG_ENABLE_LPASS_SUPPORT_NAME, WLAN_PARAM_Integer, struct hdd_config, enable_lpass_support, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_ENABLE_LPASS_SUPPORT_DEFAULT, @@ -2443,7 +2443,7 @@ struct reg_table_entry g_registry_table[] = { CFG_ENABLE_LPASS_SUPPORT_MAX), #endif - REG_VARIABLE(CFG_ENABLE_SELF_RECOVERY, WLAN_PARAM_Integer, + REG_VARIABLE(CFG_ENABLE_SELF_RECOVERY_NAME, WLAN_PARAM_Integer, struct hdd_config, enableSelfRecovery, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_ENABLE_SELF_RECOVERY_DEFAULT, @@ -2552,7 +2552,7 @@ struct reg_table_entry g_registry_table[] = { CFG_ENABLE_RAMDUMP_COLLECTION_MIN, CFG_ENABLE_RAMDUMP_COLLECTION_MAX), - REG_VARIABLE(CFG_SAP_DOT11MC, WLAN_PARAM_Integer, + REG_VARIABLE(CFG_SAP_DOT11MC_NAME, WLAN_PARAM_Integer, struct hdd_config, sap_dot11mc, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_SAP_DOT11MC_DEFAULT, @@ -2800,7 +2800,7 @@ struct reg_table_entry g_registry_table[] = { CFG_ROAM_SCAN_TRIGGER_REASON_BITMASK_MIN, CFG_ROAM_SCAN_TRIGGER_REASON_BITMASK_MAX), - REG_VARIABLE(CFG_ENABLE_FATAL_EVENT_TRIGGER, WLAN_PARAM_Integer, + REG_VARIABLE(CFG_ENABLE_FATAL_EVENT_TRIGGER_NAME, WLAN_PARAM_Integer, struct hdd_config, enable_fatal_event, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,