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

can: at91_can: at91_irq_err_frame(): move next to at91_irq_err()

This is a cleanup patch, no functional change intended. As
at91_irq_err_frame() is called from the IRQ handler move it in front
of the IRQ handler next to at91_irq_err().

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


Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent d3f4cf05
Loading
Loading
Loading
Loading
+61 −61
Original line number Diff line number Diff line
@@ -750,67 +750,6 @@ static int at91_poll_rx(struct net_device *dev, int quota)
	return received;
}

static void at91_irq_err_frame(struct net_device *dev, const u32 reg_sr)
{
	struct net_device_stats *stats = &dev->stats;
	struct at91_priv *priv = netdev_priv(dev);
	struct sk_buff *skb;
	struct can_frame *cf = NULL;

	priv->can.can_stats.bus_error++;

	skb = alloc_can_err_skb(dev, &cf);
	if (cf)
		cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR;

	if (reg_sr & AT91_IRQ_CERR) {
		netdev_dbg(dev, "CRC error\n");

		stats->rx_errors++;
		if (cf)
			cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ;
	}

	if (reg_sr & AT91_IRQ_SERR) {
		netdev_dbg(dev, "Stuff error\n");

		stats->rx_errors++;
		if (cf)
			cf->data[2] |= CAN_ERR_PROT_STUFF;
	}

	if (reg_sr & AT91_IRQ_AERR) {
		netdev_dbg(dev, "NACK error\n");

		stats->tx_errors++;
		if (cf) {
			cf->can_id |= CAN_ERR_ACK;
			cf->data[2] |= CAN_ERR_PROT_TX;
		}
	}

	if (reg_sr & AT91_IRQ_FERR) {
		netdev_dbg(dev, "Format error\n");

		stats->rx_errors++;
		if (cf)
			cf->data[2] |= CAN_ERR_PROT_FORM;
	}

	if (reg_sr & AT91_IRQ_BERR) {
		netdev_dbg(dev, "Bit error\n");

		stats->tx_errors++;
		if (cf)
			cf->data[2] |= CAN_ERR_PROT_TX | CAN_ERR_PROT_BIT;
	}

	if (!cf)
		return;

	netif_receive_skb(skb);
}

static int at91_poll(struct napi_struct *napi, int quota)
{
	struct net_device *dev = napi->dev;
@@ -1061,6 +1000,67 @@ static void at91_irq_err(struct net_device *dev)
	priv->can.state = new_state;
}

static void at91_irq_err_frame(struct net_device *dev, const u32 reg_sr)
{
	struct net_device_stats *stats = &dev->stats;
	struct at91_priv *priv = netdev_priv(dev);
	struct sk_buff *skb;
	struct can_frame *cf = NULL;

	priv->can.can_stats.bus_error++;

	skb = alloc_can_err_skb(dev, &cf);
	if (cf)
		cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR;

	if (reg_sr & AT91_IRQ_CERR) {
		netdev_dbg(dev, "CRC error\n");

		stats->rx_errors++;
		if (cf)
			cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ;
	}

	if (reg_sr & AT91_IRQ_SERR) {
		netdev_dbg(dev, "Stuff error\n");

		stats->rx_errors++;
		if (cf)
			cf->data[2] |= CAN_ERR_PROT_STUFF;
	}

	if (reg_sr & AT91_IRQ_AERR) {
		netdev_dbg(dev, "NACK error\n");

		stats->tx_errors++;
		if (cf) {
			cf->can_id |= CAN_ERR_ACK;
			cf->data[2] |= CAN_ERR_PROT_TX;
		}
	}

	if (reg_sr & AT91_IRQ_FERR) {
		netdev_dbg(dev, "Format error\n");

		stats->rx_errors++;
		if (cf)
			cf->data[2] |= CAN_ERR_PROT_FORM;
	}

	if (reg_sr & AT91_IRQ_BERR) {
		netdev_dbg(dev, "Bit error\n");

		stats->tx_errors++;
		if (cf)
			cf->data[2] |= CAN_ERR_PROT_TX | CAN_ERR_PROT_BIT;
	}

	if (!cf)
		return;

	netif_receive_skb(skb);
}

/* interrupt handler
 */
static irqreturn_t at91_irq(int irq, void *dev_id)