Marc Gravel <ma
...@pathcom.com> writes:
>I have an Ethernet Ne2000 compatible card in my Linux machine and it
>never gets detected!!! It works fine if I boot to the dos partition and
>use nwclient to login in to a novell server, but I get nothing with the
>linux os.
>I am running Slackware v3.0
>I have 'net' as the boot disk (ide drivers and network drivers)
I believe that the "net" disk doesn't have the ne2k driver built in,
but I haven't had that confirmed yet.
Here are some general pointers to help get the card detected. If you
try all of the following and are still stumped, then e-mail me the
details you have found out.
1) Build a new kernel with only the device drivers that you need.
Verify that you are indeed booting the fresh kernel. Forgetting to
run lilo, etc. can result in booting the old one. (Look closely at
the build time/date reported at boot.) Sounds obvious, but we have all
done it before. Look at the "System.map" file to ensure it has the
ne2k driver in it. (Look for names like _ne_probe _ne_probe1
_ne_reset_8390 _ne_block_input _ne_block_output)
2) Look at the boot messages carefully. Does it ever even mention doing
a ne2k probe such as "NE*000 probe at 0xNNN: not found (blah blah)" or
does it just fail silently. There is a big difference. Use "dmesg|more"
to review the boot messages after logging in, or hit <Shift><PgUp>
to scroll the screen up after the boot has completed and the login
prompt appears.
3) After booting, do a "cat /proc/ioports" and verify that the full
iospace that the card will require is vacant. If you are at 0x300 then
the ne2k driver will ask for 0x300-0x31f. If any other device driver
has registered even one port anywhere in that range, the probe will not
take place at that address and will silently continue to the next of the
probed addresses.
4) Same as above for "cat /proc/interrupts". Make sure no other device
has registered the interrupt that you set the ethercard for. In this
case, the probe will happen, and the ether driver will complain loudly
at boot about not being able to get the desired IRQ line.
5) If you are still stumped by the silent failure of the driver, then
edit it and add some printk() to the probe. For example, with the ne2k
you could add/remove lines (marked with a "+" or "-") in net/ne.c like:
int reg0 = inb_p(ioaddr);
+ printk("NE2k probe - now checking %x\n",ioaddr);
- if (reg0 == 0xFF)
+ if (reg0 == 0xFF) {
+ printk("NE2k probe - got 0xFF (vacant i/o port)\n");
return ENODEV;
+ }
6) You can also get the ne2k diagnostic from Don's ftp site (mentioned
in the howto as well) and see if it is able to detect your card after
you have booted into linux. Use the "-p 0xNNN" option to tell it
where to look for the card. (The default is 0x300 and it doesn't go
looking elsewhere, unlike the boot-time probe.)
7) Try warm booting into linux from a DOS boot floppy (via loadlin)
after running the supplied DOS driver or config program. It may be doing
some extra (i.e. non-standard) "magic" to initialize the card.
8) Try Russ Nelson's ne2000.com packet driver to see if even it can
see your card -- if not, then things do not look good. Example:
A:> ne2000 0x60 10 0x300
The arguments are <software interrupt vector> <hardware IRQ> <i/o base>.
You can get it from any msdos archive in pktdrv<version>.zip -- I think
the current version is 11 or 12.
Paul.