Link to home
Start Free TrialLog in
Avatar of keno
keno

asked on

Ethernet card IRQ?

During the install process, Linux autoprobed and found a network card on my system. (I'm using the Red Hat distribution)
I have a Linksys PCI network card and the system installed a 'tulip' driver.

After rebooting, I did a 'dmesg' in a console window and could see the card was there and the tulip driver was loaded. However, the interrupt was 'irq=0' not the 'irq=10' that I was expecting. (As reported by Windows)
Using 'cat /proc/interrupts' the card was not listed.
Using 'cat /proc/pci' showed the card at device 10.
Using 'cat /proc/ioports' listed eth0 at 0x1400.

I tried giving the interrupt at boot time through LILO.
('ether=10,0x1400,eth0') That doesn't seem to work either. I read somewhere, if the driver is loaded as a module, you can't tell the system what the interrupt should be. I would have to recompile the kernal.

I am very new to Linux, but I read a couple of books. (No help) I've read the Ethernet-How to and I've set up the network info as accurately as I could.
I'm using the ethernet card for a cable modem. If I try to access the internet, I get a 'Server not available' error.

As I said, I'm new to Linux and Networking. I'm not even sure that the interrupt is the problem here. But, it seems like a good place to start.
Avatar of keno
keno

ASKER

Edited text of question.
I had an ne2000 card I could not get to work with the kernel.  It was using IRQ3 which didn't work.  I got a configuration program over the web from the manufacturer.  I reconfigured to IRQ5 which didn't work.  I configured to IRQ9 which did work.  Maybe the kernel expects various types of cards to be in certain ranges.  Re-compiling the kernel probably wouldn't help but I could tell you how.  Try moving the interrupt vectors on the card.  Maybe the kernel will find it.  When you did 'dmesg' you probably got a message telling you who wrote the driver for the card, probably Donald Becker at NASA.  You may want to go to his web site to see if there is any info on that driver that would help.  http://cesdis.gsfc.nasa.gov/linux/drivers/...
Have a happy new year.  Maybe you won't care in a couple of days.  naaaa.
Avatar of keno

ASKER

Adjusted points to 175
I suggest you create a DOS boot floppy, and use the setup utility for the card to disable plug-and-pray.  While you're at it, check the BIOS setup on your machine, and see if it is going to allocate the IRQ you have in mind to PCI or ISA.  It's late, and I'm too tired to give better advice.  If this doesn't work, I'll try to think of better ideas.
Is the card loading as a module?  If it is you can try adding:

options tulip irq=10

to /etc/conf.modules
As I recall, the "tulip" driver was for a DEC Etherworks III card.  I don't know what the Linksys is emulating, but NE2000 would be my bet.  Either way, if you solve the IRQ mystery, Linux will probably auto-detect the right card and driver.

Inside the BIOS setup on your machine, there is probably a screen called "PCI configuration" or something like that.  You are looking for a way to manually allocate IRQ 10 to the PCI bus (as opposed to ISA).

For what it's worth, I have two ethernet cards that work, with dmesg information as follows:

eth0: 3Com 3c900 Boomerang 10baseT at 0xe800,  00:60:97:6b:3e:71, IRQ 11
  8K word-wide RAM 3:5 Rx:Tx split, 10baseT interface.
  Enabling bus-master transmits and whole-frame receives.

ne2k-pci.c: PCI NE2000 clone 'Winbond 89C940' at I/O 0xec00, IRQ 10.
eth1: Winbond 89C940 found at 0xec00, IRQ 10, 48:54:E8:26:B0:34.

If you get Linux to properly recognize <any> ethernet card on the right IRQ and it continues to not work, I would consider adding this to the /etc/conf.modules file in place of any ethernet card information you might have:

alias eth0 ne2k-pci

Mine works without an "options" statement.
I don't have a Linksys card, but I'm guessing that it  is really a NE2000 clone.
Avatar of keno

ASKER

I've tried so many things over the last few days, I'm starting to get dizzy. Though, I did manage to learn a few things about Linux in the process. I guess that's a good thing.
Anyhow, I checked my BIOS and as far as I can tell, there's no way to specify IRQ's for installed cards. The only thing I can do is protect interrupts for ISA cards. I have no way of turning of PnP either. There is no way to set this stuff manually.
As far as the driver goes;
1. During Linux installation, autoprobe reported the card and used the tulip driver. I could try another driver, but
2. The driver disk that came with the card also suggested using the tulip.
I've tried adding options in the conf.modules and the lilo.conf files.
I've even rebuilt the kernal with the tulip driver. No luck.
I checked the Red Hat web site and in their list of supported cards I noticed another argument that could be add to the conf.module file 'options tulip debug=xx'. I couldn't find any documentation for this and don't know what value to add to this argument.
I'm thinking of trying a different card. Something more mainstream, like a 3com.
The tulip driver is for many different NIC cards.

I recently had some trouble with a new tulip NIC that I had bought (CNet Pro120 10/100).  While searching for information about this NIC on the Net, I noticed a lot of information on some Linksys cards.  Some tulip patches were avaiable for some linksys cards.

Apparently the problem with many cards, including my CNet and your Linksys was standard tulip drivers worked fine, but IRQ's were all funky.  Some patches were available to fix this without kernel boot parameters.

I was searching google.com/linux and linux-kernel mailing list archives when I ran into this information.  Good luck.


ASKER CERTIFIED SOLUTION
Avatar of dcavanaugh
dcavanaugh

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial