can: ifi: Increment TX counters only on real transmission
authorMarek Vasut <marex@denx.de>
Sat, 7 May 2016 22:34:15 +0000 (00:34 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 9 May 2016 09:07:28 +0000 (11:07 +0200)
Only increment the TX counters in the irq handler if a CAN message
was sent. The current code incremented the counters also if the TX
FIFO empty interrupt happened, which is incorrect.

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 5bd95dd5cb88d03c9ab87712c0a11fe0ddf921de..ba6cd43e1bc686cd2b79c0ef25e77bb78c5a5cc2 100644 (file)
@@ -522,13 +522,15 @@ static irqreturn_t ifi_canfd_isr(int irq, void *dev_id)
        }
 
        /* TX IRQ */
-       if (isr & tx_irq_mask) {
+       if (isr & IFI_CANFD_INTERRUPT_TXFIFO_REMOVE) {
                stats->tx_bytes += can_get_echo_skb(ndev, 0);
                stats->tx_packets++;
                can_led_event(ndev, CAN_LED_EVENT_TX);
-               netif_wake_queue(ndev);
        }
 
+       if (isr & tx_irq_mask)
+               netif_wake_queue(ndev);
+
        return IRQ_HANDLED;
 }