Here is a series of fixes to issues that occur when SACK is not enabled for a TCP connection. These are not fixes to just some remote corner cases of recovery but many/almost all recoveries without SACK will be impacted by one (or even more than one) of them. The bogus bursts that the sender side fixes are for may cause additional problems later as some of the packets in such bursts may get dropped needing again to resort to loss recovery that is likely similarly bursty.
v1 -> v2: - Tried to improve changelogs - Reworked FRTO undo fix location - Removed extra parenthesis from EXPR (and while at it, reverse also the sides of &&) - Pass prior_snd_una rather than flag around to avoid moving tcp_packet_delayed call - Pass tp instead of sk. sk was there only due to a subsequent change (that I think is only net-next material) limiting the use of the false FR avoidance to only RTO recoveries (as it won't be needed after NewReno recovery that won't do unnecessary rexmits like the non-SACK RTO recovery does) tcp: feed correct number of pkts acked to cc tcp: prevent bogus FRTO undos with non-SACK flows tcp: move false FR condition into tcp: prevent bogus undos when SACK is not enabled tcp: send real dupACKs by locking advertized