Index: bbr.c =================================================================== --- bbr.c +++ bbr.c @@ -12157,8 +12157,8 @@ * have gotten more data into the socket buffer to * send. */ - recwin = min(max(sbspace(&so->so_rcv), 0), - TCP_MAXWIN << tp->rcv_scale); + recwin = lmin(lmax(sbspace(&so->so_rcv), 0), + (long)TCP_MAXWIN << tp->rcv_scale); if ((bbr_window_update_needed(tp, so, recwin, maxseg) == 0) && ((tcp_outflags[tp->t_state] & TH_RST) == 0) && ((sbavail(sb) + ((tcp_outflags[tp->t_state] & TH_FIN) ? 1 : 0)) <= @@ -12839,8 +12839,8 @@ ipoptlen == 0) tso = 1; - recwin = min(max(sbspace(&so->so_rcv), 0), - TCP_MAXWIN << tp->rcv_scale); + recwin = lmin(lmax(sbspace(&so->so_rcv), 0), + (long)TCP_MAXWIN << tp->rcv_scale); /* * Sender silly window avoidance. We transmit under the following * conditions when len is non-zero: Index: rack.c =================================================================== --- rack.c +++ rack.c @@ -12750,7 +12750,8 @@ flags &= ~TH_FIN; } } - recwin = sbspace(&so->so_rcv); + recwin = lmin(lmax(sbspace(&so->so_rcv), 0), + (long)TCP_MAXWIN << tp->rcv_scale); /* * Sender silly window avoidance. We transmit under the following @@ -13656,8 +13657,6 @@ if (SEQ_GT(tp->rcv_adv, tp->rcv_nxt) && recwin < (long)(tp->rcv_adv - tp->rcv_nxt)) recwin = (long)(tp->rcv_adv - tp->rcv_nxt); - if (recwin > (long)TCP_MAXWIN << tp->rcv_scale) - recwin = (long)TCP_MAXWIN << tp->rcv_scale; } /*