Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Oct 2000 07:44:42 -0400 (EDT)
From:      Thomas David Rivers <rivers@dignus.com>
To:        imp@village.org, rivers@dignus.com
Cc:        behanna@zbzoom.net, freebsd-stable@FreeBSD.ORG, jim@siteplus.net, steve@sse0691.bri.hp.com
Subject:   Re: 4.1-RELEASE pccard?
Message-ID:  <200010041144.HAA84948@lakes.dignus.com>
In-Reply-To: <200010032346.RAA31311@harmony.village.org>

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> In message <200010032214.SAA82730@lakes.dignus.com> Thomas David Rivers writes:
> : I 4.1(.1) I get:
> : 
> :    ed1 at port 0x300-0x31f ir1 3 slot 1 on pccard1
> :    ed1: address 01:02:00:ff:15:1d, type NE2000 (16 bit)
> : 
> 
> This is a big clue that something bad is wrong.
> 
> Warner
> 

 Warner is right...

 Just to verify things further - I hardcoded the mac address in 
 if_ed.c:ed_get_Linksys() (wrapping an #if 0 around the code
 that gets it before and simply setting the bytes in 
 sc->arpcom.ac_enaddr[].)

 This worked beautifully - and my laptop is no `on the net.'

 The code for this in the 3.4 PAO is:


        /*
         * 0x14-0x19 : Physical Address Register 0-5 (PAR0-PAR5)
         * 0x1A      : Card ID Register (CIR)
         * 0x1B      : Check Sum Register (SR)
         */
        for (sum = 0, i = 0x4; i < 0xc; i++)
                sum += inb(sc->asic_addr + i);
        if (sum != 0xff)
                return 0;               /* invalid DL10019C */
        for (i = 0; i < ETHER_ADDR_LEN; i++) {
                sc->arpcom.ac_enaddr[i] = inb(sc->asic_addr + 0x4 + i);
                /* printf("%02x.", sc->arpcom.ac_enaddr[i]); */
        }
        return 2;


 while the code for this in 4.1.1 is:

        /*
         * Linksys registers(offset from ASIC base)
         *
         * 0x04-0x09 : Physical Address Register 0-5 (PAR0-PAR5)
         * 0x0A      : Card ID Register (CIR)
         * 0x0B      : Check Sum Register (SR)
         */
        for (sum = 0, i = 0x04; i < 0x0c; i++)
                sum += ed_asic_inb(sc, i);

        if (sum != 0xff)
                return (0);             /* invalid DL10019C */
        for (i = 0; i < ETHER_ADDR_LEN; i++) {
                sc->arpcom.ac_enaddr[i] = ed_asic_inb(sc, 0x04 + i);
        }

 it turns out that `sum' was not 0xff (but 0x51) as it should have
 been... but, everything looks just fine to me... (of course, I'm
 not "up" on the busifying of everything - so I'm not sure
 if ed_asic_inb() actually expands to the same things as the
 basic inb() was in 3.4.)

 But - this seems to be the place for the difficulties...

	- Dave Rivers -





To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200010041144.HAA84948>