can: ifi: Start NAPI poll on bus warning too
authorMarek Vasut <marex@denx.de>
Sat, 7 May 2016 22:34:11 +0000 (00:34 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 9 May 2016 09:07:28 +0000 (11:07 +0200)
Start the NAPI polling in case the bus warning interrupt happens,
since it is the poll function which checks and reports the warning.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Oliver Hartkopp <socketcan@hartkopp.net>
Cc: Wolfgang Grandegger <wg@grandegger.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/ifi_canfd/ifi_canfd.c

index a1bd54ffd31ee5732bb6c12ca6e0f5335a37a324..1ad05f1ab9428b22bd58a87c9c7869adff1f222a 100644 (file)
@@ -497,7 +497,8 @@ static irqreturn_t ifi_canfd_isr(int irq, void *dev_id)
        struct ifi_canfd_priv *priv = netdev_priv(ndev);
        struct net_device_stats *stats = &ndev->stats;
        const u32 rx_irq_mask = IFI_CANFD_INTERRUPT_RXFIFO_NEMPTY |
-                               IFI_CANFD_INTERRUPT_RXFIFO_NEMPTY_PER;
+                               IFI_CANFD_INTERRUPT_RXFIFO_NEMPTY_PER |
+                               IFI_CANFD_INTERRUPT_ERROR_WARNING;
        const u32 tx_irq_mask = IFI_CANFD_INTERRUPT_TXFIFO_EMPTY |
                                IFI_CANFD_INTERRUPT_TXFIFO_REMOVE;
        const u32 clr_irq_mask = ~(IFI_CANFD_INTERRUPT_SET_IRQ |
@@ -513,7 +514,7 @@ static irqreturn_t ifi_canfd_isr(int irq, void *dev_id)
        /* Clear all pending interrupts but ErrWarn */
        writel(clr_irq_mask, priv->base + IFI_CANFD_INTERRUPT);
 
-       /* RX IRQ, start NAPI */
+       /* RX IRQ or bus warning, start NAPI */
        if (isr & rx_irq_mask) {
                ifi_canfd_irq_enable(ndev, 0);
                napi_schedule(&priv->napi);