mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
sctp: improve consistency
No functional change intended. MFC: 1 week
This commit is contained in:
parent
d6327ae8c1
commit
7a051c0a78
4 changed files with 29 additions and 29 deletions
|
|
@ -1871,9 +1871,9 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
|
|||
asoc->strmout[i].abandoned_sent[0] = 0;
|
||||
asoc->strmout[i].abandoned_unsent[0] = 0;
|
||||
#endif
|
||||
stcb->asoc.strmout[i].sid = i;
|
||||
stcb->asoc.strmout[i].next_mid_ordered = 0;
|
||||
stcb->asoc.strmout[i].next_mid_unordered = 0;
|
||||
stcb->asoc.strmout[i].sid = i;
|
||||
stcb->asoc.strmout[i].last_msg_incomplete = 0;
|
||||
}
|
||||
TAILQ_FOREACH_SAFE(strrst, &asoc->resetHead, next_resp, nstrrst) {
|
||||
|
|
|
|||
|
|
@ -3629,9 +3629,8 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er
|
|||
}
|
||||
for (i = 0; i < stcb->asoc.streamoutcnt; i++) {
|
||||
TAILQ_INIT(&stcb->asoc.strmout[i].outqueue);
|
||||
stcb->asoc.ss_functions.sctp_ss_init_stream(stcb, &stcb->asoc.strmout[i], NULL);
|
||||
stcb->asoc.strmout[i].chunks_on_queues = 0;
|
||||
stcb->asoc.strmout[i].next_mid_ordered = 0;
|
||||
stcb->asoc.strmout[i].next_mid_unordered = 0;
|
||||
#if defined(SCTP_DETAILED_STR_STATS)
|
||||
for (j = 0; j < SCTP_PR_SCTP_MAX + 1; j++) {
|
||||
stcb->asoc.strmout[i].abandoned_sent[j] = 0;
|
||||
|
|
@ -3641,10 +3640,11 @@ sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *er
|
|||
stcb->asoc.strmout[i].abandoned_sent[0] = 0;
|
||||
stcb->asoc.strmout[i].abandoned_unsent[0] = 0;
|
||||
#endif
|
||||
stcb->asoc.strmout[i].next_mid_ordered = 0;
|
||||
stcb->asoc.strmout[i].next_mid_unordered = 0;
|
||||
stcb->asoc.strmout[i].sid = i;
|
||||
stcb->asoc.strmout[i].last_msg_incomplete = 0;
|
||||
stcb->asoc.strmout[i].state = SCTP_STREAM_OPENING;
|
||||
stcb->asoc.ss_functions.sctp_ss_init_stream(stcb, &stcb->asoc.strmout[i], NULL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -12136,18 +12136,18 @@ sctp_send_str_reset_req(struct sctp_tcb *stcb,
|
|||
stcb->asoc.ss_functions.sctp_ss_clear(stcb, &stcb->asoc, 0, 1);
|
||||
for (i = 0; i < stcb->asoc.streamoutcnt; i++) {
|
||||
TAILQ_INIT(&stcb->asoc.strmout[i].outqueue);
|
||||
stcb->asoc.strmout[i].chunks_on_queues = oldstream[i].chunks_on_queues;
|
||||
stcb->asoc.strmout[i].next_mid_ordered = oldstream[i].next_mid_ordered;
|
||||
stcb->asoc.strmout[i].next_mid_unordered = oldstream[i].next_mid_unordered;
|
||||
stcb->asoc.strmout[i].last_msg_incomplete = oldstream[i].last_msg_incomplete;
|
||||
stcb->asoc.strmout[i].sid = i;
|
||||
stcb->asoc.strmout[i].state = oldstream[i].state;
|
||||
/* FIX ME FIX ME */
|
||||
/*
|
||||
* This should be a SS_COPY operation FIX ME STREAM
|
||||
* SCHEDULER EXPERT
|
||||
*/
|
||||
stcb->asoc.ss_functions.sctp_ss_init_stream(stcb, &stcb->asoc.strmout[i], &oldstream[i]);
|
||||
stcb->asoc.strmout[i].chunks_on_queues = oldstream[i].chunks_on_queues;
|
||||
stcb->asoc.strmout[i].next_mid_ordered = oldstream[i].next_mid_ordered;
|
||||
stcb->asoc.strmout[i].next_mid_unordered = oldstream[i].next_mid_unordered;
|
||||
stcb->asoc.strmout[i].last_msg_incomplete = oldstream[i].last_msg_incomplete;
|
||||
stcb->asoc.strmout[i].sid = i;
|
||||
stcb->asoc.strmout[i].state = oldstream[i].state;
|
||||
/* now anything on those queues? */
|
||||
TAILQ_FOREACH_SAFE(sp, &oldstream[i].outqueue, next, nsp) {
|
||||
TAILQ_REMOVE(&oldstream[i].outqueue, sp, next);
|
||||
|
|
|
|||
|
|
@ -548,6 +548,20 @@ struct sctp_stream_in {
|
|||
TAILQ_HEAD(sctpwheel_listhead, sctp_stream_out);
|
||||
TAILQ_HEAD(sctplist_listhead, sctp_stream_queue_pending);
|
||||
|
||||
/*
|
||||
* This union holds all data necessary for
|
||||
* different stream schedulers.
|
||||
*/
|
||||
struct scheduling_data {
|
||||
struct sctp_stream_out *locked_on_sending;
|
||||
/* circular looking for output selection */
|
||||
struct sctp_stream_out *last_out_stream;
|
||||
union {
|
||||
struct sctpwheel_listhead wheel;
|
||||
struct sctplist_listhead list;
|
||||
} out;
|
||||
};
|
||||
|
||||
/* Round-robin schedulers */
|
||||
struct ss_rr {
|
||||
/* next link in wheel */
|
||||
|
|
@ -570,20 +584,6 @@ struct ss_fb {
|
|||
int32_t rounds;
|
||||
};
|
||||
|
||||
/*
|
||||
* This union holds all data necessary for
|
||||
* different stream schedulers.
|
||||
*/
|
||||
struct scheduling_data {
|
||||
struct sctp_stream_out *locked_on_sending;
|
||||
/* circular looking for output selection */
|
||||
struct sctp_stream_out *last_out_stream;
|
||||
union {
|
||||
struct sctpwheel_listhead wheel;
|
||||
struct sctplist_listhead list;
|
||||
} out;
|
||||
};
|
||||
|
||||
/*
|
||||
* This union holds all parameters per stream
|
||||
* necessary for different stream schedulers.
|
||||
|
|
@ -601,8 +601,6 @@ union scheduling_parameters {
|
|||
#define SCTP_STREAM_RESET_PENDING 0x03
|
||||
#define SCTP_STREAM_RESET_IN_FLIGHT 0x04
|
||||
|
||||
#define SCTP_MAX_STREAMS_AT_ONCE_RESET 200
|
||||
|
||||
/* This struct is used to track the traffic on outbound streams */
|
||||
struct sctp_stream_out {
|
||||
struct sctp_streamhead outqueue;
|
||||
|
|
@ -627,6 +625,8 @@ struct sctp_stream_out {
|
|||
uint8_t state;
|
||||
};
|
||||
|
||||
#define SCTP_MAX_STREAMS_AT_ONCE_RESET 200
|
||||
|
||||
/* used to keep track of the addresses yet to try to add/delete */
|
||||
TAILQ_HEAD(sctp_asconf_addrhead, sctp_asconf_addr);
|
||||
struct sctp_asconf_addr {
|
||||
|
|
|
|||
|
|
@ -1291,9 +1291,8 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
|
|||
* that were dropped must be notified to the upper layer as
|
||||
* failed to send.
|
||||
*/
|
||||
asoc->strmout[i].next_mid_ordered = 0;
|
||||
asoc->strmout[i].next_mid_unordered = 0;
|
||||
TAILQ_INIT(&asoc->strmout[i].outqueue);
|
||||
asoc->ss_functions.sctp_ss_init_stream(stcb, &asoc->strmout[i], NULL);
|
||||
asoc->strmout[i].chunks_on_queues = 0;
|
||||
#if defined(SCTP_DETAILED_STR_STATS)
|
||||
for (j = 0; j < SCTP_PR_SCTP_MAX + 1; j++) {
|
||||
|
|
@ -1304,10 +1303,11 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
|
|||
asoc->strmout[i].abandoned_sent[0] = 0;
|
||||
asoc->strmout[i].abandoned_unsent[0] = 0;
|
||||
#endif
|
||||
asoc->strmout[i].next_mid_ordered = 0;
|
||||
asoc->strmout[i].next_mid_unordered = 0;
|
||||
asoc->strmout[i].sid = i;
|
||||
asoc->strmout[i].last_msg_incomplete = 0;
|
||||
asoc->strmout[i].state = SCTP_STREAM_OPENING;
|
||||
asoc->ss_functions.sctp_ss_init_stream(stcb, &asoc->strmout[i], NULL);
|
||||
}
|
||||
asoc->ss_functions.sctp_ss_init(stcb, asoc, 0);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue