Hi Folks I was looking at SCTP performance problem that is a result of receive buffer exhaustion and found the we severely overcharge the receive buffer when multiple data chunks are bundled together. This bundling usually happens at retransmit time which penalizes us even more. Here is what happens. For every "data" chunk that SCTP stack receives, we clone skb of that data chunk, charge the receive buffer for the skb, and put the chunk on the the socket receive queue (this is skipping a few steps, but they don't matter for the sake of this discussion). We charge the receive buffer with the skb->truesize. The problem shows up when multiple data chunks are "bundled" into the same skb. We end up with multiple clones, and for each clone we charge skb->truesize against the receive buffer. However, since skb_clone() preservers the original truesize in all clones, we end up overcharging. One of the proposed solutions is change the skb->truesize of the clone to just be sizeof(struct sk_buff), if and only if this is not the first data chunk in the packet. I've attached the patch, in case people want to look at the code. However, we question if this is a good idea or if this is going to break things... Thanks -vlad