Hello All!

My hub have found another bug:)

For example we have two node.
Data are sent in both destination.

node1                              node2(lwip)
[data1]--->
                                  <---[data2] (1 byte/sec)
ACK
                                  <---[data3]
data3 packet is dropped
dup ACK 1->
                                      pcb->dupacks==1
dup ACK 2->
                                  <---[data4]
                                      pcb->dupacks==2
dup ACK 3->
                                      pcb->dupacks==3

Node2 starts Fast Retransmission
see tcp_receive
           if (!(pcb->flags & TF_INFR)) {
                pcb->flags |= TF_INFR;
                tcp_rexmit(pcb);
} <---data3
data3 packet is dropped again

node1 sends dup ACKs again and again
but we have TF_INFR flag set, it means no tcp_rexmit!!!

We doesn't have retrasmission timeout too, because data are sent in both destination.

You can use this patch, but I don't now how behaves fast recovery and slow start with it.
At least it works:)

Poka poka,
Oleg

Here is patch against version lwip-1.1.1:
*** lwip-1.1.1/src/core/1/tcp_in.c      Wed Mar  1 16:53:42 2006
--- lwip-1.1.1/src/core/2/tcp_in.c      Wed Jun 21 18:13:18 2006
***************
*** 683,688 ****
--- 683,691 ----
             if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) {
               pcb->cwnd += pcb->mss;
             }
+             if ((pcb->dupacks % 3) == 0) {
+               pcb->flags &= ~TF_INFR;
+             }
           }
         }
       } else {

*** lwip-1.1.1/src/core/1/tcp_in.c      Wed Mar  1 16:53:42 2006
--- lwip-1.1.1/src/core/2/tcp_in.c      Wed Jun 21 18:13:18 2006
***************
*** 683,688 ****
--- 683,691 ----
              if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) {
                pcb->cwnd += pcb->mss;
              }
+             if ((pcb->dupacks % 3) == 0) {
+               pcb->flags &= ~TF_INFR;
+             }
            }
          }
        } else {
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to