From: Jimmy Assarsson <jimmyassarsson@xxxxxxxxx> This patch series add hardware timestamp support to all devices supported by the kvaser_usb driver. The first patches resolves a known issue; "Hardware timestamps are not set for CAN Tx frames". I can't remember why this wasn't implemented in the first version of the hydra driver. Followed by, hardware timestamp support for leaf and usbcan based devices. The final patches are removing code used for selecting the correct ethtool and netdev ops. Note: This patch series depends on patch "can: kvaser_usb: Explicitly initialize family in leafimx..." [1]. [1] https://lore.kernel.org/linux-can/20240628194529.312968-1-extja@xxxxxxxxxx Changes in v2: - Replaced patch 3/15 can: kvaser_usb: Add function kvaser_usb_ticks_to_ktime() with a new patch can: kvaser_usb: Add helper functions to convert device timestamp into ktime and put it first in this series - Resolved Vincent MAILHOL's review comments regarding duplicated code when converting timestamps [2] [3] - As pointed out by Vincent MAILHOL [4], the clock overflow commands is not dispatched in this patch moved code from 10/15 can: kvaser_usb: leaf: Add structs for Tx ACK and clock overflow commands to 11/15 can: kvaser_usb: leaf: Store MSB of timestamp where it's actually used [2] https://lore.kernel.org/linux-can/CAMZ6RqKSa-6KjvgfmN9eL7A=A65gMkYsRrnaF41Azhsc45FA2Q@xxxxxxxxxxxxxx/ [3] https://lore.kernel.org/linux-can/CAMZ6Rq+Xd7+th=dKV+vrqzRtS+GY-xq2UziH1CURcQ3HxEXMqQ@xxxxxxxxxxxxxx/ [4] https://lore.kernel.org/linux-can/CAMZ6RqKqJX6eqogS2598BFm-AN1uOBbBGL+MkoJtR=-z379Q=w@xxxxxxxxxxxxxx/ Jimmy Assarsson (15): can: kvaser_usb: Add helper functions to convert device timestamp into ktime can: kvaser_usb: hydra: kvaser_usb_hydra_ktime_from_rx_cmd: Drop {rx_} in function name can: kvaser_usb: hydra: Add struct for Tx ACK commands can: kvaser_usb: hydra: Set hardware timestamp on transmitted packets can: kvaser_usb: leaf: Add struct for Tx ACK commands can: kvaser_usb: leaf: Assign correct timestamp_freq for kvaser_usb_leaf_imx_dev_cfg_{16,24,32}mhz can: kvaser_usb: leaf: Replace kvaser_usb_leaf_m32c_dev_cfg with kvaser_usb_leaf_m32c_dev_cfg_{16,24,32}mhz can: kvaser_usb: leaf: kvaser_usb_leaf_tx_acknowledge: Rename local variable can: kvaser_usb: leaf: Add hardware timestamp support to leaf based devices can: kvaser_usb: leaf: Add structs for Tx ACK and clock overflow commands can: kvaser_usb: leaf: Store MSB of timestamp can: kvaser_usb: leaf: Add hardware timestamp support to usbcan devices can: kvaser_usb: Remove KVASER_USB_QUIRK_HAS_HARDWARE_TIMESTAMP can: kvaser_usb: Remove struct variables kvaser_usb_{ethtool,netdev}_ops can: kvaser_usb: Rename kvaser_usb_{ethtool,netdev}_ops_hwts to kvaser_usb_{ethtool,netdev}_ops drivers/net/can/usb/kvaser_usb/kvaser_usb.h | 26 +++- .../net/can/usb/kvaser_usb/kvaser_usb_core.c | 21 +--- .../net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 41 +++++-- .../net/can/usb/kvaser_usb/kvaser_usb_leaf.c | 114 +++++++++++++++--- 4 files changed, 153 insertions(+), 49 deletions(-) -- 2.45.2