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:
@@ -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
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user