diff --git a/core/hdd/inc/hdd_dp_cfg.h b/core/hdd/inc/hdd_dp_cfg.h index 52b2d507ca94..f0bd14b46c82 100644 --- a/core/hdd/inc/hdd_dp_cfg.h +++ b/core/hdd/inc/hdd_dp_cfg.h @@ -831,6 +831,76 @@ #define CFG_DP_ENABLE_TCP_PARAM_UPDATE \ CFG_INI_BOOL("enable_tcp_param_update", \ false, "configure TCP param through Wi-Fi HAL") +/* + * + * + * Enable/disable DPTRACE + * Enabling this might have performace impact. + * + * Config DPTRACE + * The sequence of params is important. If some param is missing, defaults are + * considered. + * Param 1: Enable/Disable DP Trace live mode (uint8_t) + * Param 2: DP Trace live mode high bandwidth thresh.(uint8_t) + * (packets/second) beyond which DP Trace is disabled. Decimal Val. + * MGMT, DHCP, EAPOL, ARP pkts are not counted. ICMP and Data are. + * Param 3: Default Verbosity (0-4) + * Param 4: Proto Bitmap (uint8_t). Decimal Value. + * (decimal 62 = 0x3e) + * e.g., to disable live mode, use the following param in the ini file. + * gDptraceConfig = 0 + * e.g., to enable dptrace live mode and set the thresh as 6, + * use the following param in the ini file. + * gDptraceConfig = 1, 6 + * + * + */ +#ifdef CONFIG_DP_TRACE +#define CFG_DP_ENABLE_DP_TRACE \ + CFG_INI_BOOL("enable_dp_trace", \ + true, "Ctrl to enable dp trace feature") + +#define CFG_DP_DP_TRACE_CONFIG \ + CFG_INI_STRING( \ + "gDptraceConfig", \ + 1, \ + 20, \ + "1, 6, 2, 126", \ + "dp trace configuration string") +#define CFG_DP_CONFIG_DP_TRACE_ALL \ + CFG(CFG_DP_ENABLE_DP_TRACE) \ + CFG(CFG_DP_DP_TRACE_CONFIG) +#else +#define CFG_DP_CONFIG_DP_TRACE_ALL +#endif + +/* + * + * gEnableNUDTracking - Will enable or disable NUD tracking within driver + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * This ini is used to enable or disable NUD tracking within driver + * + * Related: None + * + * Supported Feature: STA + * + * Usage: External + * + * + */ +#ifdef WLAN_NUD_TRACKING +#define CFG_DP_ENABLE_NUD_TRACKING \ + CFG_INI_BOOL("gEnableNUDTracking", \ + true, "Ctrl to enable nud tracking") + +#define CFG_DP_ENABLE_NUD_TRACKING_ALL \ + CFG(CFG_DP_ENABLE_NUD_TRACKING) +#else +#define CFG_DP_ENABLE_NUD_TRACKING_ALL +#endif #ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL #define CFG_HDD_DP_LEGACY_TX_FLOW \ @@ -864,7 +934,7 @@ #define CFG_HDD_DP_MSM_PLATFORM #endif -#define CFG_HDD_DP \ +#define CFG_HDD_DP_ALL \ CFG(CFG_DP_NAPI_CE_CPU_MASK) \ CFG(CFG_DP_RX_THREAD_CPU_MASK) \ CFG(CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST) \ @@ -876,9 +946,9 @@ CFG(CFG_DP_FILTER_MULTICAST_REPLAY) \ CFG(CFG_DP_RX_WAKELOCK_TIMEOUT) \ CFG(CFG_DP_NUM_DP_RX_THREADS) \ - CFG_DP_ENABLE_FASTPATH_ALL -#define CFG_HDD_DP_ALL \ - CFG_HDD_DP \ + CFG_DP_ENABLE_FASTPATH_ALL \ CFG_HDD_DP_MSM_PLATFORM \ - CFG_HDD_DP_LEGACY_TX_FLOW + CFG_HDD_DP_LEGACY_TX_FLOW \ + CFG_DP_ENABLE_NUD_TRACKING_ALL \ + CFG_DP_CONFIG_DP_TRACE_ALL #endif diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index aa0fc383680e..6a08c136b48b 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -90,31 +90,6 @@ struct hdd_context; #define CFG_ENABLE_CONNECTED_SCAN_MAX (1) #define CFG_ENABLE_CONNECTED_SCAN_DEFAULT (1) -#ifdef WLAN_NUD_TRACKING -/* - * - * gEnableNUDTracking - Will enable or disable NUD tracking within driver - * @Min: 0 - * @Max: 1 - * @Default: 1 - * - * This ini is used to enable or disable NUD tracking within driver - * - * Related: None - * - * Supported Feature: STA - * - * Usage: External - * - * - */ - -#define CFG_ENABLE_NUD_TRACKING_NAME "gEnableNUDTracking" -#define CFG_ENABLE_NUD_TRACKING_MIN (0) -#define CFG_ENABLE_NUD_TRACKING_MAX (1) -#define CFG_ENABLE_NUD_TRACKING_DEFAULT (1) -#endif - /* * * gOperatingChannel- Default STA operating channel @@ -133,7 +108,6 @@ struct hdd_context; * * */ - #define CFG_OPERATING_CHANNEL_NAME "gOperatingChannel" #define CFG_OPERATING_CHANNEL_MIN (0) #define CFG_OPERATING_CHANNEL_MAX (14) @@ -4396,23 +4370,7 @@ enum hdd_link_speed_rpt_type { /* Default verbosity, in case its missing in gDptraceConfig string*/ #define DP_TRACE_CONFIG_DEFAULT_VERBOSTY QDF_DP_TRACE_VERBOSITY_LOW -/* - * Config DPTRACE - * The sequence of params is important. If some param is missing, defaults are - * considered. - * Param 1: Enable/Disable DP Trace live mode (uint8_t) - * Param 2: DP Trace live mode high bandwidth thresh.(uint8_t) - * (packets/second) beyond which DP Trace is disabled. Decimal Val. - * MGMT, DHCP, EAPOL, ARP pkts are not counted. ICMP and Data are. - * Param 3: Default Verbosity (0-4) - * Param 4: Proto Bitmap (uint8_t). Decimal Value. - * (decimal 62 = 0x3e) - * e.g., to disable live mode, use the following param in the ini file. - * gDptraceConfig = 0 - * e.g., to enable dptrace live mode and set the thresh as 6, - * use the following param in the ini file. - * gDptraceConfig = 1, 6 - */ + #define CFG_ENABLE_DP_TRACE_CONFIG "gDptraceConfig" #define CFG_ENABLE_DP_TRACE_CONFIG_DEFAULT "1, 6, 2, 126" #endif @@ -6159,9 +6117,6 @@ struct hdd_config { DECLARE_BITMAP(bExplicitCfg, MAX_CFG_INI_ITEMS); /* Config parameters */ -#ifdef WLAN_NUD_TRACKING - bool enable_nud_tracking; -#endif bool enable_connected_scan; uint8_t OperatingChannel; bool Is11dSupportEnabled; @@ -6451,10 +6406,6 @@ struct hdd_config { uint32_t roam_bg_scan_client_bitmap; bool apf_enabled; -#ifdef CONFIG_DP_TRACE - bool enable_dp_trace; - uint8_t dp_trace_config[DP_TRACE_CONFIG_STRING_LENGTH]; -#endif bool adaptive_dwell_mode_enabled; enum scan_dwelltime_adaptive_mode scan_adaptive_dwell_mode; enum scan_dwelltime_adaptive_mode scan_adaptive_dwell_mode_nc; @@ -6604,6 +6555,13 @@ struct hdd_config { bool multicast_replay_filter; uint32_t rx_wakelock_timeout; uint8_t num_dp_rx_threads; +#ifdef CONFIG_DP_TRACE + bool enable_dp_trace; + uint8_t dp_trace_config[DP_TRACE_CONFIG_STRING_LENGTH]; +#endif +#ifdef WLAN_NUD_TRACKING + bool enable_nud_tracking; +#endif }; #define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var)) diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 371ab0ca1e59..0334cca7c6bc 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -346,15 +346,6 @@ cb_notify_set_roam_scan_hi_rssi_scan_params(struct hdd_context *hdd_ctx, struct reg_table_entry g_registry_table[] = { -#ifdef WLAN_NUD_TRACKING - REG_VARIABLE(CFG_ENABLE_NUD_TRACKING_NAME, WLAN_PARAM_Integer, - struct hdd_config, enable_nud_tracking, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_NUD_TRACKING_DEFAULT, - CFG_ENABLE_NUD_TRACKING_MIN, - CFG_ENABLE_NUD_TRACKING_MAX), -#endif - REG_VARIABLE(CFG_ENABLE_CONNECTED_SCAN_NAME, WLAN_PARAM_Integer, struct hdd_config, enable_connected_scan, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -1770,20 +1761,6 @@ struct reg_table_entry g_registry_table[] = { CFG_CREATE_BUG_REPORT_FOR_SCAN_DISABLE, CFG_CREATE_BUG_REPORT_FOR_SCAN_ENABLE), -#ifdef CONFIG_DP_TRACE - REG_VARIABLE(CFG_ENABLE_DP_TRACE, WLAN_PARAM_Integer, - struct hdd_config, enable_dp_trace, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_ENABLE_DP_TRACE_DEFAULT, - CFG_ENABLE_DP_TRACE_MIN, - CFG_ENABLE_DP_TRACE_MAX), - - REG_VARIABLE_STRING(CFG_ENABLE_DP_TRACE_CONFIG, WLAN_PARAM_String, - struct hdd_config, dp_trace_config, - VAR_FLAGS_OPTIONAL, - (void *) CFG_ENABLE_DP_TRACE_CONFIG_DEFAULT), -#endif - REG_VARIABLE(CFG_ADAPTIVE_SCAN_DWELL_MODE_NAME, WLAN_PARAM_Integer, struct hdd_config, scan_adaptive_dwell_mode, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 0424394a3b63..a661344f9c2a 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -2782,11 +2782,46 @@ static void hdd_set_rx_mode_value(struct hdd_context *hdd_ctx) hdd_ctx->rps, hdd_ctx->dynamic_rps); } +#ifdef CONFIG_DP_TRACE +static void +hdd_dp_dp_trace_cfg_update(struct hdd_config *config, + struct wlan_objmgr_psoc *psoc) +{ + qdf_size_t array_out_size; + + config->enable_dp_trace = cfg_get(psoc, CFG_DP_ENABLE_DP_TRACE); + qdf_uint8_array_parse(cfg_get(psoc, CFG_DP_DP_TRACE_CONFIG), + config->dp_trace_config, + sizeof(config->dp_trace_config), &array_out_size); +} +#else +static void +hdd_dp_dp_trace_cfg_update(struct hdd_config *config, + struct wlan_objmgr_psoc *psoc) +{ +} +#endif + +#ifdef WLAN_NUD_TRACKING +static void +hdd_dp_nud_tracking_cfg_update(struct hdd_config *config, + struct wlan_objmgr_psoc *psoc) +{ + config->enable_nud_tracking = cfg_get(psoc, CFG_DP_ENABLE_NUD_TRACKING); +} +#else +static void +hdd_dp_nud_tracking_cfg_update(struct hdd_config *config, + struct wlan_objmgr_psoc *psoc) +{ +} +#endif + void hdd_dp_cfg_update(struct wlan_objmgr_psoc *psoc, struct hdd_context *hdd_ctx) { struct hdd_config *config; - qdf_size_t cpu_map_list_len; + qdf_size_t array_out_size; config = hdd_ctx->config; hdd_ini_tx_flow_control(config, psoc); @@ -2798,7 +2833,7 @@ void hdd_dp_cfg_update(struct wlan_objmgr_psoc *psoc, cfg_get(psoc, CFG_DP_RX_THREAD_CPU_MASK); qdf_uint8_array_parse(cfg_get(psoc, CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST), config->cpu_map_list, - sizeof(config->cpu_map_list), &cpu_map_list_len); + sizeof(config->cpu_map_list), &array_out_size); config->tx_orphan_enable = cfg_get(psoc, CFG_DP_TX_ORPHAN_ENABLE); config->rx_mode = cfg_get(psoc, CFG_DP_RX_MODE); hdd_set_rx_mode_value(hdd_ctx); @@ -2807,4 +2842,6 @@ void hdd_dp_cfg_update(struct wlan_objmgr_psoc *psoc, config->rx_wakelock_timeout = cfg_get(psoc, CFG_DP_RX_WAKELOCK_TIMEOUT); config->num_dp_rx_threads = cfg_get(psoc, CFG_DP_NUM_DP_RX_THREADS); + hdd_dp_dp_trace_cfg_update(config, psoc); + hdd_dp_nud_tracking_cfg_update(config, psoc); }