]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MINOR: quic: Improvements for the datagrams receipt
authorFrédéric Lécaille <flecaille@haproxy.com>
Thu, 30 Jun 2022 09:28:56 +0000 (11:28 +0200)
committerFrédéric Lécaille <flecaille@haproxy.com>
Thu, 30 Jun 2022 12:34:27 +0000 (14:34 +0200)
commit1b0707f3e7ee496e4398f87e8607909a7edcafbf
treee53088bf245ddf98dcc770cbea37690a33aa29b1
parent1ca14950e6b6de8d200726a03258c398446846e4
MINOR: quic: Improvements for the datagrams receipt

First we add a loop around recfrom() into the most low level I/O handler
quic_sock_fd_iocb() to collect as most as possible datagrams before during
its tasklet wakeup with a limit: we recvfrom() at most "maxpollevents"
datagrams. Furthermore we add a local task list into the datagram handler
quic_lstnr_dghdlr() which is passed to the first datagrams parser qc_lstnr_pkt_rcv().
This latter parser only identifies the connection associated to the datagrams then
wakeup the highest level packet parser I/O handlers (quic_conn.*io_cb()) after
it is done, thanks to the call to tasklet_wakeup_after() which replaces from now on
the call to tasklet_wakeup(). This should reduce drastically the latency and the
chances to fulfil the RX buffers at the QUIC connections level as reported in
GH #1737 by Tritan.

These modifications depend on this commit:
    "MINOR: task: Add tasklet_wakeup_after()"

Must be backported to 2.6 with the previous commit.
src/quic_sock.c
src/xprt_quic.c