]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
can: v(x)can: add software tx timestamps
authorVincent Mailhol <mailhol.vincent@wanadoo.fr>
Wed, 27 Jul 2022 10:16:31 +0000 (19:16 +0900)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Thu, 28 Jul 2022 07:30:36 +0000 (09:30 +0200)
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>
drivers/net/can/vcan.c
drivers/net/can/vxcan.c

index a15619d883ec24b104b5476b7d5ac75bc25bc4b0..4a363cfcf97cc83e867c679e655d41e6b3b1641e 100644 (file)
@@ -99,6 +99,8 @@ static netdev_tx_t vcan_tx(struct sk_buff *skb, struct net_device *dev)
        /* set flag whether this packet has to be looped back */
        loop = skb->pkt_type == PACKET_LOOPBACK;
 
+       skb_tx_timestamp(skb);
+
        if (!echo) {
                /* no echo handling available inside this driver */
                if (loop) {
index 577a803005145a542c65637136a01482fa4c8a01..61b6eca383f8d7d844bd2ef760fa829647491a3c 100644 (file)
@@ -53,6 +53,8 @@ static netdev_tx_t vxcan_xmit(struct sk_buff *oskb, struct net_device *dev)
                goto out_unlock;
        }
 
+       skb_tx_timestamp(oskb);
+
        skb = skb_clone(oskb, GFP_ATOMIC);
        if (skb) {
                consume_skb(oskb);