1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-10-18 02:19:39 +00:00

tcp: hpts needs to still call output even after input.

The other stacks it turns out actually expect the output to be called and can become stuck if it is
not. This is because they run there timer code from there and the input routine does not always
assure a timer is running. The real longterm fix here might be to go into the other stacks (rack and bbr)
and make sure that a timer is running after input if you don't do output.. as well as call the timer functions.
This would cut down on calls from hpts. But I think its too dramatic of a change for the immediate time.

Reviewed by: tuexen, glebius
Sponsored by: Netflix Inc
Differential Revision:https://reviews.freebsd.org/D39738
This commit is contained in:
Randall Stewart 2023-04-21 07:12:25 -04:00
parent 4bfffd8cf5
commit 01216268f8

View File

@ -1348,11 +1348,10 @@ tcp_hptsi(struct tcp_hpts_entry *hpts, int from_callout)
/* The input killed the connection */
goto skip_pacing;
}
} else {
error = tcp_output(tp);
if (error < 0)
goto skip_pacing;
}
error = tcp_output(tp);
if (error < 0)
goto skip_pacing;
if (ninp) {
/*
* If we have a nxt inp, see if we can