ramips: fix locking issues in the ethernet driver
[openwrt/staging/mkresin.git] / target / linux / ramips / files-4.14 / drivers / net / ethernet / mtk / mtk_eth_soc.c
index 49505eab86628e60ba050314c6eb55b80dff809a..d0d88b92c570aef518d1e7265dfd6b0f23819121 100644 (file)
@@ -477,9 +477,9 @@ static void fe_get_stats64(struct net_device *dev,
        }
 
        if (netif_running(dev) && netif_device_present(dev)) {
-               if (spin_trylock(&hwstats->stats_lock)) {
+               if (spin_trylock_bh(&hwstats->stats_lock)) {
                        fe_stats_update(priv);
-                       spin_unlock(&hwstats->stats_lock);
+                       spin_unlock_bh(&hwstats->stats_lock);
                }
        }
 
@@ -1581,6 +1581,7 @@ static int fe_probe(struct platform_device *pdev)
        priv->tx_ring.tx_ring_size = NUM_DMA_DESC;
        priv->rx_ring.rx_ring_size = NUM_DMA_DESC;
        INIT_WORK(&priv->pending_work, fe_pending_work);
+       u64_stats_init(&priv->hw_stats->syncp);
 
        napi_weight = 16;
        if (priv->flags & FE_FLAG_NAPI_WEIGHT) {