I'd previously bought a cheap USB NIC on Ebay, a "KH-886 USB NIC" which turned out not to be supported by Linux 2.6. The manufacturer (or, the manufacturer of the device this is cloned from, a Davicom DM9601) do provide a tarball of 2.4 drivers.

Yesterday I felt like doing something completely different for a change, so I began work porting the driver to 2.6.

It's been a long time since I'd written any kernel code, and I've never touched USB or network stuff before, so this was an interesting experience. It's taken a few hours to port it to 2.6 but now my copy compiles without warnings. It's not usable yet, though.

Porting device drivers to the 2.6 kernel at LWN.net was invaluable for this work, but even this resource (prepared in the early 2.6 days) has lots of holes. Often I had to search around for a specific patch on LKML which explained why a given function had been removed (or whatever).

Whilst looking around for what the MODULE_PARM macro had been replaced with, I came across the the following amusing quote from kernel hacker Rusty Russell:

Regarding module_param(): MODULE_PARM() will certainly stay throughout the 2.6 series, so no need to change existing code just yet.

You can read more about my progress here.