From: Xin Long > Sent: 16 August 2016 12:34 > > >> Both sctp_outq_flush_rtx and sctp_packet_transmit can ONLY > >> return one error (-ENOMEM), as sctp_outq_flush_rtx also calls > >> sctp_packet_transmit. > > > > What is the effect of the error? > > If it is 'just' equivalent to a lost ethernet packet (and the skb (etc) > > is freed) then the protocol will recover. > > If it is anything else then the error path is probably wrong. > > This err returns back to sctp_sendmsg, there sctp will abort asoc. That doesn't seem a good idea. You don't want to abort the association if there is a transient memory allocation failure. You also can't drop data chunks. > in this function, sctp tries to do 3 things: > 1. flush rtx queue > 2. transmit the packet of current transport > 3. flush all the transports. > Now sctp would do them one by one, even if one of them returns err. You probably need to explain what 'flush' means here. I think it means 'process and send', but it might mean 'discard the contents of'. Last time I looked at the sctp code my head exploded. ISTR it is a mess of timing errors waiting to happen (and I write comms protocol stack code for a living). David ��.n��������+%������w��{.n�����{������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f