07 February, 2008

Kubuntu with Rhine-II NIC

My Windows XP system at home recently became unbootable with a system error. It's an old system running on an Iwill DVD266-Rn motherboard with dual P3 1.4GHz Tualatins. It is my desktop system designated for non-technical users. After a few brief attempts at a fix from the Windows recovery console, I decided to just install an Ubuntu variant, a fairly safe bet for non-technical users.

I booted to the Ubuntu CD and first backed up all the user profiles and other data to DVD. Then I installed Kubuntu. After installation, I made a few tweaks for my user profile and installed some Firefox plugins like Flash and Java for all users. The whole install and configuration process was fairly quick and painless.

I did have one issue. My network card is an onboard VIA VT6102 Rhine-II.

$ lspci | grep Eth
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 61)
It kept flaking out with errors in /var/log/messages.
kernel: [ 2904.217053] NETDEV WATCHDOG: eth0: transmit timed out
kernel: [ 2904.217210] eth0: Transmit timed out, status 0003, PHY status 786d, resetting...
kernel: [ 2904.217848] eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
The only way the NIC would start working again was a reboot. Removing and reinserting the modules did not help.

A web search revealed that this is a common problem with the NIC. Apparently, the NIC does not come back up after the hardware reset. I noticed various proposed solutions for the problem. The solutions included using "noapic" at boot time, using ethtool to disable tso (tcp segmentation offload), and playing around with IRQ settings in the system BIOS.

Next, I checked the kernel log. This error was a bit more informative.
kernel: [ 2064.587535] irq 11: nobody cared (try booting with the "irqpoll" option)
This message also led me to an Ubuntu bug report where a user confirmed that irqpoll solved the problem in at least one case and also where the Ubuntu team indicated the bug does not qualify for a stable release update.

Using "irqpoll" as a default option in my grub configuration seems to fix the problem for me. The NIC has been running without any error messages for about two days now.

No comments:

Post a Comment