Index: FreeBSD/sys/netinet/tcp_stacks/bbr.c =================================================================== --- FreeBSD/sys/netinet/tcp_stacks/bbr.c +++ FreeBSD/sys/netinet/tcp_stacks/bbr.c @@ -12323,7 +12323,8 @@ (tp->t_state == TCPS_SYN_SENT)) && SEQ_GT(tp->snd_max, tp->snd_una) && /* initial SYN or SYN|ACK sent */ (tp->t_rxtshift == 0)) { /* not a retransmit */ - return (0); + len = 0; + goto just_return_nounlock; } /* * Before sending anything check for a state update. For hpts Index: FreeBSD/sys/netinet/tcp_stacks/rack.c =================================================================== --- FreeBSD/sys/netinet/tcp_stacks/rack.c +++ FreeBSD/sys/netinet/tcp_stacks/rack.c @@ -12117,8 +12117,10 @@ ((tp->t_state == TCPS_SYN_RECEIVED) || (tp->t_state == TCPS_SYN_SENT)) && SEQ_GT(tp->snd_max, tp->snd_una) && /* initial SYN or SYN|ACK sent */ - (tp->t_rxtshift == 0)) /* not a retransmit */ - return (0); + (tp->t_rxtshift == 0)) { /* not a retransmit */ + cwnd_to_use = rack->r_ctl.cwnd_to_use = tp->snd_cwnd; + goto just_return_nolock; + } /* * Determine length of data that should be transmitted, and flags * that will be used. If there is some data or critical controls