Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

can: v(x)can: add software tx timestamps

TX timestamps were added to the can_put_echo_skb() function of can_dev
modules in [1]. However, vcan and vxcan do not rely on that function
and as such do not offer TX timestamping.

While it could be arguable whether TX timestamps are really needed for
virtual interfaces, we prefer to still add it so that all CAN drivers,
without exception, support the software TX timestamps.

Add a call to skb_tx_timestamp() in the vcan_tx() and vxcan_xmit()
functions so that the modules now support TX software timestamps.

[1] commit 741b91f1b0ea ("can: dev: can_put_echo_skb(): add software
tx timestamps")
Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=741b91f1b0ea34f00f6a7d4539b767c409291fcf

Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Link: https://lore.kernel.org/all/20220727101641.198847-5-mailhol.vincent@wanadoo.fr
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>

authored by

Vincent Mailhol and committed by
Marc Kleine-Budde
6a37a28b 6153a7ea

+4
+2
drivers/net/can/vcan.c
··· 99 99 /* set flag whether this packet has to be looped back */ 100 100 loop = skb->pkt_type == PACKET_LOOPBACK; 101 101 102 + skb_tx_timestamp(skb); 103 + 102 104 if (!echo) { 103 105 /* no echo handling available inside this driver */ 104 106 if (loop) {
+2
drivers/net/can/vxcan.c
··· 53 53 goto out_unlock; 54 54 } 55 55 56 + skb_tx_timestamp(oskb); 57 + 56 58 skb = skb_clone(oskb, GFP_ATOMIC); 57 59 if (skb) { 58 60 consume_skb(oskb);