can: kvaser_pciefd: Set hardware timestamp on transmitted packets
authorJimmy Assarsson <extja@kvaser.com>
Mon, 29 May 2023 13:42:38 +0000 (15:42 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Thu, 22 Jun 2023 07:44:28 +0000 (09:44 +0200)
Set hardware timestamp on transmitted packets.

Fixes: 26ad340e582d ("can: kvaser_pciefd: Add driver for Kvaser PCIEcan devices")
Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Link: https://lore.kernel.org/all/20230529134248.752036-5-extja@kvaser.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/kvaser_pciefd.c

index 7646338..88bad2c 100644 (file)
@@ -1485,6 +1485,7 @@ static void kvaser_pciefd_handle_nack_packet(struct kvaser_pciefd_can *can,
 
        if (skb) {
                cf->can_id |= CAN_ERR_BUSERROR;
+               kvaser_pciefd_set_skb_timestamp(can->kv_pcie, skb, p->timestamp);
                netif_rx(skb);
        } else {
                stats->rx_dropped++;
@@ -1516,8 +1517,15 @@ static int kvaser_pciefd_handle_ack_packet(struct kvaser_pciefd *pcie,
                netdev_dbg(can->can.dev, "Packet was flushed\n");
        } else {
                int echo_idx = p->header[0] & KVASER_PCIEFD_PACKET_SEQ_MSK;
-               int dlc = can_get_echo_skb(can->can.dev, echo_idx, NULL);
-               u8 count = ioread32(can->reg_base +
+               int dlc;
+               u8 count;
+               struct sk_buff *skb;
+
+               skb = can->can.echo_skb[echo_idx];
+               if (skb)
+                       kvaser_pciefd_set_skb_timestamp(pcie, skb, p->timestamp);
+               dlc = can_get_echo_skb(can->can.dev, echo_idx, NULL);
+               count = ioread32(can->reg_base +
                                    KVASER_PCIEFD_KCAN_TX_NPACKETS_REG) & 0xff;
 
                if (count < KVASER_PCIEFD_CAN_TX_MAX_COUNT &&