I think I have found a bug in the nVidia ethernet driver with 12.1.

I have been running SuSE servers since 6.4, doing masquerading to my ISP. Currently my server has an ASUS motherboard M4N68T-M V2 with the nVidia MCP 61 chip set. Its gigabit NIC driver is the nForce driver: forcedeth. In the C code for this driver, nVidia has left a comment about ‘TX_done’ not sending a interrupt as it should, so they created a timer to cause the interrupt 100 time a second. The comment comes from the folks who reversed engineered the driver, that nVidia then tested and put out.

Here what happened: I had openSuSE 11.4 working fine. I upgraded to 12.1 and all the workstations on my network were getting low bandwidth. I saw that 12.1 now does connectiion tracking in the firewall, so I rebuilt the kernel to build all that inside. It double the internal speed, but I was still way too slow. Using Speedtest.net, the server saw 20+Mbps down and 3.5Mbps up. Workstations saw .75Mbps down, and 3.5Mbps up. After the new kernel this went to 1.5Mbps down, and the same up. Note the up speed was what it should be. This up speed much faster then down also happened with file to/from the server via Samba.

My guess is the new connection oriented firewall has changed how things are being sent to this NIC, and thus kicked it into the ‘TX_done’ error.

I have put in a D-link gigibit NiC, and the issue is gone, although I can not disable the nVidia NIC in BIOS, so it is unpluged and using an unused subnet.

Well done with your find. Have you contacted the developer to report/discuss?

Manfred Spraul <manfred@colorfullife.com>

I sent nVidia the same, but have not heard back. I have not contacted the folks that first made the driver.