tcp: send ACKs when requested
When doing Limited Transmit send an ACK when needed by the protocol processing (like sending ACKs with a DSACK block). PR: 264257 PR: 263445 PR: 260393 Reviewed by: rscheff@ MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D36631
This commit is contained in:
parent
1761afc50a
commit
5ae83e0d87
@ -2739,14 +2739,14 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
maxseg;
|
||||
/*
|
||||
* Only call tcp_output when there
|
||||
* is new data available to be sent.
|
||||
* Otherwise we would send pure ACKs.
|
||||
* is new data available to be sent
|
||||
* or we need to send an ACK.
|
||||
*/
|
||||
SOCKBUF_LOCK(&so->so_snd);
|
||||
avail = sbavail(&so->so_snd) -
|
||||
(tp->snd_nxt - tp->snd_una);
|
||||
SOCKBUF_UNLOCK(&so->so_snd);
|
||||
if (avail > 0)
|
||||
if (avail > 0 || tp->t_flags & TF_ACKNOW)
|
||||
(void) tcp_output(tp);
|
||||
sent = tp->snd_max - oldsndmax;
|
||||
if (sent > maxseg) {
|
||||
|
Loading…
Reference in New Issue
Block a user