tree b080e1e5adca6bfe6fe06a28236c60f7fdc590db
parent fa87bb3a186088db3e3133cb6bbf0e069225b713
author Junho Choi <junho.choi@gmail.com> 1653523695 -0700
committer Junho Choi <junho.choi@gmail.com> 1654376012 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQGpBAABCgCTFiEEEektQTdUOYsZ8fUdwd2f3IiYAOYFAmKbxkxfFIAAAAAALgAo
 aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDEx
 RTkyRDQxMzc1NDM5OEIxOUYxRjUxREMxREQ5RkRDODg5ODAwRTYVHGp1bmhvLmNo
 b2lAZ21haWwuY29tAAoJEMHdn9yImADm+Q0H/1XtOL7rDFT3r+rIHEZAB8Qnvv08
 ear/Ab7gQVCtxukPcFxf2GEERZzaDWvxcryAUvlp5GBPRWVx5sqrsfLMx/+2uqk8
 ahEsCOidXW8bU8BBkQTlfI9zT8kopx0BSTuh7kbG+SRvgdIHuA0mHUCUr1fBP5lA
 7w35WWqGRyNExfbPztbGqgqoyqfEkrpSqoI/uw1gZz8yTdcp4PjGQC56jv/6qy17
 3SiU56vUOz/jlYcftqwT/WV/MlgiWQAEIu177Ot8hMDM8NyUW4yYV9ObjhalqiZc
 zpZjVYZAqZBNpcuiqRao66qUU5lr76qrXpzeGPV04jwi/dbg4Svx0DSWjZo=
 =97fH
 -----END PGP SIGNATURE-----

recovery: add GSO-friendly pacer

Currently we update the timestamp for next packet
(`last_packet_scheduled_time`) for each packet based on
the current pacing rate, which can confuse the
rtt measurement because the recorded timestamp
and actual time sent can be different, especially when
the application sends in burst using send_quantum
and batches a group packets using GSO. In such case
rtt measured can be smaller than expected, or even 0
when the packet is not sent in a specified time.

Pacer provides the timestamp for next packet to be sent
based on the current send_quantum, pacing rate
and last updated time. It is reset when a valid packet is
received (including ACK and non-ACK packets) to
start a new burst.

Pacer is GSO-friendly, which means it will provides a same
timestamp for same sized (except last one) packets in a
GSO group.
