tcp: basic cubic implementation
[vpp.git] / src / vnet / tcp / tcp_newreno.c
index c825e95..420e47a 100644 (file)
@@ -36,8 +36,8 @@ newreno_rcv_ack (tcp_connection_t * tc)
     }
   else
     {
-      /* Round up to 1 if needed */
-      tc->cwnd += clib_max ((tc->snd_mss * tc->snd_mss) / tc->cwnd, 1);
+      /* tc->cwnd += clib_max ((tc->snd_mss * tc->snd_mss) / tc->cwnd, 1); */
+      tcp_cwnd_accumulate (tc, tc->cwnd, tc->bytes_acked);
     }
 }
 
@@ -63,8 +63,8 @@ newreno_rcv_cong_ack (tcp_connection_t * tc, tcp_cc_ack_t ack_type)
           * window deflation" attempts to ensure that, when fast recovery
           * eventually ends, approximately ssthresh amount of data will be
           * outstanding in the network.*/
-         tc->cwnd = (tc->cwnd > tc->bytes_acked) ?
-           tc->cwnd - tc->bytes_acked : 0;
+         tc->cwnd = (tc->cwnd > tc->bytes_acked + tc->snd_mss) ?
+           tc->cwnd - tc->bytes_acked : tc->snd_mss;
          if (tc->bytes_acked > tc->snd_mss)
            tc->cwnd += tc->snd_mss;
        }