Free (GPLv2) TCP/IP stack developed by TASS Belgium

Fork of PicoTCP by Daniele Lacamera

Revision:
37:bdf736327c71
Parent:
36:afa3ab5e06b3
Child:
40:c8ab0d2bba0b
--- a/modules/pico_tcp.c	Wed Jun 26 06:27:32 2013 +0000
+++ b/modules/pico_tcp.c	Wed Jul 03 08:56:01 2013 +0000
@@ -22,7 +22,8 @@
 
 #define PICO_TCP_RTO_MIN 10
 #define PICO_TCP_RTO_MAX 120000
-#define PICO_TCP_IW 2
+#define PICO_TCP_IW          2
+#define PICO_TCP_SYN_TO  1000
 
 #define PICO_TCP_MAX_CONNECT_RETRIES 7
 
@@ -242,7 +243,7 @@
   while (head && (seq_compare(SEQN(head) + head->payload_len, seq) <= 0)) {
     struct pico_frame *cur = head;
     head = next_segment(q, cur);
-    //printf("Releasing %x\n", cur);
+    tcp_dbg("Releasing %p\n", q);
     pico_discard_segment(q, cur);
     ret++;
   }
@@ -258,7 +259,7 @@
   pico_tree_foreach_safe(idx,&q->pool,temp){
   f = idx->keyValue;
     if (seq_compare(SEQN(f) + f->payload_len, seq) <= 0) {
-      //printf("Releasing %p\n", f);
+      tcp_dbg("Releasing %p\n", f);
       pico_discard_segment(q, f);
       ret++;
     } else
@@ -781,7 +782,7 @@
   /* TCP: ENQUEUE to PROTO ( SYN ) */
   tcp_dbg("Sending SYN... (ports: %d - %d) size: %d\n", short_be(ts->sock.local_port), short_be(ts->sock.remote_port), syn->buffer_len);
   pico_enqueue(&tcp_out, syn);
-  pico_timer_add(PICO_TCP_RTO_MIN << ts->backoff, initconn_retry, ts);
+  pico_timer_add(PICO_TCP_SYN_TO << ts->backoff, initconn_retry, ts);
   return 0;
 }
 
@@ -1240,7 +1241,7 @@
   if( t->sock.net && ((t->sock.state & 0xFF00) == PICO_SOCKET_STATE_TCP_ESTABLISHED
         || (t->sock.state & 0xFF00) == PICO_SOCKET_STATE_TCP_CLOSE_WAIT) )
   {
-        //printf("\n\nTIMEOUT! backoff = %d\n", t->backoff);
+        tcp_dbg("\n\nTIMEOUT! backoff = %d\n", t->backoff);
         /* was timer cancelled? */
         if (t->timer_running == 0) {
             add_retransmission_timer(t, 0);
@@ -1309,7 +1310,6 @@
   }
   if (next_ts > 0) {
     if ((next_ts + t->rto) > pico_tick) {
-      //printf("Adding timer1\n,%d,%d,%d",next_ts,t->rto,pico_tick);
       pico_timer_add(next_ts + t->rto - pico_tick, tcp_retrans_timeout, t);
     } else {
       pico_timer_add(1, tcp_retrans_timeout, t);
@@ -1337,7 +1337,6 @@
     if (pico_enqueue(&tcp_out, cpy) > 0) {
       t->in_flight++;
       t->snd_last_out = SEQN(cpy);
-      //printf("tcp_retrans\n");
       add_retransmission_timer(t, pico_tick + t->rto);
     } else {
       pico_frame_discard(cpy);
@@ -1414,7 +1413,6 @@
   t->recv_wnd = short_be(hdr->rwnd);
 
   acked = tcp_ack_advance_una(t, f);
-  //printf("acked:%d,%d,%d\n",acked,SEQN(f),ACKN(f));
   una = first_segment(&t->tcpq_out);
 
   if ((t->x_mode == PICO_TCP_BLACKOUT) || 
@@ -1930,20 +1928,14 @@
 
   /* Those are not supported at this time. */
   flags &= ~(PICO_TCP_CWR | PICO_TCP_URG | PICO_TCP_ECN);
-  
   if (flags == PICO_TCP_SYN) {
     if (action->syn)
-    {
-      //printf("SYN\n");
       action->syn(s,f);
-    }
   } else if (flags == (PICO_TCP_SYN | PICO_TCP_ACK)) {
-    //printf("SYN-ACK\n");
     if (action->synack)
       action->synack(s,f);
   } else {
     if ((flags == PICO_TCP_ACK) || (flags == (PICO_TCP_ACK | PICO_TCP_PSH))) {
-      //printf("%s\n", flags == PICO_TCP_ACK ? "ACK" : (flags == (PICO_TCP_ACK | PICO_TCP_PSH) ? "PSH,ACK" : "x") );
       if (action->ack) {
         action->ack(s,f);
       }
@@ -2005,7 +1997,6 @@
   while((f) && (t->cwnd >= t->in_flight)) {
     hdr = (struct pico_tcp_hdr *)f->transport_hdr;
     f->timestamp = pico_tick;
-    //printf("Output frame : %x\n",f);
     tcp_add_options(t, f, hdr->flags, tcp_options_size(t, hdr->flags));
     if (seq_compare(SEQN(f) + f->payload_len, SEQN(una) + (t->recv_wnd << t->recv_wnd_scale)) > 0) {
       t->cwnd = t->in_flight;
@@ -2045,7 +2036,6 @@
   if (sent > 0) {
     if (t->rto < PICO_TCP_RTO_MIN)
       t->rto = PICO_TCP_RTO_MIN;
-    //printf("pico_tcp_output\n");
     add_retransmission_timer(t, pico_tick + t->rto);
   } else {
     // no packets in queue ??