diff options
| author | Leo Chang <schang@qca.qualcomm.com> | 2014-09-25 16:01:55 -0700 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-09-30 13:26:52 -0700 |
| commit | 1645f7cc87f6a44b7ed69b7415a8f193c97b4519 (patch) | |
| tree | e9695ad66206fb18e42d59d0b48591754e2df10e | |
| parent | b218ebd49fcf8e2a6be870f913f822dadd05ed7c (diff) | |
qca_cld: improve single session max tx performance
Between host and firmware, tx descriptor is on the flight.
This means before firmware start to drop packet, host driver may
pumping more packet to firmware without packet dropping.
MCC is already balanced with existing threshold.
Single session case this can be applicable.
Change-Id: Ifc6f3291728f97a631e7ca4da0e8a3950c2b093d
CRs-fixed: 730448
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 27 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 21 | ||||
| -rwxr-xr-x | CORE/HDD/src/wlan_hdd_main.c | 8 |
3 files changed, 52 insertions, 4 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index 46b31db7fc86..74e47cefa6d1 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -2495,6 +2495,30 @@ This feature requires the dependent cfg.ini "gRoamPrefer5GHz" set to 1 */ #define CFG_SET_TXPOWER_LIMIT5G_DEFAULT ( 15 ) #ifdef QCA_LL_TX_FLOW_CT +/* Default, single interface case flow control parameters */ +#define CFG_LL_TX_FLOW_LWM "TxFlowLowWaterMark" +#define CFG_LL_TX_FLOW_LWM_MIN ( 0 ) +#define CFG_LL_TX_FLOW_LWM_MAX ( 1000 ) +#if defined(CONFIG_HL_SUPPORT) +#define CFG_LL_TX_FLOW_LWM_DEFAULT ( 0 ) +#else +#define CFG_LL_TX_FLOW_LWM_DEFAULT ( 300 ) +#endif /* defined(CONFIG_HL_SUPPORT) */ + +#define CFG_LL_TX_FLOW_HWM_OFFSET "TxFlowHighWaterMarkOffset" +#define CFG_LL_TX_FLOW_HWM_OFFSET_MIN ( 0 ) +#define CFG_LL_TX_FLOW_HWM_OFFSET_MAX ( 300 ) +#if defined(CONFIG_HL_SUPPORT) +#define CFG_LL_TX_FLOW_HWM_OFFSET_DEFAULT ( 0 ) +#else +#define CFG_LL_TX_FLOW_HWM_OFFSET_DEFAULT ( 94 ) +#endif /* defined(CONFIG_HL_SUPPORT) */ + +#define CFG_LL_TX_FLOW_MAX_Q_DEPTH "TxFlowMaxQueueDepth" +#define CFG_LL_TX_FLOW_MAX_Q_DEPTH_MIN ( 400 ) +#define CFG_LL_TX_FLOW_MAX_Q_DEPTH_MAX ( 3500 ) +#define CFG_LL_TX_FLOW_MAX_Q_DEPTH_DEFAULT ( 1500 ) + #define CFG_LL_TX_LBW_FLOW_LWM "TxLbwFlowLowWaterMark" #define CFG_LL_TX_LBW_FLOW_LWM_MIN ( 0 ) #define CFG_LL_TX_LBW_FLOW_LWM_MAX ( 1000 ) @@ -3294,6 +3318,9 @@ typedef struct v_BOOL_t fRegChangeDefCountry; v_U8_t acsScanBandPreference; #ifdef QCA_LL_TX_FLOW_CT + v_U32_t TxFlowLowWaterMark; + v_U32_t TxFlowHighWaterMarkOffset; + v_U32_t TxFlowMaxQueueDepth; v_U32_t TxLbwFlowLowWaterMark; v_U32_t TxLbwFlowHighWaterMarkOffset; v_U32_t TxLbwFlowMaxQueueDepth; diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index 0b9d91729990..98f44e7b0d65 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -3460,6 +3460,27 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_SAP_SCAN_BAND_PREFERENCE_MAX ), #ifdef QCA_LL_TX_FLOW_CT + REG_VARIABLE( CFG_LL_TX_FLOW_LWM, WLAN_PARAM_Integer, + hdd_config_t, TxFlowLowWaterMark, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LL_TX_FLOW_LWM_DEFAULT, + CFG_LL_TX_FLOW_LWM_MIN, + CFG_LL_TX_FLOW_LWM_MAX ), + + REG_VARIABLE( CFG_LL_TX_FLOW_HWM_OFFSET, WLAN_PARAM_Integer, + hdd_config_t, TxFlowHighWaterMarkOffset, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LL_TX_FLOW_HWM_OFFSET_DEFAULT, + CFG_LL_TX_FLOW_HWM_OFFSET_MIN, + CFG_LL_TX_FLOW_HWM_OFFSET_MAX ), + + REG_VARIABLE( CFG_LL_TX_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer, + hdd_config_t, TxFlowMaxQueueDepth, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LL_TX_FLOW_MAX_Q_DEPTH_DEFAULT, + CFG_LL_TX_FLOW_MAX_Q_DEPTH_MIN, + CFG_LL_TX_FLOW_MAX_Q_DEPTH_MAX ), + REG_VARIABLE( CFG_LL_TX_LBW_FLOW_LWM, WLAN_PARAM_Integer, hdd_config_t, TxLbwFlowLowWaterMark, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 334b7fb9006a..6e2ea8089c68 100755 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -9912,12 +9912,12 @@ void hdd_dump_concurrency_info(hdd_context_t *pHddCtx) if (!preAdapterChannel) { pAdapter->tx_flow_low_watermark = - pHddCtx->cfg_ini->TxHbwFlowLowWaterMark; + pHddCtx->cfg_ini->TxFlowLowWaterMark; pAdapter->tx_flow_high_watermark_offset = - pHddCtx->cfg_ini->TxHbwFlowHighWaterMarkOffset; + pHddCtx->cfg_ini->TxFlowHighWaterMarkOffset; WLANTL_SetAdapterMaxQDepth(pHddCtx->pvosContext, pAdapter->sessionId, - pHddCtx->cfg_ini->TxHbwFlowMaxQueueDepth); + pHddCtx->cfg_ini->TxFlowMaxQueueDepth); /* Temporary set log level as error * TX Flow control feature settled down, will lower log level */ hddLog(VOS_TRACE_LEVEL_ERROR, @@ -9927,7 +9927,7 @@ void hdd_dump_concurrency_info(hdd_context_t *pHddCtx) pAdapter->tx_flow_low_watermark, pAdapter->tx_flow_low_watermark + pAdapter->tx_flow_high_watermark_offset, - pHddCtx->cfg_ini->TxHbwFlowMaxQueueDepth); + pHddCtx->cfg_ini->TxFlowMaxQueueDepth); preAdapterChannel = targetChannel; preAdapterContext = pAdapter; } |
