mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
qcacmn: Add support for TCP delayed ack in driver
qcacld-2.0 to qcacmn propagation This change adds support for driver supported TCP delayed ack to increase TCP RX performance in third-party platform which don'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: 2414231
This commit is contained in:
parent
dd4dc88b83
commit
6f1fc0070f
5 changed files with 98 additions and 5 deletions
|
|
@ -620,4 +620,55 @@ static inline void cdp_deregister_packetdump_cb(ol_txrx_soc_handle soc)
|
|||
if (soc->ops->misc_ops->unregister_pktdump_cb)
|
||||
return soc->ops->misc_ops->unregister_pktdump_cb();
|
||||
}
|
||||
|
||||
/**
|
||||
* cdp_pdev_reset_driver_del_ack() - reset driver TCP delayed ack flag
|
||||
* @soc - data path soc handle
|
||||
* @pdev - data path device instance
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static inline void cdp_pdev_reset_driver_del_ack(void *psoc,
|
||||
struct cdp_pdev *pdev)
|
||||
{
|
||||
ol_txrx_soc_handle soc = psoc;
|
||||
|
||||
if (!soc || !soc->ops || !soc->ops->misc_ops) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
|
||||
"%s invalid instance", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (soc->ops->misc_ops->pdev_reset_driver_del_ack)
|
||||
return soc->ops->misc_ops->pdev_reset_driver_del_ack(pdev);
|
||||
}
|
||||
|
||||
/*
|
||||
* cdp_vdev_set_driver_del_ack_enable() - set driver delayed ack enabled flag
|
||||
* @soc - data path soc handle
|
||||
* @vdev_id: vdev id
|
||||
* @rx_packets: number of rx packets
|
||||
* @time_in_ms: time in ms
|
||||
* @high_th: high threshold
|
||||
* @low_th: low threshold
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static inline void cdp_vdev_set_driver_del_ack_enable(ol_txrx_soc_handle soc,
|
||||
uint8_t vdev_id,
|
||||
unsigned long rx_packets,
|
||||
uint32_t time_in_ms,
|
||||
uint32_t high_th,
|
||||
uint32_t low_th)
|
||||
{
|
||||
if (!soc || !soc->ops || !soc->ops->misc_ops) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
|
||||
"%s invalid instance", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (soc->ops->misc_ops->vdev_set_driver_del_ack_enable)
|
||||
return soc->ops->misc_ops->vdev_set_driver_del_ack_enable(
|
||||
vdev_id, rx_packets, time_in_ms, high_th, low_th);
|
||||
}
|
||||
#endif /* _CDP_TXRX_MISC_H_ */
|
||||
|
|
|
|||
|
|
@ -291,6 +291,15 @@ struct txrx_pdev_cfg_param_t {
|
|||
/* Start queue offset in percentage */
|
||||
uint32_t tx_flow_start_queue_offset;
|
||||
|
||||
#ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
|
||||
/* enable the tcp delay ack feature in the driver */
|
||||
bool del_ack_enable;
|
||||
/* timeout if no more tcp ack frames, unit is ms */
|
||||
uint16_t del_ack_timer_value;
|
||||
/* the maximum number of replaced tcp ack frames */
|
||||
uint16_t del_ack_pkt_count;
|
||||
#endif
|
||||
|
||||
struct ol_tx_sched_wrr_ac_specs_t ac_specs[TX_WMM_AC_NUM];
|
||||
bool gro_enable;
|
||||
bool tso_enable;
|
||||
|
|
|
|||
|
|
@ -986,6 +986,8 @@ struct ol_if_ops {
|
|||
* @runtime_resume:
|
||||
* @register_packetdump_cb:
|
||||
* @unregister_packetdump_cb:
|
||||
* @pdev_reset_driver_del_ack:
|
||||
* @vdev_set_driver_del_ack_enable:
|
||||
*/
|
||||
struct cdp_misc_ops {
|
||||
uint16_t (*set_ibss_vdev_heart_beat_timer)(struct cdp_vdev *vdev,
|
||||
|
|
@ -1023,6 +1025,12 @@ struct cdp_misc_ops {
|
|||
void (*register_pktdump_cb)(ol_txrx_pktdump_cb tx_cb,
|
||||
ol_txrx_pktdump_cb rx_cb);
|
||||
void (*unregister_pktdump_cb)(void);
|
||||
void (*pdev_reset_driver_del_ack)(struct cdp_pdev *ppdev);
|
||||
void (*vdev_set_driver_del_ack_enable)(uint8_t vdev_id,
|
||||
unsigned long rx_packets,
|
||||
uint32_t time_in_ms,
|
||||
uint32_t high_th,
|
||||
uint32_t low_th);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue