+ if (adv >= (long) (2 * tp->t_maxseg)) {
+
+ /*
+ * Update only if the resulting scaled value of the window changed, or
+ * if there is a change in the sequence since the last ack.
+ * This avoids what appears as dupe ACKS (see rdar://5640997)
+ */
+
+ if ((tp->last_ack_sent != tp->rcv_nxt) || (((recwin + adv) >> tp->rcv_scale) > recwin))
+ goto send;
+ }
+ if (2 * adv >= (long) so->so_rcv.sb_hiwat)
+ goto send;