On 04/24/2018 12:33 AM, Marcelo Ricardo Leitner wrote: > On Mon, Apr 23, 2018 at 09:41:05PM +0300, Oleg Babin wrote: >> This patch introduces wrappers for accessing in/out streams indirectly. >> This will enable to replace physically contiguous memory arrays >> of streams with flexible arrays (or maybe any other appropriate >> mechanism) which do memory allocation on a per-page basis. >> >> Signed-off-by: Oleg Babin <obabin@xxxxxxxxxxxxx> >> --- >> include/net/sctp/structs.h | 30 +++++++----- >> net/sctp/chunk.c | 6 ++- >> net/sctp/outqueue.c | 11 +++-- >> net/sctp/socket.c | 4 +- >> net/sctp/stream.c | 107 +++++++++++++++++++++++++------------------ >> net/sctp/stream_interleave.c | 2 +- >> net/sctp/stream_sched.c | 13 +++--- >> net/sctp/stream_sched_prio.c | 22 ++++----- >> net/sctp/stream_sched_rr.c | 8 ++-- >> 9 files changed, 116 insertions(+), 87 deletions(-) >> >> diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h >> index a0ec462..578bb40 100644 >> --- a/include/net/sctp/structs.h >> +++ b/include/net/sctp/structs.h >> @@ -394,37 +394,37 @@ int sctp_stream_init(struct sctp_stream *stream, __u16 outcnt, __u16 incnt, >> >> /* What is the current SSN number for this stream? */ >> #define sctp_ssn_peek(stream, type, sid) \ >> - ((stream)->type[sid].ssn) >> + (sctp_stream_##type##_ptr((stream), (sid))->ssn) >> >> /* Return the next SSN number for this stream. */ >> #define sctp_ssn_next(stream, type, sid) \ >> - ((stream)->type[sid].ssn++) >> + (sctp_stream_##type##_ptr((stream), (sid))->ssn++) >> >> /* Skip over this ssn and all below. */ >> #define sctp_ssn_skip(stream, type, sid, ssn) \ >> - ((stream)->type[sid].ssn = ssn + 1) >> + (sctp_stream_##type##_ptr((stream), (sid))->ssn = ssn + 1) >> >> /* What is the current MID number for this stream? */ >> #define sctp_mid_peek(stream, type, sid) \ >> - ((stream)->type[sid].mid) >> + (sctp_stream_##type##_ptr((stream), (sid))->mid) >> >> /* Return the next MID number for this stream. */ >> #define sctp_mid_next(stream, type, sid) \ >> - ((stream)->type[sid].mid++) >> + (sctp_stream_##type##_ptr((stream), (sid))->mid++) >> >> /* Skip over this mid and all below. */ >> #define sctp_mid_skip(stream, type, sid, mid) \ >> - ((stream)->type[sid].mid = mid + 1) >> + (sctp_stream_##type##_ptr((stream), (sid))->mid = mid + 1) >> >> -#define sctp_stream_in(asoc, sid) (&(asoc)->stream.in[sid]) >> +#define sctp_stream_in(asoc, sid) sctp_stream_in_ptr(&(asoc)->stream, (sid)) > > This will get confusing: > - sctp_stream_in(asoc, sid) > - sctp_stream_in_ptr(stream, sid) > > Considering all usages of sctp_stream_in(), seems you can just update > them to do the ->stream deref and keep only the later implementation. > Which then don't need the _ptr suffix. Ok, I'll change that in the next path version. -- Best regards, Oleg Babin -- To unsubscribe from this list: send the line "unsubscribe linux-sctp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html