590 |
if (pcb->state != SYN_SENT) { |
if (pcb->state != SYN_SENT) { |
591 |
pcb->rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[pcb->nrtx]; |
pcb->rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[pcb->nrtx]; |
592 |
} |
} |
|
tcp_rexmit(pcb); |
|
593 |
/* Reduce congestion window and ssthresh. */ |
/* Reduce congestion window and ssthresh. */ |
594 |
eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd); |
eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd); |
595 |
pcb->ssthresh = eff_wnd >> 1; |
pcb->ssthresh = eff_wnd >> 1; |
599 |
pcb->cwnd = pcb->mss; |
pcb->cwnd = pcb->mss; |
600 |
LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: cwnd %u ssthresh %u\n", |
LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: cwnd %u ssthresh %u\n", |
601 |
pcb->cwnd, pcb->ssthresh)); |
pcb->cwnd, pcb->ssthresh)); |
602 |
} |
|
603 |
|
/* The following needs to be called AFTER cwnd is set to one mss - STJ */ |
604 |
|
tcp_rexmit_rto(pcb); |
605 |
|
} |
606 |
} |
} |
607 |
/* Check if this PCB has stayed too long in FIN-WAIT-2 */ |
/* Check if this PCB has stayed too long in FIN-WAIT-2 */ |
608 |
if (pcb->state == FIN_WAIT_2) { |
if (pcb->state == FIN_WAIT_2) { |