aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp/tcp_bt.c
diff options
context:
space:
mode:
authorRyujiro Shibuya <ryujiro.shibuya@owmobility.com>2020-10-23 07:35:53 +0000
committerFlorin Coras <florin.coras@gmail.com>2020-10-26 14:50:02 +0000
commitd899d54c5ff48377345db7072077af7c71b9d104 (patch)
tree1ae7348c0e2f3c6e03d967d4a3b14014f253d829 /src/vnet/tcp/tcp_bt.c
parentbcaa44ced6fe456835f3f73d184ab2345e39d367 (diff)
tcp: byte tracker fix
Type: fix Signed-off-by: Ryujiro Shibuya <ryujiro.shibuya@owmobility.com> Change-Id: If7e22978a6b65f5b68ccb2bd97b5e0fba167b3bf
Diffstat (limited to 'src/vnet/tcp/tcp_bt.c')
-rw-r--r--src/vnet/tcp/tcp_bt.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/vnet/tcp/tcp_bt.c b/src/vnet/tcp/tcp_bt.c
index de2e7ad7f8e..07f86789945 100644
--- a/src/vnet/tcp/tcp_bt.c
+++ b/src/vnet/tcp/tcp_bt.c
@@ -306,6 +306,7 @@ tcp_bt_track_tx (tcp_connection_t * tc, u32 len)
tail = bt_get_sample (bt, bt->tail);
if (tail && tail->max_seq == tc->snd_nxt
+ && !(tail->flags & TCP_BTS_IS_SACKED)
&& tail->tx_time == tcp_time_now_us (tc->c_thread_index))
{
tail->max_seq += len;
@@ -504,7 +505,10 @@ tcp_bt_walk_samples (tcp_connection_t * tc, tcp_rate_sample_t * rs)
}
if (cur && seq_lt (cur->min_seq, tc->snd_una))
- tcp_bt_sample_to_rate_sample (tc, cur, rs);
+ {
+ bt_update_sample (bt, cur, tc->snd_una);
+ tcp_bt_sample_to_rate_sample (tc, cur, rs);
+ }
}
static void