sctp: add support for the process of unordered idata
Unordered idata process is more complicated than unordered data: - It has to add mid into sctp_stream_out to save the next mid value, which is separated from ordered idata's. - To support pd for unordered idata, another mid and pd_mode need to be added to save the message id and pd state in sctp_stream_in. - To make unordered idata reasm easier, it adds a new event queue to save frags for idata. The patch mostly adds the samilar reasm functions for unordered idata as ordered idata's, and also adjusts some other codes on assign_mid, abort_pd and ulpevent_data for idata. Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
65f5e35783
commit
132282386f
@@ -413,6 +413,14 @@ void sctp_stream_update(struct sctp_stream *stream, struct sctp_stream *new);
|
||||
|
||||
#define sctp_stream_in(asoc, sid) (&(asoc)->stream.in[sid])
|
||||
|
||||
/* What is the current MID_uo number for this stream? */
|
||||
#define sctp_mid_uo_peek(stream, type, sid) \
|
||||
((stream)->type[sid].mid_uo)
|
||||
|
||||
/* Return the next MID_uo number for this stream. */
|
||||
#define sctp_mid_uo_next(stream, type, sid) \
|
||||
((stream)->type[sid].mid_uo++)
|
||||
|
||||
/*
|
||||
* Pointers to address related SCTP functions.
|
||||
* (i.e. things that depend on the address family.)
|
||||
@@ -1379,8 +1387,9 @@ struct sctp_stream_out {
|
||||
__u32 mid;
|
||||
__u16 ssn;
|
||||
};
|
||||
__u8 state;
|
||||
__u32 mid_uo;
|
||||
struct sctp_stream_out_ext *ext;
|
||||
__u8 state;
|
||||
};
|
||||
|
||||
struct sctp_stream_in {
|
||||
@@ -1388,8 +1397,11 @@ struct sctp_stream_in {
|
||||
__u32 mid;
|
||||
__u16 ssn;
|
||||
};
|
||||
__u32 mid_uo;
|
||||
__u32 fsn;
|
||||
__u32 fsn_uo;
|
||||
char pd_mode;
|
||||
char pd_mode_uo;
|
||||
};
|
||||
|
||||
struct sctp_stream {
|
||||
|
Reference in New Issue
Block a user