- case TREXMT: /* retransmission timer */
- if (tp->t_rexmt_val > tp->snd_una) { /* 34 */
- /*
- * Set so for a retransmission, increase rexmt time
- * in case of multiple retransmissions.
- */
- tp->snd_nxt = tp->snd_una;
- tp->tc_flags |= TC_REXMT;
- tp->t_xmtime = tp->t_xmtime << 1;
- if (tp->t_xmtime > T_REMAX)
- tp->t_xmtime = T_REMAX;
- (void) tcp_send(tp);
- }
- return (SAME);
-
- case TREXMTTL: /* retransmit too long */
- if (tp->t_rtl_val > tp->snd_una) { /* 36 */
- tcp_error(tp, ETIMEDOUT);
- return (CLOSED);
- }
- return (SAME);
+ case TCPT_PERSIST:
+ if (tcp_output(tp) == 0)
+ tp->snd_wnd++, (void) tcp_output(tp), tp->snd_wnd--;