... > > > If I dump out /proc/net/sctp/assocs and look way over to the right > > > (on the next monitor but 1) there are two columns INS and OUTS. > > > I've just realised that these are the number of streams. > > > Now all my connections are loopback - so I see both sockets for each. > > > So I'd expect the INS to match the OUTS of the peer. > > > This isn't true. > > > When the value should be negotiated down the OUTS value is unchanged. > > > So the kernel is sending packets with illegal stream numbers. > > > These are acked and then silently discarded. > > > did it do addstream reconfig or receive any duplicate COOKIE-ECHO in your case? > > Extremely unlikely. > > Looking at the latest version of my driver code > (which I wasn't using) I wrote the following: > > * Since the code that negotiates the number of streams got broken > * in version 5.1 we need to extract the correct value from the > * internal structures to avoid SCTP sending messages the remote > * system will discard. > > /* stream.outcnt is the value we should be using. > * But kernels 5.1 to 5.8 fail to reduce it based on the number > * received from the remote system. > * So bound here so that transmitted messages don't get discarded. */ > outcnt = asoc->stream.outcnt; > num_ostreams = asoc->c.sinit_num_ostreams; > > I think there was a patch done for 5.9. > It needs back-porting. Yes, I wrote the patch. Applied to net-next. https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/net/sctp/stream.c?id=ab921f3cdbec01c68705a7ade8bec628d541fc2b David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)