Add some traces to better follow QUIC MUX scheduling, in particular with
pacing interaction.
This should be backported up to 3.1.
enum quic_tx_err ret = QUIC_TX_ERR_PACING;
int sent = 0;
+ TRACE_ENTER(QMUX_EV_QCC_WAKE, qcc->conn);
+
/* This function is reserved for pacing usage. */
BUG_ON(!qcc_is_pacing_active(qcc->conn));
HA_ATOMIC_AND(&qcc->wait_event.tasklet->state, ~TASK_F_USR1);
}
}
+
+ TRACE_LEAVE(QMUX_EV_QCC_WAKE, qcc->conn);
}
struct task *qcc_io_cb(struct task *t, void *ctx, unsigned int status)
if (status & TASK_F_USR1) {
qcc_purge_sending(qcc);
- return NULL;
+ goto end;
}
if (!(qcc->wait_event.events & SUB_RETRY_SEND))
/* Wake up connection layer if on wait-for-handshake. */
if (qc->subs && qc->subs->events & SUB_RETRY_RECV) {
+ TRACE_STATE("notify upper layer (recv)", QUIC_EV_CONN_IO_CB, qc);
tasklet_wakeup(qc->subs->tasklet);
qc->subs->events &= ~SUB_RETRY_RECV;
if (!qc->subs->events)
{
const struct quic_pktns *pktns = qc->apktns;
+ TRACE_STATE("notify upper layer (send)", QUIC_EV_CONN_IO_CB, qc);
+
/* Wake up MUX for new emission unless there is no congestion room or
* connection FD is not ready.
*/