Linux Driver for the D-Link DE-320CT Ethernet Adapter

Content © Alfred Arnold, 2002 (original HERE). Edited by Major Tom.


Yet some more Micro Channel Ethernet Linux stuff - this time it is not a complete driver but an addition to an existing driver to increase its usability.

D-Link also sold a Micro Channel Ethernet Adapter, the DE-320CT. From its basic layout, it is an NE2000 (NE/2 to be precise) compatible adapter, which has good and bad sides, but it is a short board and has a 10BaseT connector, a feature most older Micro Channel adapters lack.

Unfortunately, it is not precisely the same as an NE/2: It has a different POSID, the layout of the POS registers is different, and - what makes things most difficult - the MAC address PROM is different. The MAC address is the unique 48-bit address that identifies any piece of Ethernet or TR equipment. Standard NE2000 cards have an 8-bit wide PROM that can simply be read with a programmed I/O instruction. The DE-320 however uses a serial EEPROM (a 93C46 to be exact), and the serial protocol has to be implemented in software. A very tedious procedure, but fortunately this only has to be done once during initialization.

Note: The procedure of accessing the serial EEPROM was found by analyzing the packet driver. I had no information or documentation from D-Link, so my code may be incomplete!

You may download the sources here. I am providing the following files:

  • dlink.c - A tiny Linux program to dump the EEPROM's contents. The program assumes a base I/O address of 0x300, the default address for a DE-320.
  • ne2.c - A modified NE/2 Linux driver that also detects the DE-320, for 2.2 series kernels.
  • ne2-2.4.c - The same for 2.4 series kernels. Rename to 'ne2.c' for usage!

To use the Linux driver, simply copy the ne2.c file over the existing one in driver/net, enable NE/2 support and recompile your kernel resp. modules.

The modifications I added to the original NE/2 driver are as follows:

  • add the DE-320 and its POSID to the list of recognized boards
  • add the DE-320 method of deducing I/O address and interrupt from the POS register values
  • Add a routine to read the MAC address from the EEPROM

Like always, comments are (constructive) criticism are always welcome!

Note #2: This page was written after drinking a bottle of beer, so it probably contains a horrendous amount of typing errors. Sorry...
Note #3: (2002-07-11) I have added an additional fix that.

  • displays a correct slot number - it was off by one
  • corrects the amount of I/O space assigned to the D-Link card - it only occupies 32 instead of 48 addresses, and the driver refused to initialize all boards if you had more than one

Content created and/or collected by:
Louis F. Ohland, Peter H. Wendt, David L. Beem, William R. Walsh, Tatsuo Sunagawa, Tomáš Slavotínek, Jim Shorney, Tim N. Clarke, Kevin Bowling, and many others.

Ardent Tool of Capitalism is maintained by Tomáš Slavotínek.
Last update: 24 Mar 2024 - Changelog | About | Legal & Contact