If you've tried getting an Intel EtherExpress 16 card to work with FreeBSD, you've probably either failed to get the card recognized at all, or had reliability problems when you do. This document explains what I've done to "fix" the driver, and how to set the card so that the driver will recognize it. Driver Modifications Apply the following patch, if_ie.c.patch, to /usr/src/sys/i386/isa/if_ie.c, (for versions prior to 4.2), or to /usr/src/sys/dev/ie/if_ie.c, (for 4.2 or later). To apply the patch, save the file locally then execute: patch < if_ie.c.patch. (If you're not in the directory where if_ie.c lives, you'll be prompted to enter the file name -- enter the full path/filename.) For versions prior to 4.2 this is the only patch required -- recompile your kernel and the driver should work okay. For 4.2 or higher, the EtherExpress driver has been removed from the probe sequence. You can put it back in by applying this patch, isa_compat.h.patch to /usr/src/sys/i386/isa/isa_compat.h. After applying both patches, recompile the kernel. Note: I haven't tried more recent kernels myself, but I have had reports that the patches can be used with the 4.8 kernel. The isa_compat.h patch gives offset errors, and the if_ie.c patch gives an error applying "hunk 4", (because that line of code has already been added to the driver). Both errors can be ignored and the kernel can be recompiled. Configuring the Card and Kernel You need Intel's DOS utility SOFTSET to configure the card. Create a DOS boot diskette, unzip SOFTSET.EXE onto it, (from softset.zip), boot the machine with the DOS diskette, then run SOFTSET. Here's a sample of the Softset settings: I/O Address: 300 Interrupt: 10 Connector Type: RJ 45 Force 8 bit Operation: No Amount of RAM to Map: 32K RAM Start Address: D000h Flash/Boot ROM Address: Flash/Boot ROM disabled Flash Remote Boot Program: None This is what the Kernel configuation file entry would look like for these settings: device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 The EtherExpress driver doesn't support all possible settings. Any available I/O address and interrupt should work, but the amount of memory to map must be 32K, and the RAM start address must be one of the following: 0xC8000, 0xCC000, 0xD0000, 0xD4000, 0xD8000. If you're looking for good settings to start with, I've done quite a bit of testing with two cards in the one box, with the following settings: device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 device ie1 at isa? port 0x260 net irq 11 iomem 0xc8000 Note: SOFTSET will only recognise one card at a time, so you'll need to swap cards and boot a couple of times to get two cards set up and running. If you need to change the default configuration to avoid irq/memory conflicts, you will of course need to recompile the kernel. |