Controlling PCI Drivers
Chmarr asks:
"I'm trying to get a GNU/Linux box (Red hat-5.2) running
with two differing ethernet cards (rtl-8029 and rtl-8139).
While the box works just great with one or the other of the
cards (using the ne2k-pci and rtl-8139 drivers, respecively)
I run into problems if I try and use both cards
simultaneously. The rtl-8139 driver loads, finds the 8029
card, complains and gives up. I'd love to be able to
control how the PCI driver problems for cards, but the old
ISA method (io=0x6100 irq=5 on insmod) doesnt work for
PCI: it complains that the symbols aren't available. Does
anyone know how to force a PCI driver to look at a
particular address?"
Check out Plug-and-Play-HOWTO-5 available atd -Play-HOWTO-5.html
http://www.redhat.com/mirrors/LDP/HOWTO/Plug-an
We have a firewall with one RTL-8029 10-base-T ethernet card and 1 3Com 3c905 10/100-base-T ethernet card and it works fine.
/etc/lilo.conf):
We had to append the following option to the kernel boot arguments (in
append="ether=0,0,eth1"
dmesg says the following about our ethernet cards:
ne2k-pci.c:v0.99L 2/7/98 D. Becker/P. Gortmaker http://cesdis.gsfc.nasa.gov/linu
x/drivers/ne2k-pci.html
ne2k-pci.c: PCI NE2000 clone 'RealTek RTL-8029' at I/O 0x7f80, IRQ 9.
eth0: PCI NE2000 found at 0x7f80, IRQ 9, 00:80:C8:C1:D0:1E.
eth1: 3Com 3c905 Boomerang 100baseTx at 0x7f00, 00:10:4b:9d:fc:25, IRQ 10
8K word-wide RAM 3:5 Rx:Tx split, autoselect/NWay Autonegotiation interface.
eth1: MII transceiver found at address 24.
3c59x.c:v0.99E 5/12/98 Donald Becker http://cesdis.gsfc.nasa.gov/linux/drivers/v
ortex.html
Maybe I'm paranoid, but I've avoided using two different cards that use the same driver for just this reason... it seems like it would be troublesome. We're using 3Com 905b in all our systems including 2 router boxen. They work real well with the newer drivers in dual and triple configurations.
Isn't the pci ne2k driver supposed to be a little "problematic"
I've never used one, so I couldn't say.
Using two of the same ethercards (3c905 and 3c905b) works for me. Make sure you have enough interrupts available, as well--some cards do not share interrupts as nicely as others do.
I would also like to know about this. Right now, my IP masquerading gateway is using one ISA card and one PCI card. I hadn't tried using two PCI cards, but I would like to know how to, so at some point I can upgrade to 100Mbit.
MRSH-Recording device, corned beef sandwich with kraut, seafaring bird, and the foamy top of a beverage.
This is a ticklish situation, especially with cards similar enough to confuse the drivers.
In an ideal world, one could tweak the PnP stuff in the BIOS, but in my experience this is not a particulary good solution, since most BIOS configurability is to do with IRQ's, whereas the drivers scan by IO port.
I see two ways for you to get out of this...
1) Compile the drivers as modules, and see if changing the insertion order removes the problem.
2) Edit the source code of the drivers so that the port scanning that they do at startup does not overlap. This is rather non-portable, because you will have to know or guess what IO port the BIOS is going to assign to your cards. This will be the same after each restart, but may change if you add or remove cards from the system.
3) (just though of this) Try building one driver into the kernel and the other as a module. Add a 'reserve' entry to the kernel boot parameters (man bootparam for more info) to prevent the built-in driver from detecting the wrong card. Then, insert the module for full functionality (perhaps). This suffers from problems like (2), but requires only a change to lilo.conf if you change your hardware setup.
I haven't tried any of these, so your mileage will probably vary a lot.
Cheers,
Rodd
Be careful. People in masks cannot be trusted.
I've been using an ne2k-pci in many differently configured machines and in many different capacities (stable/devel kernels, ipmasq, you name it). Of course I'm not a networking demigod or anything so you don't have to take my word for it ;P