Commit d01cb207 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

tcp: add LAST_ACK as a valid state for TSQ

Socket state LAST_ACK should allow TSQ to send additional frames,
or else we rely on incoming ACKS or timers to send them.
Reported-by: default avatarYuchung Cheng <ycheng@google.com>
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Cc: Matt Mathis <mattmathis@google.com>
Cc: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 02eca3f5
...@@ -838,7 +838,7 @@ static void tcp_tasklet_func(unsigned long data) ...@@ -838,7 +838,7 @@ static void tcp_tasklet_func(unsigned long data)
if (!sock_owned_by_user(sk)) { if (!sock_owned_by_user(sk)) {
if ((1 << sk->sk_state) & if ((1 << sk->sk_state) &
(TCPF_ESTABLISHED | TCPF_FIN_WAIT1 | (TCPF_ESTABLISHED | TCPF_FIN_WAIT1 |
TCPF_CLOSING | TCPF_CLOSE_WAIT)) TCPF_CLOSING | TCPF_CLOSE_WAIT | TCPF_LAST_ACK))
tcp_write_xmit(sk, tcp_write_xmit(sk,
tcp_current_mss(sk), tcp_current_mss(sk),
0, 0, 0, 0,
...@@ -868,7 +868,7 @@ void tcp_release_cb(struct sock *sk) ...@@ -868,7 +868,7 @@ void tcp_release_cb(struct sock *sk)
if (test_and_clear_bit(TSQ_OWNED, &tp->tsq_flags)) { if (test_and_clear_bit(TSQ_OWNED, &tp->tsq_flags)) {
if ((1 << sk->sk_state) & if ((1 << sk->sk_state) &
(TCPF_ESTABLISHED | TCPF_FIN_WAIT1 | (TCPF_ESTABLISHED | TCPF_FIN_WAIT1 |
TCPF_CLOSING | TCPF_CLOSE_WAIT)) TCPF_CLOSING | TCPF_CLOSE_WAIT | TCPF_LAST_ACK))
tcp_write_xmit(sk, tcp_write_xmit(sk,
tcp_current_mss(sk), tcp_current_mss(sk),
0, 0, 0, 0,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment