I've been running for about 3 weeks with a Realtek RTL-8169 PCI card (turns out that the Intel card I mentioned earlier was PCI-e and I was already using that slot) with no problems with large file transfers.
I also would like to mention that Ubuntu 9.04 with no kernel updates will also display this problem, though much more infrequent than later kernel versions. In other words, all kernel versions out there are affected by this bug. Disabling the onboard LAN on the Shuttle and adding an Ethernet card looks to be a workaround.
There are BUGs "scheduling while atomic" triggered by the timer
rhine_tx_timeout(). They are caused by calling napi_disable() (with
msleep()). This patch fixes it by moving most of the timer content to
the workqueue function (similarly to other drivers, like tg3), with
spin_lock() changed to BH version.
Additionally, there is spin_lock_irq() moved in rhine_close() to
exclude napi_disable() etc., also tg3's way.
I hope this is related and gets merged into Ubuntu 10.4.
I've been running for about 3 weeks with a Realtek RTL-8169 PCI card (turns out that the Intel card I mentioned earlier was PCI-e and I was already using that slot) with no problems with large file transfers.
I also would like to mention that Ubuntu 9.04 with no kernel updates will also display this problem, though much more infrequent than later kernel versions. In other words, all kernel versions out there are affected by this bug. Disabling the onboard LAN on the Shuttle and adding an Ethernet card looks to be a workaround.
I found this in the 2.6.33-rc3 changelog: www.kernel. org/pub/ linux/kernel/ v2.6/testing/ ChangeLog- 2.6.33- rc3)
(http://
net/via-rhine: Fix scheduling while atomic bugs
There are BUGs "scheduling while atomic" triggered by the timer tx_timeout( ). They are caused by calling napi_disable() (with
rhine_
msleep()). This patch fixes it by moving most of the timer content to
the workqueue function (similarly to other drivers, like tg3), with
spin_lock() changed to BH version.
Additionally, there is spin_lock_irq() moved in rhine_close() to
exclude napi_disable() etc., also tg3's way.
I hope this is related and gets merged into Ubuntu 10.4.