Changeset View
Changeset View
Standalone View
Standalone View
head/sys/netinet/tcp_output.c
Show First 20 Lines • Show All 650 Lines • ▼ Show 20 Lines | if (recwin > 0 && !(tp->t_flags & TF_NEEDSYN) && | ||||
* a window update. | * a window update. | ||||
*/ | */ | ||||
if (oldwin >> tp->rcv_scale >= (adv + oldwin) >> tp->rcv_scale) | if (oldwin >> tp->rcv_scale >= (adv + oldwin) >> tp->rcv_scale) | ||||
goto dontupdate; | goto dontupdate; | ||||
if (adv >= (int32_t)(2 * tp->t_maxseg) && | if (adv >= (int32_t)(2 * tp->t_maxseg) && | ||||
(adv >= (int32_t)(so->so_rcv.sb_hiwat / 4) || | (adv >= (int32_t)(so->so_rcv.sb_hiwat / 4) || | ||||
recwin <= (so->so_rcv.sb_hiwat / 8) || | recwin <= (so->so_rcv.sb_hiwat / 8) || | ||||
so->so_rcv.sb_hiwat <= 8 * tp->t_maxseg)) | so->so_rcv.sb_hiwat <= 8 * tp->t_maxseg || | ||||
adv >= TCP_MAXWIN << tp->rcv_scale)) | |||||
goto send; | goto send; | ||||
if (2 * adv >= (int32_t)so->so_rcv.sb_hiwat) | if (2 * adv >= (int32_t)so->so_rcv.sb_hiwat) | ||||
goto send; | goto send; | ||||
} | } | ||||
dontupdate: | dontupdate: | ||||
/* | /* | ||||
* Send if we owe the peer an ACK, RST, SYN, or urgent data. ACKNOW | * Send if we owe the peer an ACK, RST, SYN, or urgent data. ACKNOW | ||||
▲ Show 20 Lines • Show All 1,340 Lines • Show Last 20 Lines |