On Wed, 29 Sep 2021 16:08:54 +0200 Łukasz Stelmach wrote: > +static char *no_regs_list = "80018001,e1918001,8001a001,fc0d0000"; static const char ... > +static int > +ax88796c_close(struct net_device *ndev) > +{ > + struct ax88796c_device *ax_local = to_ax88796c_device(ndev); > + > + netif_stop_queue(ndev); This can run concurrently with the work which restarts the queue. You should take the mutex and purge the queue here, so that there is no chance queue will get restarted by the work right after. > + phy_stop(ndev->phydev); > + > + mutex_lock(&ax_local->spi_lock); > +MODULE_AUTHOR("ASIX"); You can drop this, author should be human.