Commit dd94a2f1 authored by Marc Kleine-Budde's avatar Marc Kleine-Budde
Browse files

can: at91_can: at91_alloc_can_err_skb() introduce new function

This is a preparation patch to convert the driver to make use of the
rx-offload helper. With rx-offload the received CAN frames are sorted
by their timestamp. Regular CAN RX'ed and TX'ed CAN frames are
timestamped by the hardware. Error events are not.

Introduce a new function at91_alloc_can_err_skb() the allocates an
error SKB and reads the current timestamp from the controller.

Link: https://lore.kernel.org/all/20231005-at91_can-rx_offload-v2-26-9987d53600e0@pengutronix.de


Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 3db6154e
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -576,6 +576,22 @@ static inline void at91_activate_rx_mb(const struct at91_priv *priv,
	at91_write(priv, AT91_TCR, mask);
}

static inline u32 at91_get_timestamp(const struct at91_priv *priv)
{
	return at91_read(priv, AT91_TIM);
}

static inline struct sk_buff *
at91_alloc_can_err_skb(struct net_device *dev,
		       struct can_frame **cf, u32 *timestamp)
{
	const struct at91_priv *priv = netdev_priv(dev);

	*timestamp = at91_get_timestamp(priv);

	return alloc_can_err_skb(dev, cf);
}

/**
 * at91_rx_overflow_err - send error frame due to rx overflow
 * @dev: net device