svn commit: r364547 - stable/12/sys/netinet
Michael Tuexen
tuexen at FreeBSD.org
Sun Aug 23 21:22:14 UTC 2020
Author: tuexen
Date: Sun Aug 23 21:22:13 2020
New Revision: 364547
URL: https://svnweb.freebsd.org/changeset/base/364547
Log:
MFC r358028:
Fix the non-default stream schedulers such that do not interleave
user messages when it is now allowed.
Thanks to Christian Wright for reporting the issue for the userland
stack and providing a fix for the priority scheduler.
Modified:
stable/12/sys/netinet/sctp_ss_functions.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/netinet/sctp_ss_functions.c
==============================================================================
--- stable/12/sys/netinet/sctp_ss_functions.c Sun Aug 23 21:19:17 2020 (r364546)
+++ stable/12/sys/netinet/sctp_ss_functions.c Sun Aug 23 21:22:13 2020 (r364547)
@@ -517,6 +517,9 @@ sctp_ss_prio_select(struct sctp_tcb *stcb SCTP_UNUSED,
{
struct sctp_stream_out *strq, *strqt, *strqn;
+ if (asoc->ss_data.locked_on_sending) {
+ return (asoc->ss_data.locked_on_sending);
+ }
strqt = asoc->ss_data.last_out_stream;
prio_again:
/* Find the next stream to use */
@@ -694,6 +697,9 @@ sctp_ss_fb_select(struct sctp_tcb *stcb SCTP_UNUSED, s
{
struct sctp_stream_out *strq = NULL, *strqt;
+ if (asoc->ss_data.locked_on_sending) {
+ return (asoc->ss_data.locked_on_sending);
+ }
if (asoc->ss_data.last_out_stream == NULL ||
TAILQ_FIRST(&asoc->ss_data.out.wheel) == TAILQ_LAST(&asoc->ss_data.out.wheel, sctpwheel_listhead)) {
strqt = TAILQ_FIRST(&asoc->ss_data.out.wheel);
@@ -900,6 +906,9 @@ sctp_ss_fcfs_select(struct sctp_tcb *stcb SCTP_UNUSED,
struct sctp_stream_out *strq;
struct sctp_stream_queue_pending *sp;
+ if (asoc->ss_data.locked_on_sending) {
+ return (asoc->ss_data.locked_on_sending);
+ }
sp = TAILQ_FIRST(&asoc->ss_data.out.list);
default_again:
if (sp != NULL) {
More information about the svn-src-all
mailing list