From fab0e99aa16071daf3968e1079de75a81b908919 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 25 Jul 2024 14:32:20 +0200 Subject: [PATCH] MINOR: quic: store the lost packets counter in the quic_cc_event element Upon loss detection, qc_release_lost_pkts() notifies congestion controllers about the event and its final time. However it does not pass the number of lost packets, that can provide useful hints for some controllers. Let's just pass this option. --- include/haproxy/quic_cc-t.h | 1 + src/quic_loss.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/haproxy/quic_cc-t.h b/include/haproxy/quic_cc-t.h index d6fa46d654..92115d2fd7 100644 --- a/include/haproxy/quic_cc-t.h +++ b/include/haproxy/quic_cc-t.h @@ -73,6 +73,7 @@ struct quic_cc_event { } ack; struct loss { unsigned int time_sent; + unsigned int count; // #pkt lost for this event } loss; }; }; diff --git a/src/quic_loss.c b/src/quic_loss.c index fd9568a50a..e80757102c 100644 --- a/src/quic_loss.c +++ b/src/quic_loss.c @@ -242,6 +242,7 @@ int qc_release_lost_pkts(struct quic_conn *qc, struct quic_pktns *pktns, struct list *pkts, uint64_t now_us) { struct quic_tx_packet *pkt, *tmp, *oldest_lost, *newest_lost; + uint tot_lost = 0; int close = 0; TRACE_ENTER(QUIC_EV_CONN_PRSAFRM, qc); @@ -270,6 +271,7 @@ int qc_release_lost_pkts(struct quic_conn *qc, struct quic_pktns *pktns, quic_tx_packet_refdec(newest_lost); newest_lost = pkt; } + tot_lost++; } if (!close) { @@ -279,6 +281,7 @@ int qc_release_lost_pkts(struct quic_conn *qc, struct quic_pktns *pktns, ev.type = QUIC_CC_EVT_LOSS; ev.loss.time_sent = newest_lost->time_sent; + ev.loss.count = tot_lost; quic_cc_event(&qc->path->cc, &ev); } -- 2.47.3