On Thu, Dec 04, 2025 at 10:09:47AM +0800, Song Yoong Siang wrote:
> Improve the launch time calculation logic to handle different scenarios:
>  - Set launch time to 0 if txtime has expired.
>  - Set launch time to 0 if txtime exceeds the horizon (beyond the end of
>    the next Qbv cycle).
>  - Mark the first flag in the context descriptor when the packet is the
>    first one scheduled in the next Qbv cycle.
>  - Create a dummy packet to dirty the current cycle before sending
>    packets intended for the next Qbv cycle.
> 
> Testing was performed on two Intel ADL-S platforms with i226 NICs
> connected back-to-back. A DPDK sample application is created to send 10
> UDP packets with 20,000 nanosecond intervals and their txtime is set to
> the time of the next Qbv cycle. Meanwhile, the tcpdump command below is
> used on the link partner to capture the delta of Rx hardware timestamp
> of the 10 packets:
> 
> tcpdump -ttt -ni enp1s0 --time-stamp-precision=nano -j adapter_unsynced
> 
> Without this patch, packets are transmitted immediately as the hardware
> interprets their launch time as expired, resulting in 8,384 nanosecond
> intervals (wire speed for 1024-byte packets at 1Gbps), as shown in
> tcpdump log below:
> 
>   00:00:00.000000000 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000008384 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000008384 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000008384 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000008384 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000008384 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000008384 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000008384 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000008384 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000008384 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
> 
> With this patch, packets are properly held until the next Qbv cycle and
> transmitted at the intended 20,000 nanosecond intervals, demonstrating
> correct launch time behavior, as shown in tcpdump log below:
> 
>   00:00:00.000000000  [|llc]
>   00:00:00.000862592 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000019993 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000020000 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000020010 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000019997 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000020000 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000020003 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000019990 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000020000 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
>   00:00:00.000020000 IP 192.168.1.100.2 > 224.1.1.1.5: UDP, length 982
> 
> Fixes: 9630f7c71ecd ("net/igc: enable launch time offloading")
> Cc: [email protected]
> 
> Signed-off-by: David Zage <[email protected]>
> Signed-off-by: Song Yoong Siang <[email protected]>
> ---
Acked-by: Bruce Richardson <[email protected]>

Applied to dpdk-next-net-intel.

Thanks,
/Bruce

Reply via email to