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

can: flexcan: flexcan_irq_state(): only read timestamp if needed



The function flexcan_irq_state() checks the controller for CAN state
changes and pushes a skb with the new state and a timestamp into the
rx-offload framework.

This patch optimizes the function by only reading the timestamp, if a
state change is detected.

Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent a4721f27
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -743,8 +743,6 @@ static void flexcan_irq_state(struct net_device *dev, u32 reg_esr)
	u32 timestamp;
	int err;

	timestamp = priv->read(&regs->timer) << 16;

	flt = reg_esr & FLEXCAN_ESR_FLT_CONF_MASK;
	if (likely(flt == FLEXCAN_ESR_FLT_CONF_ACTIVE)) {
		tx_state = unlikely(reg_esr & FLEXCAN_ESR_TX_WRN) ?
@@ -764,6 +762,8 @@ static void flexcan_irq_state(struct net_device *dev, u32 reg_esr)
	if (likely(new_state == priv->can.state))
		return;

	timestamp = priv->read(&regs->timer) << 16;

	skb = alloc_can_err_skb(dev, &cf);
	if (unlikely(!skb))
		return;