diff options
author | Marek Vasut <marex@denx.de> | 2016-05-07 18:34:15 -0400 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2016-05-09 05:07:28 -0400 |
commit | 1acd80fb982728b8bf467184d5ec4c5a77a5601b (patch) | |
tree | e9331a50095f062a39bebd0649e835ac2403b19b | |
parent | ca79408986bf250c22f3130c333787ec44c4d103 (diff) |
can: ifi: Increment TX counters only on real transmission
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>
-rw-r--r-- | drivers/net/can/ifi_canfd/ifi_canfd.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/can/ifi_canfd/ifi_canfd.c b/drivers/net/can/ifi_canfd/ifi_canfd.c index 5bd95dd5cb88..ba6cd43e1bc6 100644 --- a/drivers/net/can/ifi_canfd/ifi_canfd.c +++ b/drivers/net/can/ifi_canfd/ifi_canfd.c | |||
@@ -522,13 +522,15 @@ static irqreturn_t ifi_canfd_isr(int irq, void *dev_id) | |||
522 | } | 522 | } |
523 | 523 | ||
524 | /* TX IRQ */ | 524 | /* TX IRQ */ |
525 | if (isr & tx_irq_mask) { | 525 | if (isr & IFI_CANFD_INTERRUPT_TXFIFO_REMOVE) { |
526 | stats->tx_bytes += can_get_echo_skb(ndev, 0); | 526 | stats->tx_bytes += can_get_echo_skb(ndev, 0); |
527 | stats->tx_packets++; | 527 | stats->tx_packets++; |
528 | can_led_event(ndev, CAN_LED_EVENT_TX); | 528 | can_led_event(ndev, CAN_LED_EVENT_TX); |
529 | netif_wake_queue(ndev); | ||
530 | } | 529 | } |
531 | 530 | ||
531 | if (isr & tx_irq_mask) | ||
532 | netif_wake_queue(ndev); | ||
533 | |||
532 | return IRQ_HANDLED; | 534 | return IRQ_HANDLED; |
533 | } | 535 | } |
534 | 536 | ||