Stanislav Fomichev stfomichev@gmail.com writes:
On 01/23, Florian Bezdeka wrote:
Hi all,
On Thu, 2025-01-23 at 16:41 +0000, Song, Yoong Siang wrote:
On Thursday, January 23, 2025 11:40 PM, Bouska, Zdenek zdenek.bouska@siemens.com wrote:
Hi Siang,
I tested this patch series on 6.13 with Intel I226-LM (rev 04).
I also applied patch "selftests/bpf: Actuate tx_metadata_len in xdp_hw_metadata" [1] and "selftests/bpf: Enable Tx hwtstamp in xdp_hw_metadata" [2] so that TX timestamps work.
HW RX-timestamp was small (0.5956 instead of 1737373125.5956):
HW RX-time: 595572448 (sec:0.5956) delta to User RX-time sec:1737373124.9873 (1737373124987318.750 usec) XDP RX-time: 1737373125582798388 (sec:1737373125.5828) delta to User RX-time sec:0.0001 (92.733 usec)
Igc's raw HW RX-timestamp in front of frame data was overwritten by BPF program on line 90 in tools/testing/selftests/bpf: meta->hint_valid = 0;
"HW timestamp has been copied into local variable" comment is outdated on line 2813 in drivers/net/ethernet/intel/igc/igc_main.c after commit 069b142f5819 igc: Add support for PTP .getcyclesx64() [3].
Workaround is to add unused data to xdp_meta struct:
--- a/tools/testing/selftests/bpf/xdp_metadata.h +++ b/tools/testing/selftests/bpf/xdp_metadata.h @@ -49,4 +49,5 @@ struct xdp_meta { __s32 rx_vlan_tag_err; }; enum xdp_meta_field hint_valid;
__u8 avoid_IGC_TS_HDR_LEN[16];
};
Hi Zdenek Bouska,
Thanks for your help on testing this patch set. You are right, there is some issue with the Rx hw timestamp, I will submit the bug fix patch when the solution is finalized, but the fix will not be part of this launch time patch set. Until then, you can continue to use your WA.
I think there is no simple fix for that. That needs some discussion around the "expectations" to the headroom / meta data area in front of the actual packet data.
By 'simple' you mean without some new UAPI to signal the size of that 'reserved area' by the driver? I don't see any other easy way out as well :-/
Yeah, I don't think we can impose UAPI restrictions on the metadata area at this point. I guess the best we can do is to educate users that they should call the timestamp kfunc before they modify the metadata?
-Toke