Hello, here's promised v2 of John's series. John, feel free to take it from here on and fix the problem in patch 2 (add missing S-o-b and make gs_can_eth_ioctl() respect GS_CAN_FEATURE_HW_TIMESTAMP). regards, Marc Changes since v1: https://lore.kernel.org/all/20220826104629.2837024-1-mkl@xxxxxxxxxxxxxx - add new includes sorted - adjust multi line comment style - don't use 1e6, but 1 * HZ_PER_MHZ, to fix sparse warning - use __le32 instead of u32 in struct classic_can_ts and canfd_ts - place _ts in front of _quirk in union in struct gs_host_frame - gs_usb_get_sof_timestamp(): pass "const struct gs_can *dev" as 1st argument, not struct net_device *netdev, simplify return handling - gs_usb_timestamp_init(), gs_usb_timestamp_stop(), gs_usb_get_ts_info_hwts(): make static - gs_usb_timestamp_init(): increase cc->shift to maximize precision - fix long lines, remove braces {} for single statement blocks - gs_can_open(): move check for GS_CAN_FEATURE_HW_TIMESTAMP after all ctrlmode checks - gs_can_open(): move start polling sof timestamp after kfree(dm) - gs_can_close(): move stop polling sof timestamp to be symmetric with respect to gs_can_open() - gs_usb_probe(): make calculation of dev->hf_size_rx more robost