diff options
author | Xin Long <lucien.xin@gmail.com> | 2017-12-15 00:41:26 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-15 13:52:21 -0500 |
commit | 8e0c3b73cec1b943affde91b3c412ad8266b4694 (patch) | |
tree | 1fe6fd360a75d7c56967aebc41cabf95d54949fa /include/net | |
parent | 2d07a49aded490a0a4a2748e64030a0f59b6b8be (diff) | |
download | linux-8e0c3b73cec1b943affde91b3c412ad8266b4694.tar.gz linux-8e0c3b73cec1b943affde91b3c412ad8266b4694.tar.bz2 linux-8e0c3b73cec1b943affde91b3c412ad8266b4694.zip |
sctp: implement generate_ftsn for sctp_stream_interleave
generate_ftsn is added as a member of sctp_stream_interleave, used to
create fwdtsn or ifwdtsn chunk according to abandoned chunks, called
in sctp_retransmit and sctp_outq_sack.
sctp_generate_iftsn works for ifwdtsn, and sctp_generate_fwdtsn is
still used for making fwdtsn.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Acked-by: Marcelo R. Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/sctp/stream_interleave.h | 2 | ||||
-rw-r--r-- | include/net/sctp/structs.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/include/net/sctp/stream_interleave.h b/include/net/sctp/stream_interleave.h index 501b2be049a3..66267dbcecba 100644 --- a/include/net/sctp/stream_interleave.h +++ b/include/net/sctp/stream_interleave.h @@ -47,6 +47,8 @@ struct sctp_stream_interleave { struct sctp_chunk *chunk, gfp_t gfp); void (*start_pd)(struct sctp_ulpq *ulpq, gfp_t gfp); void (*abort_pd)(struct sctp_ulpq *ulpq, gfp_t gfp); + /* (I-)FORWARD-TSN process */ + void (*generate_ftsn)(struct sctp_outq *q, __u32 ctsn); }; void sctp_stream_interleave_init(struct sctp_stream *stream); diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index a5c3cf41e693..b7720d65a975 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -1100,6 +1100,7 @@ void sctp_retransmit_mark(struct sctp_outq *, struct sctp_transport *, __u8); void sctp_outq_uncork(struct sctp_outq *, gfp_t gfp); void sctp_prsctp_prune(struct sctp_association *asoc, struct sctp_sndrcvinfo *sinfo, int msg_len); +void sctp_generate_fwdtsn(struct sctp_outq *q, __u32 sack_ctsn); /* Uncork and flush an outqueue. */ static inline void sctp_outq_cork(struct sctp_outq *q) { |