aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2018-10-16 19:52:10 -0700
committerMarco Varlese <marco.varlese@suse.de>2018-10-17 07:32:46 +0000
commitd6fe5bd60671c5f274c290abf08df074510c952b (patch)
tree0c7fb85a614c46ba4068b947f3569158a518a48c /src/vnet/tcp
parent69fdfee5812cf59ca684aaab1d49cdb8689cb03b (diff)
tcp: avoid sack processing when not needed (VPP-1460)
Change-Id: If81ee34e1f1e929de1a5b758ddb9aede4002e858 Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/tcp')
-rw-r--r--src/vnet/tcp/tcp.c6
-rw-r--r--src/vnet/tcp/tcp_input.c3
2 files changed, 6 insertions, 3 deletions
diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c
index 1c8ce34a728..884602deb6f 100644
--- a/src/vnet/tcp/tcp.c
+++ b/src/vnet/tcp/tcp.c
@@ -939,9 +939,11 @@ format_tcp_scoreboard (u8 * s, va_list * args)
s = format (s, "sacked_bytes %u last_sacked_bytes %u lost_bytes %u\n",
sb->sacked_bytes, sb->last_sacked_bytes, sb->lost_bytes);
s = format (s, " last_bytes_delivered %u high_sacked %u snd_una_adv %u\n",
- sb->last_bytes_delivered, sb->high_sacked, sb->snd_una_adv);
+ sb->last_bytes_delivered, sb->high_sacked - tc->iss,
+ sb->snd_una_adv);
s = format (s, " cur_rxt_hole %u high_rxt %u rescue_rxt %u",
- sb->cur_rxt_hole, sb->high_rxt, sb->rescue_rxt);
+ sb->cur_rxt_hole, sb->high_rxt - tc->iss,
+ sb->rescue_rxt - tc->iss);
hole = scoreboard_first_hole (sb);
if (hole)
diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c
index 10f50fefc09..85aaa16f245 100644
--- a/src/vnet/tcp/tcp_input.c
+++ b/src/vnet/tcp/tcp_input.c
@@ -135,7 +135,8 @@ tcp_options_parse (tcp_header_t * th, tcp_options_t * to)
data = (const u8 *) (th + 1);
/* Zero out all flags but those set in SYN */
- to->flags &= (TCP_OPTS_FLAG_SACK_PERMITTED | TCP_OPTS_FLAG_WSCALE);
+ to->flags &= (TCP_OPTS_FLAG_SACK_PERMITTED | TCP_OPTS_FLAG_WSCALE
+ | TCP_OPTS_FLAG_SACK);
for (; opts_len > 0; opts_len -= opt_len, data += opt_len)
{