diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2018-05-19 15:20:49 +0200 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2018-05-19 15:20:49 +0200 |
| commit | 95b5c0a592c712496dce6c1ed772d5f9026b5ed3 (patch) | |
| tree | ef00485760be3388bafc2eed41da185fb8a4858a /drivers/net/can/spi/hi311x.c | |
| parent | 985c78d3ff8e9c74450fa2bb08eb55e680d999ca (diff) | |
| parent | 78ce241099bb363b19dbd0245442e66c8de8f567 (diff) | |
| download | talos-op-linux-95b5c0a592c712496dce6c1ed772d5f9026b5ed3.tar.gz talos-op-linux-95b5c0a592c712496dce6c1ed772d5f9026b5ed3.zip | |
Merge branch 'ras/urgent' into ras/core
Pick up urgent fix as pending patch depends on it.
Diffstat (limited to 'drivers/net/can/spi/hi311x.c')
| -rw-r--r-- | drivers/net/can/spi/hi311x.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/can/spi/hi311x.c b/drivers/net/can/spi/hi311x.c index 5590c559a8ca..53e320c92a8b 100644 --- a/drivers/net/can/spi/hi311x.c +++ b/drivers/net/can/spi/hi311x.c @@ -91,6 +91,7 @@ #define HI3110_STAT_BUSOFF BIT(2) #define HI3110_STAT_ERRP BIT(3) #define HI3110_STAT_ERRW BIT(4) +#define HI3110_STAT_TXMTY BIT(7) #define HI3110_BTR0_SJW_SHIFT 6 #define HI3110_BTR0_BRP_SHIFT 0 @@ -427,8 +428,10 @@ static int hi3110_get_berr_counter(const struct net_device *net, struct hi3110_priv *priv = netdev_priv(net); struct spi_device *spi = priv->spi; + mutex_lock(&priv->hi3110_lock); bec->txerr = hi3110_read(spi, HI3110_READ_TEC); bec->rxerr = hi3110_read(spi, HI3110_READ_REC); + mutex_unlock(&priv->hi3110_lock); return 0; } @@ -735,10 +738,7 @@ static irqreturn_t hi3110_can_ist(int irq, void *dev_id) } } - if (intf == 0) - break; - - if (intf & HI3110_INT_TXCPLT) { + if (priv->tx_len && statf & HI3110_STAT_TXMTY) { net->stats.tx_packets++; net->stats.tx_bytes += priv->tx_len - 1; can_led_event(net, CAN_LED_EVENT_TX); @@ -748,6 +748,9 @@ static irqreturn_t hi3110_can_ist(int irq, void *dev_id) } netif_wake_queue(net); } + + if (intf == 0) + break; } mutex_unlock(&priv->hi3110_lock); return IRQ_HANDLED; |

