The forcedeth driver for the ethernet part of nvidia’s nForce chipset is integrated into the kernel and works pretty well. The driver is maintained by the Linux kernel developers – who get help by nvidia’s developers. However, that was not always the case.
The nForce chipset consists of several components: audio, storage and ethernet. When it was released years ago nvidia provided a closed source LAN driver for Linux, called nvnet. Quickly the development of an open source driver started and in November 2003 Carl-Daniel Hailfinger announced the release of the open source driver forcedeth. This was done, of course, without any support from nvidia whatsoever.
So far so uninteresting: such things happen all the time.
As time went by the nvidia developers released their proprietary stuff in competition to the forcedeth open source driver, which was integrated into the kernel. Nvidia’s release notes explained how to deactivate the forcedeth driver in favour of their nvnet driver.
But then something changed: the nvidia developers started to contribute code to the free forcedeth driver:
NVidia has contributed gigabit support to forcedeth, so I’ll work
on integrating their patch and fixing remaining bugs in it. If you want
to try it, download forcedeth_gigabit_try19.txt and apply it against
the latest 2.6 kernel.
And things developed further – nvidia actually dropped their own driver. The driver release 1.11 from August 21st, 2006 contained the forcedeth driver. The nvnet ethernet driver was not mentioned at all! All drivers of that release were open source with that release:
All of the following drivers are open-source and are included in most popular Linux distributions. In most cases, the Linux installer will select the appropriate driver for the detected nForce hardware.
This example shows pretty well how things can go when an open source driver is developed and actively used. And although the exact reasons of nvidia’s steps are not clear, it can be assumed that the pressure of the customers using the forcedeth driver (which was default on their machines) was at least one reason.
Of course that does not mean that this will always happen – graphic drivers for example are more complex, and there are maybe more patent/IP problems involved.
But the forcedeth story shows that it is definitely worth a try!