mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-01 04:12:07 +00:00
Fix BUG#27445: grow cwnd with every duplicate ACK
This commit is contained in:
parent
af3b796488
commit
71ddff4964
@ -46,6 +46,9 @@ HISTORY
|
|||||||
|
|
||||||
++ Bugfixes:
|
++ Bugfixes:
|
||||||
|
|
||||||
|
2009-10-27: Kieran Mansley
|
||||||
|
* tcp_in.c: fix BUG#27445: grow cwnd with every duplicate ACK
|
||||||
|
|
||||||
2009-10-25: Simon Goldschmidt
|
2009-10-25: Simon Goldschmidt
|
||||||
* tcp.h: bug-fix in the TCP_EVENT_RECV macro (has to call tcp_recved if
|
* tcp.h: bug-fix in the TCP_EVENT_RECV macro (has to call tcp_recved if
|
||||||
pcb->recv is NULL to keep rcv_wnd correct)
|
pcb->recv is NULL to keep rcv_wnd correct)
|
||||||
|
@ -793,10 +793,10 @@ tcp_receive(struct tcp_pcb *pcb)
|
|||||||
pcb->acked = 0;
|
pcb->acked = 0;
|
||||||
|
|
||||||
if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge){
|
if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge){
|
||||||
if (pcb->unacked != NULL) {
|
|
||||||
++pcb->dupacks;
|
++pcb->dupacks;
|
||||||
|
|
||||||
if (pcb->dupacks >= 3) {
|
if (pcb->dupacks >= 3) {
|
||||||
if (!(pcb->flags & TF_INFR)) {
|
if (!(pcb->flags & TF_INFR) && pcb->unacked != NULL) {
|
||||||
/* This is fast retransmit. Retransmit the first unacked segment. */
|
/* This is fast retransmit. Retransmit the first unacked segment. */
|
||||||
LWIP_DEBUGF(TCP_FR_DEBUG, ("tcp_receive: dupacks %"U16_F" (%"U32_F"), fast retransmit %"U32_F"\n",
|
LWIP_DEBUGF(TCP_FR_DEBUG, ("tcp_receive: dupacks %"U16_F" (%"U32_F"), fast retransmit %"U32_F"\n",
|
||||||
(u16_t)pcb->dupacks, pcb->lastack,
|
(u16_t)pcb->dupacks, pcb->lastack,
|
||||||
@ -828,9 +828,9 @@ tcp_receive(struct tcp_pcb *pcb)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
|
if (pcb->unacked == NULL && pcb->unsent == NULL)
|
||||||
pcb->dupacks = 0;
|
pcb->dupacks = 0;
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
LWIP_DEBUGF(TCP_FR_DEBUG, ("tcp_receive: dupack averted %"U32_F" %"U32_F"\n",
|
LWIP_DEBUGF(TCP_FR_DEBUG, ("tcp_receive: dupack averted %"U32_F" %"U32_F"\n",
|
||||||
pcb->snd_wl2 + pcb->snd_wnd, right_wnd_edge));
|
pcb->snd_wl2 + pcb->snd_wnd, right_wnd_edge));
|
||||||
|
Loading…
Reference in New Issue
Block a user