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

Yet some more Microchannel 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 Microchannel 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 Microchannel 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! On this page, I am providing the following code:

  • 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

© Alfred Arnold, alfred@ccac.rwth-aachen.de 2002


9595 Main Page