tcp: various improvements and fixes to PRR


tcp: various improvements and fixes to PRR

  • Ensure cwnd doesn't shrink to zero with PRR
  • use accurate rfc6675_pipe when enabled
  • Address two incorrect calculations and enhance readability
  • address second instance of cwnd potentially becoming zero
  • fix sublte bug due to implicit int to uint typecase in max()
  • fix bug due to typo in hand-coded CEILING() function by using howmany() macro
  • use int instead of long, and add a missing long typecast
  • replace if conditionals with easier to read imax/imin (as in pseudocode)
  • Avoid accounting left-edge twice in partial ACK.
  • Include new data sent in PRR calculation
  • Improve PRR initial transmission timing
  • Fix prr_out when pipe < ssthresh

Reviewed By: transport, kbowling, tuexen
Reported by: Liang Tian
Approved by: re (gjb)
MFC after: 3 days
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D28780
Differential Revision: https://reviews.freebsd.org/D28816
Differential Revision: https://reviews.freebsd.org/D28813
Differential Revision: https://reviews.freebsd.org/D28819
Differential Revision: https://reviews.freebsd.org/D28941
Differential Revision: https://reviews.freebsd.org/D28953
Differential Revision: https://reviews.freebsd.org/D28998

(cherry picked from commit 853fd7a2e39802e46bd3d6476529796ac22412d9)
(cherry picked from commit c3aa4ba5dfc084e40e4151b25a0d5f8d24a036ba)

(cherry picked from commit a8e431e1537d056a3f9e466eaceec28c399c220b)
(cherry picked from commit 32ed0ef06b8326271c4665406cac81fa47d0d29c)

(cherry picked from commit 48396dc77922c68377ecac0ead2f8b0b5453c451)
(cherry picked from commit ffbf1b809ef5080afa130c11fa4afce9fef7e7fe)

(cherry picked from commit 31d7a27c6e88c3d5bd0907774ec70176a92da5bb)
(cherry picked from commit 25fb4c363b299c26c35158fa059379af4a007253)

(cherry picked from commit 9e83a6a556ed8d9a2821de5d5f5c7d4b1292c694)
(cherry picked from commit 9596751563dc1819d177fa3ec6660a3bdc18021c)

(cherry picked from commit e9071000c9a04e3f685579500e24da9848944bb1)
(cherry picked from commit 2b43cd2ea26f758d23e8c009cf7521c4ddec7353)

(cherry picked from commit 0b0f8b359d0b94b09cfec35e5d5de01b23c7fbf1)
(cherry picked from commit 05e742af6f548364909ed671f0b3774e54dc77d1)


rscheffAuthored on Feb 19 2021, 12:52 PM
Differential Revision
D28780: Ensure cwnd doesn't shrink to zero with PRR
R10:43a2f41379f5: RACK: fix an issue triggered by using the CDG CC module