From: Amaury Denoyelle Date: Thu, 13 Apr 2023 09:48:38 +0000 (+0200) Subject: MINOR: quic: remove TID ref from quic_conn X-Git-Tag: v2.8-dev8~113 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=66947283ba84b43f4f346924a35c7ba85e365c7e;p=thirdparty%2Fhaproxy.git MINOR: quic: remove TID ref from quic_conn Remove member in quic_conn. This is moved to quic_connection_id instance. For the moment, this change has no impact. Indeed, qc.tid reference could easily be replaced by tid as all of this work was already done on the connection thread. However, it is planified to support quic_conn thread migration in the future, so removal of qc.tid will simplify this. This should be backported up to 2.7. --- diff --git a/include/haproxy/quic_conn-t.h b/include/haproxy/quic_conn-t.h index 5e6b5d6c09..d366a0b488 100644 --- a/include/haproxy/quic_conn-t.h +++ b/include/haproxy/quic_conn-t.h @@ -646,8 +646,6 @@ struct quic_conn { int fd; /* QUIC transport parameters TLS extension */ int tps_tls_ext; - /* Thread ID this connection is attached to */ - int tid; int state; enum qc_mux_state mux_state; /* status of the connection/mux layer */ struct quic_err err; diff --git a/src/quic_conn.c b/src/quic_conn.c index 710f236b60..e1725e5c9b 100644 --- a/src/quic_conn.c +++ b/src/quic_conn.c @@ -5573,11 +5573,6 @@ static struct quic_conn *qc_new_conn(const struct quic_version *qv, int ipv4, qc->wait_event.tasklet->process = quic_conn_io_cb; qc->wait_event.tasklet->context = qc; qc->wait_event.events = 0; - /* Set tasklet tid based on the SCID selected by us for this - * connection. The upper layer will also be binded on the same thread. - */ - qc->tid = quic_get_cid_tid(qc->scid.data, &l->rx); - qc->wait_event.tasklet->tid = qc->tid; qc->subs = NULL; if (qc_conn_alloc_ssl_ctx(qc) || @@ -5715,7 +5710,7 @@ static int quic_conn_init_timer(struct quic_conn *qc) /* Attach this task to the same thread ID used for the connection */ TRACE_ENTER(QUIC_EV_CONN_NEW, qc); - qc->timer_task = task_new_on(qc->tid); + qc->timer_task = task_new_here(); if (!qc->timer_task) { TRACE_ERROR("timer task allocation failed", QUIC_EV_CONN_NEW, qc); goto leave; @@ -8419,7 +8414,7 @@ static int cli_io_handler_dump_quic(struct appctx *appctx) } /* CIDs */ - chunk_appendf(&trash, "* %p[%02u]: scid=", qc, qc->tid); + chunk_appendf(&trash, "* %p[%02u]: scid=", qc, ctx->thr); for (cid_len = 0; cid_len < qc->scid.len; ++cid_len) chunk_appendf(&trash, "%02x", qc->scid.data[cid_len]); while (cid_len++ < 20) diff --git a/src/quic_sock.c b/src/quic_sock.c index 6dde545e9b..905ecab85f 100644 --- a/src/quic_sock.c +++ b/src/quic_sock.c @@ -879,8 +879,8 @@ struct quic_accept_queue *quic_accept_queues; */ void quic_accept_push_qc(struct quic_conn *qc) { - struct quic_accept_queue *queue = &quic_accept_queues[qc->tid]; - struct li_per_thread *lthr = &qc->li->per_thr[qc->tid]; + struct quic_accept_queue *queue = &quic_accept_queues[tid]; + struct li_per_thread *lthr = &qc->li->per_thr[tid]; /* early return if accept is already in progress/done for this * connection @@ -904,7 +904,7 @@ void quic_accept_push_qc(struct quic_conn *qc) MT_LIST_APPEND(<hr->quic_accept.conns, &qc->accept_list); /* 3. wake up the queue tasklet */ - tasklet_wakeup(quic_accept_queues[qc->tid].tasklet); + tasklet_wakeup(quic_accept_queues[tid].tasklet); } /* Tasklet handler to accept QUIC connections. Call listener_accept on every