mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
tcp: improve latencies of timer triggered events
Modern TCP stack highly depends on tcp_write_timer() having a small latency, but current implementation doesn't exactly meet the expectations. When a timer fires but finds the socket is owned by the user, it rearms itself for an additional delay hoping next run will be more successful. tcp_write_timer() for example uses a 50ms delay for next try, and it defeats many attempts to get predictable TCP behavior in term of latencies. Use the recently introduced tcp_release_cb(), so that the user owning the socket will call various handlers right before socket release. This will permit us to post a followup patch to address the tcp_tso_should_defer() syndrome (some deferred packets have to wait RTO timer to be transmitted, while cwnd should allow us to send them sooner) Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Tom Herbert <therbert@google.com> Cc: Yuchung Cheng <ycheng@google.com> Cc: Neal Cardwell <ncardwell@google.com> Cc: Nandita Dukkipati <nanditad@google.com> Cc: H.K. Jerry Chu <hkchu@google.com> Cc: John Heffner <johnwheffner@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9dc274151a
commit
6f458dfb40
4 changed files with 71 additions and 51 deletions
|
@ -515,7 +515,9 @@ struct tcp_sock {
|
|||
enum tsq_flags {
|
||||
TSQ_THROTTLED,
|
||||
TSQ_QUEUED,
|
||||
TSQ_OWNED, /* tcp_tasklet_func() found socket was locked */
|
||||
TCP_TSQ_DEFERRED, /* tcp_tasklet_func() found socket was owned */
|
||||
TCP_WRITE_TIMER_DEFERRED, /* tcp_write_timer() found socket was owned */
|
||||
TCP_DELACK_TIMER_DEFERRED, /* tcp_delack_timer() found socket was owned */
|
||||
};
|
||||
|
||||
static inline struct tcp_sock *tcp_sk(const struct sock *sk)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue