diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index f195519b337a..cd499839e0a9 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -9984,6 +9984,28 @@ enum dot11p_mode { #define CFG_CE_SERVICE_MAX_YIELD_TIME_MAX (10) #define CFG_CE_SERVICE_MAX_YIELD_TIME_DEFAULT (10) +/* + * + * ce_service_max_rx_ind_flush - Control to set ce service max rx ind flush + * + * @Min: 1 + * @Max: 32 + * @Default: 1 + * + * This ini is used to set ce service max rx ind flush + * + * Supported Feature: NAPI + * + * Usage: Internal + * + * + */ +#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_NAME "ce_service_max_rx_ind_flush" +#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MIN (1) +#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MAX (32) +#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_DEFAULT (32) + + /* List of RPS CPU maps for different rx queues registered by WLAN driver * Ref - Kernel/Documentation/networking/scaling.txt * RPS CPU map for a particular RX queue, selects CPU(s) for bottom half @@ -14810,6 +14832,7 @@ struct hdd_config { uint8_t dot11p_mode; uint8_t rx_mode; uint8_t ce_service_max_yield_time; + uint8_t ce_service_max_rx_ind_flush; uint8_t cpu_map_list[CFG_RPS_RX_QUEUE_CPU_MAP_LIST_LEN]; #ifdef FEATURE_WLAN_EXTSCAN bool extscan_enabled; diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 1146e24b712c..ebf07e4f1222 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -4151,6 +4151,13 @@ struct reg_table_entry g_registry_table[] = { CFG_CE_SERVICE_MAX_YIELD_TIME_MIN, CFG_CE_SERVICE_MAX_YIELD_TIME_MAX), + REG_VARIABLE(CFG_CE_SERVICE_MAX_RX_IND_FLUSH_NAME, WLAN_PARAM_Integer, + struct hdd_config, ce_service_max_rx_ind_flush, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_CE_SERVICE_MAX_RX_IND_FLUSH_DEFAULT, + CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MIN, + CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MAX), + REG_VARIABLE_STRING(CFG_RPS_RX_QUEUE_CPU_MAP_LIST_NAME, WLAN_PARAM_String, struct hdd_config, cpu_map_list, @@ -6858,6 +6865,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx) hdd_debug("Name = [%s] value = [%d]", CFG_CE_SERVICE_MAX_YIELD_TIME_NAME, hdd_ctx->config->ce_service_max_yield_time); + hdd_debug("Name = [%s] value = [%d]", + CFG_CE_SERVICE_MAX_RX_IND_FLUSH_NAME, + hdd_ctx->config->ce_service_max_rx_ind_flush); hdd_debug("Name = [%s] Value = [%u]", CFG_CE_CLASSIFY_ENABLE_NAME, hdd_ctx->config->ce_classify_enabled); diff --git a/core/hdd/src/wlan_hdd_driver_ops.c b/core/hdd/src/wlan_hdd_driver_ops.c index 9c1bfaea6a46..b04ebfded7b2 100644 --- a/core/hdd/src/wlan_hdd_driver_ops.c +++ b/core/hdd/src/wlan_hdd_driver_ops.c @@ -263,7 +263,8 @@ int hdd_hif_open(struct device *dev, void *bdev, const struct hif_bus_id *bid, hif_set_ce_service_max_yield_time(hif_ctx, hdd_ctx->config->ce_service_max_yield_time); pmo_ucfg_psoc_set_hif_handle(hdd_ctx->hdd_psoc, hif_ctx); - + hif_set_ce_service_max_rx_ind_flush(hif_ctx, + hdd_ctx->config->ce_service_max_rx_ind_flush); return 0; err_hif_close: