Improve the round robin stream scheduler.

Approved by: rrs (mentor)
MFC after: 3 days
This commit is contained in:
Michael Tuexen 2009-10-26 19:23:34 +00:00
parent dd2ffb07c6
commit ac9bce0f3b

View File

@ -7169,20 +7169,14 @@ sctp_select_a_stream(struct sctp_tcb *stcb, struct sctp_association *asoc)
/* Find the next stream to use */
if (asoc->last_out_stream == NULL) {
strq = asoc->last_out_stream = TAILQ_FIRST(&asoc->out_wheel);
if (asoc->last_out_stream == NULL) {
/* huh nothing on the wheel, TSNH */
return (NULL);
strq = TAILQ_FIRST(&asoc->out_wheel);
} else {
strq = TAILQ_NEXT(asoc->last_out_stream, next_spoke);
if (strq == NULL) {
strq = TAILQ_FIRST(&asoc->out_wheel);
}
goto done_it;
}
strq = TAILQ_NEXT(asoc->last_out_stream, next_spoke);
done_it:
if (strq == NULL) {
strq = asoc->last_out_stream = TAILQ_FIRST(&asoc->out_wheel);
}
return (strq);
}