On 2019/07/17 17:56, Firo Yang wrote: > I don't think this change could fix this problem because if SMP, > dev_watchdog() could run on a different CPU.
hmm, SMP is clearly part of the picture here. The change I proposed revolves around the synchronization offered by dev->tx_global_lock: we have \ dev_watchdog \ netif_tx_lock spin_lock(&dev->tx_global_lock); ... \ netif_tx_unlock and \ be_update_queues \ netif_tx_lock_bh \ netif_tx_lock spin_lock(&dev->tx_global_lock); Makes sense?