qcacld-3.0: Add support for TCP delayed ack in driver

qcacld-2.0 to qcacld-3.0 propagation

This change adds support for driver supported TCP
delayed ack to increase TCP RX performance in
third-party platform which does't support kernel
TCP delayed ack feature.

TCP delayed ack is dependent on count and timer
values. Whatever is achieved first will trigger
sending TCP ack.

This feature can be controlled through ini values.
gDriverDelAckTimerValue - timer value in ms
gDriverDelAckPktCount - delayed ack count
gDriverDelAckEnable - enable/disable feature

Change-Id: I8105bbb90965295b5a4aefeb00d344a90155974d
CRs-fixed: 2414224
This commit is contained in:
Tiger Yu
2019-04-25 10:46:53 +08:00
committed by nshrivas
parent c3a3d5572c
commit e40e7836a5
13 changed files with 1359 additions and 6 deletions

View File

@@ -619,6 +619,135 @@
"High Threshold inorder to trigger High Tx Tp")
#endif /*WLAN_FEATURE_DP_BUS_BANDWIDTH*/
#ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
/*
* <ini>
* gDriverDelAckHighThreshold - High Threshold inorder to trigger TCP
* delay ack feature in the host.
* @Min: 0
* @Max: 70000
* @Default: 300
*
* This ini specifies the threshold of RX packets transmitted
* over a period of 100 ms beyond which TCP delay ack can be enabled
* to improve TCP RX throughput requirement.
*
* Supported Feature: Tcp Delayed Ack in the host
*
* Usage: Internal
*
* </ini>
*/
#define CFG_DP_DRIVER_TCP_DELACK_HIGH_THRESHOLD \
CFG_INI_UINT( \
"gDriverDelAckHighThreshold", \
0, \
70000, \
300, \
CFG_VALUE_OR_DEFAULT, \
"TCP delack high threshold")
/*
* <ini>
* gDriverDelAckLowThreshold - Low Threshold inorder to disable TCP
* delay ack feature in the host.
* @Min: 0
* @Max: 70000
* @Default: 100
*
* This ini is used to mention the Low Threshold inorder to disable TCP Del
* Ack feature in the host.
*
* Supported Feature: Tcp Delayed Ack in the host
*
* Usage: Internal
*
* </ini>
*/
#define CFG_DP_DRIVER_TCP_DELACK_LOW_THRESHOLD \
CFG_INI_UINT( \
"gDriverDelAckLowThreshold", \
0, \
70000, \
100, \
CFG_VALUE_OR_DEFAULT, \
"TCP delack low threshold")
/*
* <ini>
* gDriverDelAckTimerValue - Timeout value (ms) to send out all TCP del
* ack frames
* @Min: 1
* @Max: 15
* @Default: 3
*
* This ini specifies the time out value to send out all pending TCP delay
* ACK frames.
*
* Supported Feature: Tcp Delayed Ack in the host
*
* Usage: Internal
*
* </ini>
*/
#define CFG_DP_DRIVER_TCP_DELACK_TIMER_VALUE \
CFG_INI_UINT( \
"gDriverDelAckTimerValue", \
1, \
15, \
3, \
CFG_VALUE_OR_DEFAULT, \
"Send out all TCP Del Acks if time out")
/*
* <ini>
* gDriverDelAckPktCount - The maximum number of TCP delay ack frames
* @Min: 0
* @Max: 50
* @Default: 20
*
* This ini specifies the maximum number of TCP delayed ack frames.
*
* Supported Feature: Tcp Delayed Ack in the host
*
* Usage: Internal
*
* </ini>
*/
#define CFG_DP_DRIVER_TCP_DELACK_PKT_CNT \
CFG_INI_UINT( \
"gDriverDelAckPktCount", \
0, \
50, \
20, \
CFG_VALUE_OR_DEFAULT, \
"No of TCP Del ACK count")
/*
* <ini>
* gDriverDelAckEnable - Control to enable Dynamic Configuration of Tcp
* Delayed Ack in the host.
* @Default: true
*
* This ini is used to enable Dynamic Configuration of Tcp Delayed Ack
* in the host.
*
* Related: gDriverDelAckHighThreshold, gDriverDelAckLowThreshold,
* gDriverDelAckPktCount, gDriverDelAckTimerValue
*
* Supported Feature: Tcp Delayed Ack in the host
*
* Usage: Internal
*
* </ini>
*/
#define CFG_DP_DRIVER_TCP_DELACK_ENABLE \
CFG_INI_BOOL( \
"gDriverDelAckEnable", \
true, \
"Enable tcp del ack in the driver")
#endif
/*
* <ini>
* NAPI_CPU_AFFINITY_MASK - CPU mask to affine NAPIs
@@ -1064,6 +1193,17 @@
#define CFG_HDD_DP_BUS_BANDWIDTH
#endif
#ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
#define CFG_DP_DRIVER_TCP_DELACK \
CFG(CFG_DP_DRIVER_TCP_DELACK_HIGH_THRESHOLD) \
CFG(CFG_DP_DRIVER_TCP_DELACK_LOW_THRESHOLD) \
CFG(CFG_DP_DRIVER_TCP_DELACK_TIMER_VALUE) \
CFG(CFG_DP_DRIVER_TCP_DELACK_PKT_CNT) \
CFG(CFG_DP_DRIVER_TCP_DELACK_ENABLE)
#else
#define CFG_DP_DRIVER_TCP_DELACK
#endif
#define CFG_HDD_DP_ALL \
CFG(CFG_DP_NAPI_CE_CPU_MASK) \
CFG(CFG_DP_RX_THREAD_CPU_MASK) \
@@ -1083,6 +1223,7 @@
CFG(CFG_DP_HTC_WMI_CREDIT_CNT) \
CFG_DP_ENABLE_FASTPATH_ALL \
CFG_HDD_DP_BUS_BANDWIDTH \
CFG_DP_DRIVER_TCP_DELACK \
CFG_HDD_DP_LEGACY_TX_FLOW \
CFG_DP_ENABLE_NUD_TRACKING_ALL \
CFG_DP_CONFIG_DP_TRACE_ALL

View File

@@ -173,6 +173,14 @@ struct hdd_config {
bool enable_tcp_param_update;
#endif /*WLAN_FEATURE_DP_BUS_BANDWIDTH*/
#ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
bool del_ack_enable;
uint32_t del_ack_threshold_high;
uint32_t del_ack_threshold_low;
uint16_t del_ack_timer_value;
uint16_t del_ack_pkt_count;
#endif
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
uint32_t tx_flow_low_watermark;
uint32_t tx_flow_hi_watermark_offset;