Daiki and I discussed TPTO (time-based packet transmission offload) some yesterday and we concluded that it makes little sense to design TPTO for single packet sends. Pacing is most important when you have a burst of packets to send but what to spread them out. To improve the CPU efficiency of the send path, we have added batching (LSO,USO) over the years. We should not regress that functionality with TPTO.
Towards that end, TPTO should be defined to take both a TimeStart and a TimeDelta (units likely in some multiple of nanoseconds, or perhaps QPC). The offload would then be responsible for taking the batch and sending them out starting at TimeStart and spread out by TimeDelta.
cc @BorisPis & @stevedoyle for input from the HW side
Daiki and I discussed TPTO (time-based packet transmission offload) some yesterday and we concluded that it makes little sense to design TPTO for single packet sends. Pacing is most important when you have a burst of packets to send but what to spread them out. To improve the CPU efficiency of the send path, we have added batching (LSO,USO) over the years. We should not regress that functionality with TPTO.
Towards that end, TPTO should be defined to take both a
TimeStart
and aTimeDelta
(units likely in some multiple of nanoseconds, or perhaps QPC). The offload would then be responsible for taking the batch and sending them out starting atTimeStart
and spread out byTimeDelta
.cc @BorisPis & @stevedoyle for input from the HW side