CLEANUP: quic: "largest_acked_pn" pktns struc member moving
This struct member stores the largest acked packet number which was received. It
is used to build (TX) packet. But this is confusing to store it in the tx packet
of the packet number space structure even if it is used to build and transmit
packets.
diff --git a/include/haproxy/xprt_quic-t.h b/include/haproxy/xprt_quic-t.h
index 0e2d9d8..e9ad911 100644
--- a/include/haproxy/xprt_quic-t.h
+++ b/include/haproxy/xprt_quic-t.h
@@ -405,8 +405,6 @@
struct list frms;
/* Next packet number to use for transmissions. */
int64_t next_pn;
- /* Largest acked sent packet. */
- int64_t largest_acked_pn;
/* The packet which has been sent. */
struct eb_root pkts;
/* The time the most recent ack-eliciting packer was sent. */
@@ -421,6 +419,8 @@
struct {
/* Largest packet number */
int64_t largest_pn;
+ /* Largest acked sent packet. */
+ int64_t largest_acked_pn;
struct quic_arngs arngs;
} rx;
unsigned int flags;
@@ -534,6 +534,8 @@
int refcnt;
/* Next packet in the same datagram */
struct quic_tx_packet *next;
+ /* Largest acknowledged packet number if this packet contains an ACK frame */
+ int64_t largest_acked_pn;
unsigned char type;
};
diff --git a/include/haproxy/xprt_quic.h b/include/haproxy/xprt_quic.h
index 1156912..d95a072 100644
--- a/include/haproxy/xprt_quic.h
+++ b/include/haproxy/xprt_quic.h
@@ -978,12 +978,12 @@
LIST_INIT(&pktns->tx.frms);
pktns->tx.next_pn = -1;
pktns->tx.pkts = EB_ROOT_UNIQUE;
- pktns->tx.largest_acked_pn = -1;
pktns->tx.time_of_last_eliciting = 0;
pktns->tx.loss_time = TICK_ETERNITY;
pktns->tx.in_flight = 0;
pktns->rx.largest_pn = -1;
+ pktns->rx.largest_acked_pn = -1;
pktns->rx.arngs.root = EB_ROOT_UNIQUE;
pktns->rx.arngs.sz = 0;
pktns->rx.arngs.enc_sz = 0;
diff --git a/src/xprt_quic.c b/src/xprt_quic.c
index d53bb5f..ddd0b01 100644
--- a/src/xprt_quic.c
+++ b/src/xprt_quic.c
@@ -1699,7 +1699,7 @@
unsigned int loss_time_limit, time_sent;
pkt = eb64_entry(&node->node, struct quic_tx_packet, pn_node);
- largest_acked_pn = HA_ATOMIC_LOAD(&pktns->tx.largest_acked_pn);
+ largest_acked_pn = HA_ATOMIC_LOAD(&pktns->rx.largest_acked_pn);
node = eb64_next(node);
if ((int64_t)pkt->pn_node.key > largest_acked_pn)
break;
@@ -1762,7 +1762,7 @@
largest_node = NULL;
time_sent = 0;
- if ((int64_t)ack->largest_ack > HA_ATOMIC_LOAD(&qel->pktns->tx.largest_acked_pn)) {
+ if ((int64_t)ack->largest_ack > HA_ATOMIC_LOAD(&qel->pktns->rx.largest_acked_pn)) {
largest_node = eb64_lookup(pkts, largest);
if (!largest_node) {
TRACE_DEVEL("Largest acked packet not found",
@@ -1817,7 +1817,7 @@
if (time_sent && (pkt_flags & QUIC_FL_TX_PACKET_ACK_ELICITING)) {
*rtt_sample = tick_remain(time_sent, now_ms);
- HA_ATOMIC_STORE(&qel->pktns->tx.largest_acked_pn, ack->largest_ack);
+ HA_ATOMIC_STORE(&qel->pktns->rx.largest_acked_pn, ack->largest_ack);
}
if (!LIST_ISEMPTY(&newly_acked_pkts)) {
@@ -5036,7 +5036,7 @@
goto no_room;
end -= QUIC_TLS_TAG_LEN;
- largest_acked_pn = HA_ATOMIC_LOAD(&qel->pktns->tx.largest_acked_pn);
+ largest_acked_pn = HA_ATOMIC_LOAD(&qel->pktns->rx.largest_acked_pn);
/* packet number length */
*pn_len = quic_packet_number_length(pn, largest_acked_pn);
/* Build the header */