Menu
IT takes a village of detectives to solve the case of the faulty 3Com

IT takes a village of detectives to solve the case of the faulty 3Com

I'm glad open source software (formerly known as "freeware") is finally getting the attention it deserves. I've been a Linux user for years, but I'm only just now beginning to fully appreciate open source.

Using open source is like getting dozens of detectives to work together to solve a good mystery. There's no waiting for the Godfather to pass out service packs that usually introduce new bugs that won't get fixed until the next service pack. With open source, everyone shares the clues they find. And when someone jumps in to allege Linux Kernel Mustard did it with the infinite loop in the SCSI card, a dozen other detectives are there to confirm or poke holes in the theory.

I discovered these hidden benefits of open source when I began what I call the case of the Maltese Falcon, uh, rather, the Faulty 3Com. This week my best stoolie died. It was a 3Com 3C509B network card (you may know him by his alias, "Etherlink III".) I put the card in the circular file labelled "unsolved crimes", and replaced it with a new 3Com 3C905B, aka. "Fast Eddie Etherlink XL". He is also known by the code names "Vortex" and "Cyclone". (My assistant is staking out a twisted pair of sleazy marketing types who I suspect are responsible for naming two completely different cards the 3C509B and 3C905B.)What's driving you?

Fast Eddie has hit the big time and has his own personal Linux driver - called 3c59x - which works with a whole line of 3Com types. Oddly, the driver isn't like your regular chauffeur. Rather than take orders, he gives them. This one seems to be giving the wrong orders because my 3C905B won't work with the driver. I replaced the driver with the latest source code from cesdis. gsfc.nasa.gov/linux/drivers /vortex.html, the site dedicated to support this line of cards. But the uppity new driver won't work either. The two must be friends.

The seedy world of collab-orative software development revolves around list services (e-mail-based discussion forums) dedicated to various portions of Linux.

I infiltrated the Vortex list archives to look for clues (you can find the archives at www.tux.org/hypermail/linux- vortex).

I was about to abandon the case when I came across a suspicious message by a fellow named Andreas Klein. He was experiencing the same symptoms with his card, but got around the problem by slipping a mickey to a reset command. Knocking out as important a character as a reset command this early in the plot isn't something a writer normally wants to do, and it has some long-term consequences. But Andreas isn't a bad egg. He is simply publishing a clue for the benefit of the rest of us computer gumshoes.

I took the hint and looked at that portion of the source code.

I spotted what looks like a shady deal going down. Immediately after the code delivers the reset command, some guy named Check "the Loop" Status loiters for a while to give the card time to acknowledge that the reset process has finished.

But Loopy is a short, delicate Peter Lorre type that may "trip" and meet an untimely demise. If so, the driver will start dishing out new orders before the card is ready to take them.

So I rewrote the script to have Loopy wait an extra 200 milliseconds every trip around the block.

Like Andreas, I was not coding an elegant fix. Just following a lead. And I hit pay dirt. The card works like a dream. Time to file a report.

I sent a message to the discussion list and to the primary author of the driver, Donald Becker. I suggested what I thought was a more elegant solution, which Donald immediately shoots down by demonstrating that it could hang an innocent Kernel.

So Donald solved the problem a slightly different way and posted a beta update to the driver at cesdis.gsfc.nasa.gov/linux/drivers/test.

A final problem

There's still one problem. Windows still relies on real-mode drivers, which are incompatible with the original PCI BIOS. Rather than fix Windows, "Vito" soft made BIOS suppliers an offer they couldn't refuse. Now some PCI BIOS versions make Windows work better but break Linux drivers if you don't power down after running Windows.

Open source, as I said, is like solving a good mystery.

Best of all, if anyone doesn't like the way the story ends, they can rewrite it to suit themselves. And others.

Former consultant and programmer, Nicholas Petreley is editor in chief at NC World. Reach him at nicholas_petreley@infoworld.com


Follow Us

Join the newsletter!

Error: Please check your email address.
Show Comments