tcp: collapse more than two on retransmission
I always had thought that collapsing up to two at a time was
intentional decision to avoid excessive processing if 1 byte
sized skbs are to be combined for a full mtu, and consecutive
retransmissions would make the size of the retransmittee
double each round anyway, but some recent discussion made me
to understand that was not the case. Thus make collapse work
more and wait less.
It would be possible to take advantage of the shifting
machinery (added in the later patch) in the case of paged
data but that can be implemented on top of this change.
tcp_skb_is_last check is now provided by the loop.
I tested a bit (ss-after-idle-off, fill 4096x4096B xfer,
10s sleep + 4096 x 1byte writes while dropping them for
some a while with netem):
.
16774097:
16775545(1448) ack 1 win 46
.
16775545:
16776993(1448) ack 1 win 46
. ack
16759617 win 2399
P
16776993:
16777217(224) ack 1 win 46
. ack
16762513 win 2399
. ack
16765409 win 2399
. ack
16768305 win 2399
. ack
16771201 win 2399
. ack
16774097 win 2399
. ack
16776993 win 2399
. ack
16777217 win 2399
P
16777217:
16777257(40) ack 1 win 46
. ack
16777257 win 2399
P
16777257:
16778705(1448) ack 1 win 46
P
16778705:
16780153(1448) ack 1 win 46
FP
16780153:
16781313(1160) ack 1 win 46
. ack
16778705 win 2399
. ack
16780153 win 2399
F 1:1(0) ack
16781314 win 2399
While without drop-all period I get this:
.
16773585:
16775033(1448) ack 1 win 46
. ack
16764897 win 9367
. ack
16767793 win 9367
. ack
16770689 win 9367
. ack
16773585 win 9367
.
16775033:
16776481(1448) ack 1 win 46
P
16776481:
16777217(736) ack 1 win 46
. ack
16776481 win 9367
. ack
16777217 win 9367
P
16777217:
16777218(1) ack 1 win 46
P
16777218:
16777219(1) ack 1 win 46
P
16777219:
16777220(1) ack 1 win 46
...
P
16777247:
16777248(1) ack 1 win 46
. ack
16777218 win 9367
. ack
16777219 win 9367
...
. ack
16777233 win 9367
. ack
16777248 win 9367
P
16777248:
16778696(1448) ack 1 win 46
P
16778696:
16780144(1448) ack 1 win 46
FP
16780144:
16781313(1169) ack 1 win 46
. ack
16780144 win 9367
F 1:1(0) ack
16781314 win 9367
The window seems to be 30-40 segments, which were successfully
combined into: P
16777217:
16777257(40) ack 1 win 46
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>