MEDIUM/OPTIM: mux-quic: implement purg_list
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 17 Dec 2024 10:16:34 +0000 (11:16 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Mon, 6 Jan 2025 10:21:42 +0000 (11:21 +0100)
commit1cc289cd6d48d8fd33d2628a48d8259b9f84a8f0
tree5e4b47100b7b2aa18fc846fb0f2aef0ae01a2865
parenta9f2d063d86ebc1f7c635fab5f05fcd4b2b96390
MEDIUM/OPTIM: mux-quic: implement purg_list

This commit is part of the current serie which aims to refactor and
improve overall performance of QUIC MUX I/O handler.

qcc_io_process() is responsible to perform some internal operations on
QUIC MUX after I/O completion. It is notably called on every qcc_io_cb()
tasklet handler.

The most intensive work on it is the purging of QCS instances after
transfer completion. This was implemented by looping on QCC streams tree
and inspecting the state of every QCS. The purpose of this commit is to
optimize this processing.

A new purg_list QCC member is defined. It is responsible to list every
QCS instances whose transfer has been completed. It is thus safe to
reuse <el_send> QCS list attach point. Stream purging will thus only
loop on purg_list instead of every known QCS.

This should be backported up to 3.1.

(cherry picked from commit e296585ae9eb86f898614aed2b04929018340ee7)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
include/haproxy/mux_quic-t.h
src/mux_quic.c