diff options
| author | Jon Grimm <jgrimm@touki.austin.ibm.com> | 2003-04-24 22:15:15 -0500 |
|---|---|---|
| committer | Jon Grimm <jgrimm@touki.austin.ibm.com> | 2003-04-24 22:15:15 -0500 |
| commit | a93aba9ba0ca6cf1e1fecdb36f4ffa83ee57dc82 (patch) | |
| tree | ec278187a2c02a20b3b9bae098687609bc271a1b /include/net | |
| parent | 96a4ef027fe86905fe5a7f4799be0ffb9492ec30 (diff) | |
[SCTP] Control chunk bundling.
Control chunks should be bundled (implementor's guide advises
specifically of case were ERROR should be bundled with CE to avoid
race condition. Patch introduces a outq_cork/outq_uncork to
immediate transferral of control chunks and then release to the
packet bundling code.
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/sctp/structs.h | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 6ab0aabd68ed..81f3b83c47cf 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -963,11 +963,14 @@ struct sctp_outq { /* How many unackd bytes do we have in-flight? */ __u32 outstanding_bytes; + /* Corked? */ + char cork; + /* Is this structure empty? */ - int empty; + char empty; /* Are we kfree()able? */ - int malloced; + char malloced; }; struct sctp_outq *sctp_outq_new(struct sctp_association *); @@ -985,10 +988,16 @@ int sctp_outq_set_output_handlers(struct sctp_outq *, sctp_outq_ohandler_t build, sctp_outq_ohandler_force_t force); void sctp_outq_restart(struct sctp_outq *); + void sctp_retransmit(struct sctp_outq *, struct sctp_transport *, sctp_retransmit_reason_t); void sctp_retransmit_mark(struct sctp_outq *, struct sctp_transport *, __u8); - +int sctp_outq_uncork(struct sctp_outq *); +/* Uncork and flush an outqueue. */ +static inline void sctp_outq_cork(struct sctp_outq *q) +{ + q->cork = 1; +} /* These bind address data fields common between endpoints and associations */ struct sctp_bind_addr { @@ -1393,7 +1402,6 @@ struct sctp_association { /* The largest timeout or RTO value to use in attempting an INIT */ __u16 max_init_timeo; - int timeouts[SCTP_NUM_TIMEOUT_TYPES]; struct timer_list timers[SCTP_NUM_TIMEOUT_TYPES]; @@ -1494,9 +1502,6 @@ struct sctp_association { */ struct sctp_ulpq ulpq; - /* Need to send an ECNE Chunk? */ - int need_ecne; - /* Last TSN that caused an ECNE Chunk to be sent. */ __u32 last_ecne_tsn; @@ -1509,9 +1514,6 @@ struct sctp_association { /* Number of seconds of idle time before an association is closed. */ __u32 autoclose; - /* Name for debugging output... */ - char *debug_name; - /* These are to support * "SCTP Extensions for Dynamic Reconfiguration of IP Addresses * and Enforcement of Flow and Message Limits" @@ -1519,8 +1521,7 @@ struct sctp_association { * or "ADDIP" for short. */ - /* Is the ADDIP extension enabled for this association? */ - int addip_enable; + /* ADDIP Section 4.1.1 Congestion Control of ASCONF Chunks * @@ -1605,8 +1606,14 @@ struct sctp_association { */ __u32 addip_serial; + /* Is the ADDIP extension enabled for this association? */ + char addip_enable; + + /* Need to send an ECNE Chunk? */ + char need_ecne; + /* Is it a temporary association? */ - __u8 temp; + char temp; }; |
