tcp: Refactor pingpong code
Instead of using pingpong as a single bit information, we refactor the code to treat it as a counter. When interactive session is detected, we set pingpong count to TCP_PINGPONG_THRESH. And when pingpong count is >= TCP_PINGPONG_THRESH, we consider the session in pingpong mode. This patch is a pure refactor and sets foundation for the next patch. This patch itself does not change any pingpong logic. Signed-off-by: Wei Wang <weiwan@google.com> Signed-off-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
fb1b699991
commit
31954cd8bb
@@ -171,7 +171,7 @@ static void tcp_event_data_sent(struct tcp_sock *tp,
|
||||
* packet, enter pingpong mode.
|
||||
*/
|
||||
if ((u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
|
||||
icsk->icsk_ack.pingpong = 1;
|
||||
inet_csk_enter_pingpong_mode(sk);
|
||||
}
|
||||
|
||||
/* Account for an ACK we sent. */
|
||||
@@ -3569,7 +3569,7 @@ void tcp_send_delayed_ack(struct sock *sk)
|
||||
const struct tcp_sock *tp = tcp_sk(sk);
|
||||
int max_ato = HZ / 2;
|
||||
|
||||
if (icsk->icsk_ack.pingpong ||
|
||||
if (inet_csk_in_pingpong_mode(sk) ||
|
||||
(icsk->icsk_ack.pending & ICSK_ACK_PUSHED))
|
||||
max_ato = TCP_DELACK_MAX;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user