mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
tcp: mandate a one-time immediate ACK
Add a new flag to indicate a one-time immediate ACK. This flag is occasionaly set under specific TCP protocol states in addition to the more common quickack mechanism for interactive application. In several cases in the TCP code we want to force an immediate ACK but do not want to call tcp_enter_quickack_mode() because we do not want to forget the icsk_ack.pingpong or icsk_ack.ato state. Signed-off-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: Wei Wang <weiwan@google.com> Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8a8a894ebb
commit
466466dc6c
@ -167,7 +167,8 @@ enum inet_csk_ack_state_t {
|
||||
ICSK_ACK_SCHED = 1,
|
||||
ICSK_ACK_TIMER = 2,
|
||||
ICSK_ACK_PUSHED = 4,
|
||||
ICSK_ACK_PUSHED2 = 8
|
||||
ICSK_ACK_PUSHED2 = 8,
|
||||
ICSK_ACK_NOW = 16 /* Send the next ACK immediately (once) */
|
||||
};
|
||||
|
||||
void inet_csk_init_xmit_timers(struct sock *sk,
|
||||
|
@ -5179,7 +5179,9 @@ static void __tcp_ack_snd_check(struct sock *sk, int ofo_possible)
|
||||
(tp->rcv_nxt - tp->copied_seq < sk->sk_rcvlowat ||
|
||||
__tcp_select_window(sk) >= tp->rcv_wnd)) ||
|
||||
/* We ACK each frame or... */
|
||||
tcp_in_quickack_mode(sk)) {
|
||||
tcp_in_quickack_mode(sk) ||
|
||||
/* Protocol state mandates a one-time immediate ACK */
|
||||
inet_csk(sk)->icsk_ack.pending & ICSK_ACK_NOW) {
|
||||
send_now:
|
||||
tcp_send_ack(sk);
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user