Page MenuHomeFreeBSD

D25016.id73571.diff
No OneTemporary

D25016.id73571.diff

Index: head/sys/netinet/tcp_output.c
===================================================================
--- head/sys/netinet/tcp_output.c
+++ head/sys/netinet/tcp_output.c
@@ -260,7 +260,8 @@
* to send, then transmit; otherwise, investigate further.
*/
idle = (tp->t_flags & TF_LASTIDLE) || (tp->snd_max == tp->snd_una);
- if (idle && ticks - tp->t_rcvtime >= tp->t_rxtcur)
+ if (idle && (((ticks - tp->t_rcvtime) >= tp->t_rxtcur) ||
+ (tp->t_sndtime && ((ticks - tp->t_sndtime) >= tp->t_rxtcur))))
cc_after_idle(tp);
tp->t_flags &= ~TF_LASTIDLE;
if (idle) {
@@ -1502,6 +1503,7 @@
* Time this transmission if not a retransmission and
* not currently timing anything.
*/
+ tp->t_sndtime = ticks;
if (tp->t_rtttime == 0) {
tp->t_rtttime = ticks;
tp->t_rtseq = startseq;
Index: head/sys/netinet/tcp_var.h
===================================================================
--- head/sys/netinet/tcp_var.h
+++ head/sys/netinet/tcp_var.h
@@ -188,8 +188,9 @@
tcp_seq snd_wl2; /* window update seg ack number */
tcp_seq irs; /* initial receive sequence number */
- tcp_seq iss; /* initial send sequence number */
- u_int t_acktime;
+ tcp_seq iss; /* initial send sequence number */
+ u_int t_acktime; /* RACK and BBR incoming new data was acked */
+ u_int t_sndtime; /* time last data was sent */
u_int ts_recent_age; /* when last updated */
tcp_seq snd_recover; /* for use in NewReno Fast Recovery */
uint16_t cl4_spare; /* Spare to adjust CL 4 */

File Metadata

Mime Type
text/plain
Expires
Sun, Apr 5, 4:10 AM (9 h, 55 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30799858
Default Alt Text
D25016.id73571.diff (1 KB)

Event Timeline