That definitely wants fixing. Since I like doing resets and similar
slow-paths in process context -- sleep for as long as you want -- I
would say kick over to a function called via schedule_task()
Just make sure other parts of the driver that may be called
asynchronously, such as ethtool ioctls, are disabled. Remember that
tx_timeout holds the dev->xmit_lock as well, so spending a long time in
there is a bad idea in general.
I would probably call netif_carrier_off() first thing in tx_timeout, too.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/