95 if (with_strq != NULL) {
170 (
"locked_on_sending %p not scheduled",
176 (
"last_out_stream %p not scheduled", (
void *)strqt));
188 (
"strq %p not scheduled", (
void *)strq));
199 if (net != NULL && strq != NULL &&
202 TAILQ_FIRST(&strq->
outqueue)->net != NULL &&
203 TAILQ_FIRST(&strq->
outqueue)->net != net) {
224 KASSERT(strq != NULL, (
"strq is NULL"));
302 while (strqt != NULL && (strqt->
sid < strq->
sid)) {
306 TAILQ_INSERT_BEFORE(strqt, strq,
ss_params.
ss.
rr.next_spoke);
336 (
"last_out_stream %p not scheduled", (
void *)strqt));
348 (
"strq %p not scheduled", (
void *)strq));
359 if (net != NULL && strq != NULL &&
362 TAILQ_FIRST(&strq->
outqueue)->net != NULL &&
363 TAILQ_FIRST(&strq->
outqueue)->net != net) {
404 if (with_strq != NULL) {
413 if (with_strq != NULL) {
489 (
"locked_on_sending %p not scheduled",
495 (
"last_out_stream %p not scheduled", (
void *)strqt));
510 (
"strq %p not scheduled", (
void *)strq));
521 if (net != NULL && strq != NULL &&
524 TAILQ_FIRST(&strq->
outqueue)->net != NULL &&
525 TAILQ_FIRST(&strq->
outqueue)->net != net) {
589 if (with_strq != NULL) {
598 if (with_strq != NULL) {
661 (
"locked_on_sending %p not scheduled",
672 if ((strqt != NULL) &&
675 (net == NULL || (TAILQ_FIRST(&strqt->outqueue) && TAILQ_FIRST(&strqt->outqueue)->net == NULL) ||
676 (net != NULL && TAILQ_FIRST(&strqt->outqueue) && TAILQ_FIRST(&strqt->outqueue)->net != NULL &&
677 TAILQ_FIRST(&strqt->outqueue)->net == net))))) {
678 if ((strqt->ss_params.ss.fb.rounds >= 0) &&
689 }
while (strqt != strq);
757 while (sp != NULL && x < n) {
758 sp = TAILQ_NEXT(sp,
next);
781 KASSERT(sp->
scheduled, (
"sp %p not scheduled", (
void *)sp));
783 sp->scheduled =
false;
792 if (with_strq != NULL) {
863 if (
net != NULL && strq != NULL &&
866 TAILQ_FIRST(&strq->
outqueue)->net != NULL &&
868 sp = TAILQ_NEXT(sp, ss_next);
884 KASSERT(strq != NULL, (
"strq is NULL"));
#define SCTP_TCB_SEND_LOCK_ASSERT(_tcb)
#define SCTP_BASE_SYSCTL(__m)
static void sctp_ss_default_init(struct sctp_tcb *stcb, struct sctp_association *asoc)
static void sctp_ss_fcfs_init(struct sctp_tcb *stcb, struct sctp_association *asoc)
static void sctp_ss_fcfs_scheduled(struct sctp_tcb *stcb, struct sctp_nets *net SCTP_UNUSED, struct sctp_association *asoc, struct sctp_stream_out *strq, int moved_how_much SCTP_UNUSED)
static void sctp_ss_fcfs_remove(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq SCTP_UNUSED, struct sctp_stream_queue_pending *sp)
static int sctp_ss_default_set_value(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc SCTP_UNUSED, struct sctp_stream_out *strq SCTP_UNUSED, uint16_t value SCTP_UNUSED)
static int sctp_ss_prio_set_value(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, uint16_t value)
static void sctp_ss_prio_add(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED)
static struct sctp_stream_out * sctp_ss_fb_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, struct sctp_association *asoc)
static int sctp_ss_default_get_value(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc SCTP_UNUSED, struct sctp_stream_out *strq SCTP_UNUSED, uint16_t *value SCTP_UNUSED)
static bool sctp_ss_default_is_user_msgs_incomplete(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc)
static void sctp_ss_fcfs_add(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq SCTP_UNUSED, struct sctp_stream_queue_pending *sp)
static void sctp_ss_default_init_stream(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq)
static void sctp_ss_fb_scheduled(struct sctp_tcb *stcb, struct sctp_nets *net SCTP_UNUSED, struct sctp_association *asoc, struct sctp_stream_out *strq, int moved_how_much SCTP_UNUSED)
static void sctp_ss_fcfs_init_stream(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq)
static void sctp_ss_prio_init_stream(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq)
static void sctp_ss_default_remove(struct sctp_tcb *, struct sctp_association *, struct sctp_stream_out *, struct sctp_stream_queue_pending *)
static struct sctp_stream_out * sctp_ss_rrp_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net SCTP_UNUSED, struct sctp_association *asoc)
static void sctp_ss_fb_clear(struct sctp_tcb *stcb, struct sctp_association *asoc, bool clear_values)
static struct sctp_stream_out * sctp_ss_prio_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, struct sctp_association *asoc)
static void sctp_ss_default_add(struct sctp_tcb *, struct sctp_association *, struct sctp_stream_out *, struct sctp_stream_queue_pending *)
static void sctp_ss_fb_add(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED)
static void sctp_ss_default_scheduled(struct sctp_tcb *stcb, struct sctp_nets *net SCTP_UNUSED, struct sctp_association *asoc, struct sctp_stream_out *strq, int moved_how_much SCTP_UNUSED)
static void sctp_ss_rr_add(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED)
static bool sctp_ss_default_is_empty(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc)
static void sctp_ss_fb_remove(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED)
static struct sctp_stream_out * sctp_ss_fcfs_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, struct sctp_association *asoc)
static struct sctp_stream_out * sctp_ss_default_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, struct sctp_association *asoc)
static void sctp_ss_prio_remove(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp SCTP_UNUSED)
static void sctp_ss_fb_init_stream(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq)
static void sctp_ss_prio_clear(struct sctp_tcb *stcb, struct sctp_association *asoc, bool clear_values)
static void sctp_ss_rrp_packet_done(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, struct sctp_association *asoc)
static bool sctp_ss_fcfs_is_empty(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc)
static void sctp_ss_default_clear(struct sctp_tcb *stcb, struct sctp_association *asoc, bool clear_values SCTP_UNUSED)
static int sctp_ss_prio_get_value(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_association *asoc SCTP_UNUSED, struct sctp_stream_out *strq, uint16_t *value)
static void sctp_ss_fcfs_clear(struct sctp_tcb *stcb, struct sctp_association *asoc, bool clear_values SCTP_UNUSED)
static void sctp_ss_default_packet_done(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net SCTP_UNUSED, struct sctp_association *asoc SCTP_UNUSED)
struct sctpwheel_listhead wheel
struct sctplist_listhead list
struct sctp_stream_out * locked_on_sending
struct sctp_stream_out * last_out_stream
union scheduling_data::@35 out
union scheduling_parameters::@36 ss
struct sctp_stream_out * strmout
unsigned int stream_queue_cnt
struct sctp_ss_functions ss_functions
struct scheduling_data ss_data
void(* sctp_ss_add_to_stream)(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp)
void(* sctp_ss_init)(struct sctp_tcb *stcb, struct sctp_association *asoc)
struct scheduling_parameters ss_params
struct sctp_streamhead outqueue
struct sctp_association asoc