MINOR: muxes: Wakup the data layer from a mux stream with TASK_WOKEN_IO state

Now, when a mux stream is waking its data layer up for receives or sends, it
uses the TASK_WOKEN_IO state. The state is not used by the stconn I/O
callback function for now.
This commit is contained in:
Christopher Faulet 2026-03-05 17:13:48 +01:00
parent 376487cca9
commit 26a0817c1a
5 changed files with 12 additions and 11 deletions

View File

@ -862,7 +862,7 @@ static void fcgi_strm_notify_recv(struct fcgi_strm *fstrm)
{
if (fstrm->subs && (fstrm->subs->events & SUB_RETRY_RECV)) {
TRACE_POINT(FCGI_EV_STRM_WAKE, fstrm->fconn->conn, fstrm);
tasklet_wakeup(fstrm->subs->tasklet);
tasklet_wakeup(fstrm->subs->tasklet, TASK_WOKEN_IO);
fstrm->subs->events &= ~SUB_RETRY_RECV;
if (!fstrm->subs->events)
fstrm->subs = NULL;
@ -875,7 +875,7 @@ static void fcgi_strm_notify_send(struct fcgi_strm *fstrm)
if (fstrm->subs && (fstrm->subs->events & SUB_RETRY_SEND)) {
TRACE_POINT(FCGI_EV_STRM_WAKE, fstrm->fconn->conn, fstrm);
fstrm->flags |= FCGI_SF_NOTIFIED;
tasklet_wakeup(fstrm->subs->tasklet);
tasklet_wakeup(fstrm->subs->tasklet, TASK_WOKEN_IO);
fstrm->subs->events &= ~SUB_RETRY_SEND;
if (!fstrm->subs->events)
fstrm->subs = NULL;

View File

@ -3716,7 +3716,7 @@ static void h1_wake_stream_for_recv(struct h1s *h1s)
{
if (h1s && h1s->subs && h1s->subs->events & SUB_RETRY_RECV) {
TRACE_POINT(H1_EV_STRM_WAKE, h1s->h1c->conn, h1s);
tasklet_wakeup(h1s->subs->tasklet);
tasklet_wakeup(h1s->subs->tasklet, TASK_WOKEN_IO);
h1s->subs->events &= ~SUB_RETRY_RECV;
if (!h1s->subs->events)
h1s->subs = NULL;
@ -3726,7 +3726,7 @@ static void h1_wake_stream_for_send(struct h1s *h1s)
{
if (h1s && h1s->subs && h1s->subs->events & SUB_RETRY_SEND) {
TRACE_POINT(H1_EV_STRM_WAKE, h1s->h1c->conn, h1s);
tasklet_wakeup(h1s->subs->tasklet);
tasklet_wakeup(h1s->subs->tasklet, TASK_WOKEN_IO);
h1s->subs->events &= ~SUB_RETRY_SEND;
if (!h1s->subs->events)
h1s->subs = NULL;

View File

@ -1668,9 +1668,10 @@ static void __maybe_unused h2s_notify_recv(struct h2s *h2s)
TRACE_POINT(H2_EV_STRM_WAKE, h2s->h2c->conn, h2s);
if (h2s->h2c->next_tasklet ||
(th_ctx->current && th_ctx->current->process == h2_io_cb))
h2s->h2c->next_tasklet = tasklet_wakeup_after(h2s->h2c->next_tasklet, h2s->subs->tasklet);
h2s->h2c->next_tasklet = tasklet_wakeup_after(h2s->h2c->next_tasklet, h2s->subs->tasklet,
TASK_WOKEN_IO);
else
tasklet_wakeup(h2s->subs->tasklet);
tasklet_wakeup(h2s->subs->tasklet, TASK_WOKEN_IO);
h2s->subs->events &= ~SUB_RETRY_RECV;
if (!h2s->subs->events)
h2s->subs = NULL;
@ -1683,7 +1684,7 @@ static void __maybe_unused h2s_notify_send(struct h2s *h2s)
if (h2s->subs && h2s->subs->events & SUB_RETRY_SEND) {
TRACE_POINT(H2_EV_STRM_WAKE, h2s->h2c->conn, h2s);
h2s->flags |= H2_SF_NOTIFIED;
tasklet_wakeup(h2s->subs->tasklet);
tasklet_wakeup(h2s->subs->tasklet, TASK_WOKEN_IO);
h2s->subs->events &= ~SUB_RETRY_SEND;
if (!h2s->subs->events)
h2s->subs = NULL;

View File

@ -548,7 +548,7 @@ void qcs_notify_recv(struct qcs *qcs)
{
if (qcs->subs && qcs->subs->events & SUB_RETRY_RECV) {
TRACE_POINT(QMUX_EV_STRM_WAKE, qcs->qcc->conn, qcs);
tasklet_wakeup(qcs->subs->tasklet);
tasklet_wakeup(qcs->subs->tasklet, TASK_WOKEN_IO);
qcs->subs->events &= ~SUB_RETRY_RECV;
if (!qcs->subs->events)
qcs->subs = NULL;
@ -559,7 +559,7 @@ void qcs_notify_send(struct qcs *qcs)
{
if (qcs->subs && qcs->subs->events & SUB_RETRY_SEND) {
TRACE_POINT(QMUX_EV_STRM_WAKE, qcs->qcc->conn, qcs);
tasklet_wakeup(qcs->subs->tasklet);
tasklet_wakeup(qcs->subs->tasklet, TASK_WOKEN_IO);
qcs->subs->events &= ~SUB_RETRY_SEND;
if (!qcs->subs->events)
qcs->subs = NULL;

View File

@ -952,7 +952,7 @@ static void spop_strm_notify_recv(struct spop_strm *spop_strm)
{
if (spop_strm->subs && (spop_strm->subs->events & SUB_RETRY_RECV)) {
TRACE_POINT(SPOP_EV_STRM_WAKE, spop_strm->spop_conn->conn, spop_strm);
tasklet_wakeup(spop_strm->subs->tasklet);
tasklet_wakeup(spop_strm->subs->tasklet, TASK_WOKEN_IO);
spop_strm->subs->events &= ~SUB_RETRY_RECV;
if (!spop_strm->subs->events)
spop_strm->subs = NULL;
@ -965,7 +965,7 @@ static void spop_strm_notify_send(struct spop_strm *spop_strm)
if (spop_strm->subs && (spop_strm->subs->events & SUB_RETRY_SEND)) {
TRACE_POINT(SPOP_EV_STRM_WAKE, spop_strm->spop_conn->conn, spop_strm);
spop_strm->flags |= SPOP_SF_NOTIFIED;
tasklet_wakeup(spop_strm->subs->tasklet);
tasklet_wakeup(spop_strm->subs->tasklet, TASK_WOKEN_IO);
spop_strm->subs->events &= ~SUB_RETRY_SEND;
if (!spop_strm->subs->events)
spop_strm->subs = NULL;