On Sat, 2017-10-14 at 16:27 +0900, Koichiro Den wrote: > Combining actual collapsing with reasoning for deciding the starting > point, we can apply its logic in a consistent manner such that we can > avoid costly yet not much useful collapsing. When collapsing to be > triggered, it's not rare that most of the skbs in the receive or ooo > queue are large ones without much metadata overhead. This also > simplifies code and makes it easier to apply logic in a fair manner. > > Subtle subsidiary changes included: > - When the end_seq of the skb we are trying to collapse was larger than > the 'end' argument provided, we would end up copying to the 'end' > even though we couldn't collapse the original one. Current users of > tcp_collapse does not require such reserves so redefines it as the > point over which skbs whose seq passes guranteed not to be collapsed. > - Naturally tcp_collapse_ofo_queue shapes up and we no longer need > 'tail' argument.
I am not inclined to review such a large change, without you providing actual numbers. We have a problem in TCP right now, that receiver announces a too big window, and that is the main reason we trigger collapsing. I would rather fix the root cause.