On Tue, 2015-07-28 at 20:08 +0800, Hayes Wang wrote: > static void rtl8152_tx_timeout(struct net_device *netdev) > { > struct r8152 *tp = netdev_priv(netdev); > - int i; > > netif_warn(tp, tx_err, netdev, "Tx timeout\n"); > - for (i = 0; i < RTL8152_MAX_TX; i++) > - usb_unlink_urb(tp->tx_info[i].urb); > + > + usb_queue_reset_device(tp->intf); > + cancel_delayed_work(&tp->schedule);
Sorry to bother you again, but this looks wrong. You want to cancel first. There is no point in running any work before the reset is done. It will undo any progress anyway. Regards Oliver -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html