format_white_space, indent, tc->snd_congestion - tc->iss,
tc->rcv_dupacks, tc->limited_transmit - tc->iss);
s = format (s, "%Urxt_bytes %u rxt_delivered %u rxt_head %u rxt_ts %u\n",
- format_white_space, indent, tc->snd_rxt_bytes,
- tc->rxt_delivered, tc->rxt_head - tc->iss,
- tcp_time_now_w_thread (tc->c_thread_index) - tc->snd_rxt_ts);
+ format_white_space, indent, tc->snd_rxt_bytes, tc->rxt_delivered,
+ tc->rxt_head - tc->iss, tcp_tstamp (tc) - tc->snd_rxt_ts);
if (tcp_in_fastrecovery (tc))
prr_space = tcp_fastrecovery_prr_snd_space (tc);
s = format (s, "%Uprr_start %u prr_delivered %u prr space %u\n",
s = format (s, " index: %u cfg: %U flags: %U timers: %U\n", tc->c_c_index,
format_tcp_cfg_flags, tc, format_tcp_connection_flags, tc,
format_tcp_timers, tc);
- s = format (s, " snd_una %u snd_nxt %u snd_una_max %u",
- tc->snd_una - tc->iss, tc->snd_nxt - tc->iss,
- tc->snd_una_max - tc->iss);
+ s = format (s, " snd_una %u snd_nxt %u", tc->snd_una - tc->iss,
+ tc->snd_nxt - tc->iss);
s = format (s, " rcv_nxt %u rcv_las %u\n",
tc->rcv_nxt - tc->irs, tc->rcv_las - tc->irs);
s = format (s, " snd_wnd %u rcv_wnd %u rcv_wscale %u ",
s = format (s, " tsval_recent %u\n", tc->tsval_recent);
s = format (s, " tsecr %u tsecr_last_ack %u tsval_recent_age %u",
tc->rcv_opts.tsecr, tc->tsecr_last_ack,
- tcp_time_now () - tc->tsval_recent_age);
+ tcp_time_tstamp (tc->c_thread_index) - tc->tsval_recent_age);
s = format (s, " snd_mss %u\n", tc->snd_mss);
s = format (s, " rto %u rto_boff %u srtt %.1f us %.3f rttvar %.1f",
tc->rto / 1000, tc->rto_boff, tc->srtt / 1000.0,
if (!tc)
return s;
- s = format (s, "%-50U", format_tcp_connection_id, tc);
+ s = format (s, "%-" SESSION_CLI_ID_LEN "U", format_tcp_connection_id, tc);
if (verbose)
{
- s = format (s, "%-15U", format_tcp_state, tc->state);
+ s = format (s, "%-" SESSION_CLI_STATE_LEN "U", format_tcp_state,
+ tc->state);
if (verbose > 1)
s = format (s, "\n%U", format_tcp_vars, tc);
}
if (trace[i].ack != 0)
{
placeholder_tc->snd_una = trace[i].ack - 1448;
- placeholder_tc->snd_una_max = trace[i].ack;
+ placeholder_tc->snd_nxt = trace[i].ack;
}
}
{
if (verbose)
s = format (s, "Adding ack %u, snd_una_max %u, segs: ",
- trace[left].ack, trace[left].snd_una_max);
- placeholder_tc->snd_una_max = trace[left].snd_una_max;
+ trace[left].ack, trace[left].snd_nxt);
+ placeholder_tc->snd_nxt = trace[left].snd_nxt;
next_ack = trace[left].ack;
has_new_ack = 1;
}
static clib_error_t *
tcp_config_fn (vlib_main_t * vm, unformat_input_t * input)
{
- u32 cwnd_multiplier, tmp_time, mtu;
+ u32 cwnd_multiplier, tmp_time, mtu, max_gso_size;
uword memory_size;
while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
tcp_cfg.allow_tso = 1;
else if (unformat (input, "no-csum-offload"))
tcp_cfg.csum_offload = 0;
+ else if (unformat (input, "max-gso-size %u", &max_gso_size))
+ tcp_cfg.max_gso_size = clib_min (max_gso_size, TCP_MAX_GSO_SZ);
else if (unformat (input, "cc-algo %U", unformat_tcp_cc_algo,
&tcp_cfg.cc_algo))
;