ED(1) driver of FreeBSD 5.2-RC1 cannot work with ISA PnP NE2000 compatible NIC

From: Rostislav Krasny <rosti_bsd_at_yahoo.com>
Date: Fri, 19 Dec 2003 17:33:13 -0800 (PST)
Hello.

I have an ISA PnP NE-12 (NE2000 compatible) NIC based on UMC UM9008F
chip. This is an output of 'pnpinfo' in this system:

=======start of pnpinfo output========
Checking for Plug-n-Play devices...

Card assigned CSN #1
Vendor ID UMC9008 (0x0890a355), Serial Number 0x630f0000
PnP Version 1.0, Vendor Version 16
Device Description: ISA PLUG & PLAY  Ethernet Card

Logical Device ID: UMC9008 0x0890a355 #0
        Device supports I/O Range Check
        Vendor register funcs 00
Compatible Device ID: PNP80d6 (d680d041)
    I/O Range 0x200 .. 0x3e0, alignment 0x20, len 0x20
        [not 16-bit addr]
    IRQ: 2 3 4 5 10 11 12 15 IRQ: High true edge sensitive
End Tag

Successfully got 6 resources, 1 logical fdevs
-- card select # 0x0001

CSN UMC9008 (0x0890a355), Serial Number 0x630f0000

Logical device #0
IO:  0x0200 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
IRQ 2 0
DMA 4 4
IO range check 0x00 activate 0x01
=======end of pnpinfo output========

This card works well with FreeBSD 4.X but refuse to work with FreeBSD
5.X. Now I'm trying to make it work with FreeBSD 5.2-RC1. Following is
a part of dmesg, right after I installed 5.2-RC1:

ed1: <ISA PLUG & PLAY  Ethernet Card> at port 0x200-0x21f irq 2 on isa0
device_probe_and_attach: ed1 attach returned 22

When I saw it I thought that the problem is in PnP initialization
because IRQ 2 looks wrong. I didn't programmed FreeBSD kernel and its
device drivers in a past, so I made simple but ugly patch to the 'ed'
driver:

--- if_ed.c.orig        Wed Dec 17 12:44:49 2003
+++ if_ed.c     Fri Dec 19 16:34:32 2003
_at__at_ -1655,7 +1655,7 _at__at_
        struct resource *res;

        res = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
-                                0ul, ~0ul, 1, (RF_ACTIVE | flags));
+                                3ul, ~0ul, 1, (RF_ACTIVE | flags));
        if (res) {
                sc->irq_rid = rid;
                sc->irq_res = res;

After I recompiled the kernel I got following text in dmesg:

ed1: <ISA PLUG & PLAY  Ethernet Card> at port 0x200-0x21f irq 5 on isa0
ed1: bpf attached
ed1: address 00:00:21:82:25:03, type NE2000 (16 bit)

And finally when I ran 'ifconfig -a' I saw this:

ed1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::200:21ff:fe82:2503%ed1 prefixlen 64 scopeid 0x4
        ether 00:00:21:82:25:03

Ok but ed1 still doesn't work! It can send packets but cannot receive
any packet. This is how I found it. On the 5.2-RC1 box I ran ping with
IP address of second host of my home LAN and in the second
pseudo-terminal I ran tcpdump. On the destination host I ran ethereal.
The tcpdump detected several outgoing packets with ARP requests. The
ethereal detected all these packets as incoming and also several
outgoing packets with ARP responses. There is no problem to ping the
same second host when I used 3Com NIC and the same Ethernet cable at
the same box.

Also there are many error messages in /var/log/messages when ed1 is UP:

Dec 19 17:01:37 vega kernel: ed1: device timeout
Dec 19 17:01:42 vega last message repeated 2 times
Dec 19 17:03:05 vega last message repeated 5 times

Do you have any idea why FreeBSD 5.x still can't work with ISA PnP
NE2000 compatible NICs like the one I have?

Thanks

P.S. since I'm not subscribed to freebsd-current mailing list could you
please Cc you replies to me too?

__________________________________
Do you Yahoo!?
New Yahoo! Photos - easier uploading and sharing.
http://photos.yahoo.com/
Received on Fri Dec 19 2003 - 16:33:14 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:34 UTC