diff --git a/include/haproxy/quic_conn-t.h b/include/haproxy/quic_conn-t.h index d9415c487..0b33bd026 100644 --- a/include/haproxy/quic_conn-t.h +++ b/include/haproxy/quic_conn-t.h @@ -262,6 +262,8 @@ struct quic_conn_cntrs { long long socket_full; /* total number of EAGAIN errors on sendto() calls */ long long sendto_err; /* total number of errors on sendto() calls, EAGAIN excepted */ long long sendto_err_unknown; /* total number of errors on sendto() calls which are currently not supported */ + long long sent_bytes; /* total number of sent bytes, with or without GSO */ + long long sent_bytes_gso; /* total number of sent bytes using GSO */ long long sent_pkt; /* total number of sent packets */ long long lost_pkt; /* total number of lost packets */ long long conn_migration_done; /* total number of connection migration handled */ diff --git a/src/quic_cli.c b/src/quic_cli.c index f0e147c7e..6e9ee0c26 100644 --- a/src/quic_cli.c +++ b/src/quic_cli.c @@ -300,11 +300,14 @@ static void dump_quic_full(struct show_quic_ctx *ctx, struct quic_conn *qc) } if (ctx->fields & QUIC_DUMP_FLD_CC) { - chunk_appendf(&trash, " srtt=%-4u rttvar=%-4u rttmin=%-4u ptoc=%-4u cwnd=%-6llu" - " mcwnd=%-6llu sentpkts=%-6llu lostpkts=%-6llu reorderedpkts=%-6llu\n", + chunk_appendf(&trash, " srtt=%-4u rttvar=%-4u rttmin=%-4u ptoc=%-4u\n" + " cwnd=%-6llu mcwnd=%-6llu\n" + " sentbytes=%-12llu sentbytesgso=%-12llu sentpkts=%-6llu\n" + " lostpkts=%-6llu reorderedpkts=%-6llu\n", qc->path->loss.srtt, qc->path->loss.rtt_var, qc->path->loss.rtt_min, qc->path->loss.pto_count, (ullong)qc->path->cwnd, - (ullong)qc->path->mcwnd, (ullong)qc->cntrs.sent_pkt, (ullong)qc->path->loss.nb_lost_pkt, (ullong)qc->path->loss.nb_reordered_pkt); + (ullong)qc->path->mcwnd, (ullong)qc->cntrs.sent_bytes, (ullong)qc->cntrs.sent_bytes_gso, + (ullong)qc->cntrs.sent_pkt, (ullong)qc->path->loss.nb_lost_pkt, (ullong)qc->path->loss.nb_reordered_pkt); } if (qc->cntrs.dropped_pkt) { diff --git a/src/quic_tx.c b/src/quic_tx.c index 06c973a45..37ff14fea 100644 --- a/src/quic_tx.c +++ b/src/quic_tx.c @@ -347,6 +347,11 @@ static int qc_send_ppkts(struct buffer *buf, struct ssl_sock_ctx *ctx) skip_sendto = 1; TRACE_ERROR("sendto error, simulate sending for the rest of data", QUIC_EV_CONN_SPPKTS, qc); } + else { + qc->cntrs.sent_bytes += ret; + if (gso && ret > gso) + qc->cntrs.sent_bytes_gso += ret; + } } b_del(buf, dglen + QUIC_DGRAM_HEADLEN);