TRACE_LEAVE(QMUX_EV_QCS_NEW, qcc->conn);
}
+void qcc_wakeup(struct qcc *qcc)
+{
+ tasklet_wakeup(qcc->wait_event.tasklet);
+}
+
/* Mark a stream as open if it was idle. This can be used on every
* successful emission/reception operation to update the stream state.
*/
* is too tedious too not forget a wakeup outside of this function for
* the moment.
*/
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
}
/* Increment glitch counter for <qcc> connection by <inc> steps. If configured
frm->max_stream_data.max_stream_data = qcs->rx.msd;
LIST_APPEND(&qcc->lfctl.frms, &frm->list);
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
}
conn_fctl:
frm->max_data.max_data = qcc->lfctl.md;
LIST_APPEND(&qcs->qcc->lfctl.frms, &frm->list);
- tasklet_wakeup(qcs->qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
}
TRACE_LEAVE(QMUX_EV_QCS_RECV, qcc->conn, qcs);
}
qcc_send_stream(qcs, 1, 0);
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
}
/* Register <qcs> stream for emission of STREAM, STOP_SENDING or RESET_STREAM.
qcs->flags |= (QC_SF_TO_STOP_SENDING|QC_SF_READ_ABORTED);
qcc_send_stream(qcs, 1, 0);
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
end:
TRACE_LEAVE(QMUX_EV_QCC_NEW, qcc->conn, qcs);
TRACE_ERROR("app ops finalize error", QMUX_EV_QCC_NEW, qcc->conn);
goto err;
}
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
}
TRACE_LEAVE(QMUX_EV_QCC_NEW, qcc->conn);
TRACE_DATA("increase remote max-data", QMUX_EV_QCC_RECV, qcc->conn);
if (unblock_real)
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
if (unblock_soft)
qcc_notify_fctl(qcc);
TRACE_DATA("increase remote max-stream-data", QMUX_EV_QCC_RECV|QMUX_EV_QCS_RECV, qcc->conn, qcs);
if (unblock_real) {
/* TODO optim: only wakeup IO-CB if stream has data to sent. */
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
}
if (unblock_soft) {
frm->max_streams_bidi.max_streams = qcc->lfctl.ms_bidi +
qcc->lfctl.cl_bidi_r;
LIST_APPEND(&qcc->lfctl.frms, &frm->list);
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
qcc->lfctl.ms_bidi += qcc->lfctl.cl_bidi_r;
qcc->lfctl.cl_bidi_r = 0;
}
if (!qfctl_rblocked(&qcc->tx.fc))
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
}
out:
LIST_APPEND(&mux_stopping_data[tid].list, &conn->stopping_list);
/* init read cycle */
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
TRACE_LEAVE(QMUX_EV_QCC_NEW, conn);
return 0;
qcs->flags &= ~QC_SF_DEM_FULL;
if (!(qcc->flags & QC_CF_ERRL))
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
}
TRACE_LEAVE(QMUX_EV_STRM_RECV, qcc->conn, qcs);
if (data || fin)
qcc_send_stream(qcs, 0, data);
if (!(qcs->qcc->wait_event.events & SUB_RETRY_SEND))
- tasklet_wakeup(qcs->qcc->wait_event.tasklet);
+ qcc_wakeup(qcs->qcc);
}
end:
if (data || qcs->flags & QC_SF_FIN_STREAM)
qcc_send_stream(qcs, 0, data);
if (!(qcs->qcc->wait_event.events & SUB_RETRY_SEND))
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
end:
TRACE_LEAVE(QMUX_EV_STRM_SEND, qcs->qcc->conn, qcs);
qcc_reset_stream(qcs, 0);
}
- tasklet_wakeup(qcc->wait_event.tasklet);
+ qcc_wakeup(qcc);
}
out: