Subject: Re: an0: read record failed | an0: failed to attach controller
To: None <current-users@netbsd.org>
From: Brian A. Seklecki <lavalamp@spiritual-machines.org>
List: current-users
Date: 10/12/2003 12:17:16
On Sun, 2003-10-12 at 09:17, Brian A. Seklecki wrote: 
> With bleeding edge -current as of this morning, I'm seeing some problems
> with an(4) on my Sony Vaio PCG-R505GL laptop.  Since this is the first
> I've tried NetBSD on here, I'm going to assume nothing.

Robert Elz <kre@munnari.OZ.AU> mailed me an asked "So what is the
problem?".  Fair game >:}. The problem is that the card isn't
initializing.  It's not showing up in ifconfig(8).  Sorry for the
ambiguity. 

Further, the problem is that there are four functions called from
an_attach() that output the exact same error:

http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/ic/an.c?rev=1.26&content-type=text/x-cvsweb-markup

/* Read the current configuration */ 
	sc->an_config.an_type = AN_RID_GENCONFIG;
	sc->an_config.an_len = sizeof(struct an_ltv_genconfig);
	if (an_read_record(sc, (struct an_ltv_gen *)&sc->an_config)) {
		splx(s);
		aprint_error("%s: read record failed\n", sc->an_dev.dv_xname);
		return(EIO);
	}

	/* Read the card capabilities */
	sc->an_caps.an_type = AN_RID_CAPABILITIES;
	sc->an_caps.an_len = sizeof(struct an_ltv_caps);
	if (an_read_record(sc, (struct an_ltv_gen *)&sc->an_caps)) {
		splx(s);
		aprint_error("%s: read record failed\n", sc->an_dev.dv_xname);
		return(EIO);
	}

	/* Read ssid list */
	sc->an_ssidlist.an_type = AN_RID_SSIDLIST;
	sc->an_ssidlist.an_len = sizeof(struct an_ltv_ssidlist);
	if (an_read_record(sc, (struct an_ltv_gen *)&sc->an_ssidlist)) {
		splx(s);
		aprint_error("%s: read record failed\n", sc->an_dev.dv_xname);
		return(EIO);
	}

	/* Read AP list */
	sc->an_aplist.an_type = AN_RID_APLIST;
	sc->an_aplist.an_len = sizeof(struct an_ltv_aplist);
	if (an_read_record(sc, (struct an_ltv_gen *)&sc->an_aplist)) {
		splx(s);
		aprint_error("%s: read record failed\n", sc->an_dev.dv_xname);
return(EIO);


...this is unchanged in the OpenBSD version as well(1).  I'm in the
process of denoting the aprint_errors's to thier cooresponding data
structures and recompiling.

-Brian

1.
http://www.openbsd.org/cgi-bin/cvsweb/src/sys/dev/ic/an.c?rev=1.33&content-type=text/x-cvsweb-markup

--

[Later On]

Okay, I booted the kernel with the patched diagnostic error messages as
so:


# diff -u an.c_orig an.c      
-- an.c_orig   2003-10-12 10:25:56.000000000 -0400
+++ an.c        2003-10-12 10:24:30.000000000 -0400
@@ -214,7 +214,7 @@
        sc->an_config.an_len = sizeof(struct an_ltv_genconfig);
        if (an_read_record(sc, (struct an_ltv_gen *)&sc->an_config)) {
                splx(s);
-               aprint_error("%s: read record failed\n",
sc->an_dev.dv_xname);
+               aprint_error("%s: read record failed for sc->an_config
(Current Configuration)\n", sc->an_dev.dv_xname);
                return(EIO);
        }

@@ -223,7 +223,7 @@
        sc->an_caps.an_len = sizeof(struct an_ltv_caps);
        if (an_read_record(sc, (struct an_ltv_gen *)&sc->an_caps)) {
                splx(s);
-               aprint_error("%s: read record failed\n",
sc->an_dev.dv_xname);
+               aprint_error("%s: read record failed for sc->an_caps
(Card Capabilties)\n", sc->an_dev.dv_xname);
                return(EIO);
        }

@@ -232,7 +232,7 @@
        sc->an_ssidlist.an_len = sizeof(struct an_ltv_ssidlist);
        if (an_read_record(sc, (struct an_ltv_gen *)&sc->an_ssidlist)) {
                splx(s);
-               aprint_error("%s: read record failed\n",
sc->an_dev.dv_xname);
+               aprint_error("%s: read record failed for sc->an_ssidlist
(SSID List)\n", sc->an_dev.dv_xname);
                return(EIO);
        }

@@ -241,7 +241,7 @@
        sc->an_aplist.an_len = sizeof(struct an_ltv_aplist);
        if (an_read_record(sc, (struct an_ltv_gen *)&sc->an_aplist)) {
                splx(s);
-               aprint_error("%s: read record failed\n",
sc->an_dev.dv_xname);
+               aprint_error("%s: read record failed for sc->an_aplist
(AP List)\n", sc->an_dev.dv_xname);
                return(EIO);
        }

Once booted, I now see the error is occurring in:


	sc->an_caps (Card Capabilties)

-lava


> I'm seeing some OpenBSD threads on this error that I'll look into.
> 
> The Aironet is a generic 350 LCM (the external antenna model).
> 
> an0 at pcmcia0 function 0: Cisco Systems, 350 Series Wireless LAN Adapter
>  port 0x400-0x43f
> pcmcia0: card irq 11
> 
> My first thought would be IRQ sharing/conflict, but this BIOS seems to be
> happy (APIC IRQ routing, no manual assignment options in the menu), should
> all be ACPI happy.
> 
> Firmware revision is: V5.02.19.
> 
> All the device IRQs match what Windows Xp shows them as...however, the
> base memory for the an0, 0x400-0x43d doesn't match what XP says, it has:
> FAC0-FAFF
> 
> Here is the complete dmesg(8) via /kern/msgbuf ftp(1)'d off via fxp0
> 
> -lava
> 
> root@addiction:/tmp/O/sys/arch/i386/compile/INSTALL
> total memory = 254 MB
> avail memory = 229 MB
> using 3277 buffers containing 13108 KB of memory
> BIOS32 rev. 0 found at 0xfd871
> mainbus0 (root)
> cpu0 at mainbus0: (uniprocessor)
> cpu0: Intel Mobile Pentium III (686-class), 1193.15 MHz, id 0x6b4
> cpu0: features 383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR>
> cpu0: features 383f9ff<PGE,MCA,CMOV,PAT,PSE36,MMX>
> cpu0: features 383f9ff<FXSR,SSE>
> cpu0: I-cache 16 KB 32b/line 4-way, D-cache 16 KB 32b/line 4-way
> cpu0: L2 cache 512 KB 32b/line 8-way
> cpu0: ITLB 32 4 KB entries 4-way, 2 4 MB entries fully associative
> cpu0: DTLB 64 4 KB entries 4-way, 8 4 MB entries 4-way
> cpu0: 16 page colors
> pci0 at mainbus0 bus 0: configuration mode 1
> pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
> pchb0 at pci0 dev 0 function 0
> pchb0: vendor 0x8086 product 0x3575 (rev. 0x04)
> agp at pchb0 not configured
> vga1 at pci0 dev 2 function 0: vendor 0x8086 product 0x3577 (rev. 0x04)
> wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
> wsmux1: connecting to wsdisplay0
> vendor 0x8086 product 0x3577 (miscellaneous display) at pci0 dev 2 function 1 not configured
> uhci0 at pci0 dev 29 function 0: vendor 0x8086 product 0x2482 (rev. 0x02)
> uhci0: interrupting at irq 9
> usb0 at uhci0: USB revision 1.0
> uhub0 at usb0
> uhub0: vendor 0x8086 UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
> uhub0: 2 ports with 2 removable, self powered
> uhci1 at pci0 dev 29 function 1: vendor 0x8086 product 0x2484 (rev. 0x02)
> uhci1: interrupting at irq 9
> usb1 at uhci1: USB revision 1.0
> uhub1 at usb1
> uhub1: vendor 0x8086 UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
> uhub1: 2 ports with 2 removable, self powered
> uhci2 at pci0 dev 29 function 2: vendor 0x8086 product 0x2487 (rev. 0x02)
> pci_intr_map: no mapping for pin C (line=ff)
> uhci2: couldn't map interrupt
> ppb0 at pci0 dev 30 function 0: vendor 0x8086 product 0x2448 (rev. 0x42)
> pci1 at ppb0 bus 2
> pci1: i/o space, memory space enabled
> vendor 0x104c product 0x8023 (Firewire serial bus, interface 0x10) at pci1 dev 2 function 0 not configured
> vendor 0x1180 product 0x0475 (CardBus bridge, revision 0x80) at pci1 dev 5 function 0 not configured
> fxp0 at pci1 dev 8 function 0: Intel PRO/100 VE Network Controller, rev 66
> fxp0: interrupting at irq 9
> fxp0: Ethernet address 08:00:46:77:e5:40
> inphy0 at fxp0 phy 1: i82562ET 10/100 media interface, rev. 0
> inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
> pcib0 at pci0 dev 31 function 0
> pcib0: vendor 0x8086 product 0x248c (rev. 0x02)
> piixide0 at pci0 dev 31 function 1
> piixide0: Intel 82801CA IDE Controller (ICH3) (rev. 0x02)
> piixide0: bus-master DMA support present
> piixide0: primary channel wired to compatibility mode
> piixide0: primary channel interrupting at irq 14
> atabus0 at piixide0 channel 0
> piixide0: secondary channel wired to compatibility mode
> piixide0: secondary channel interrupting at irq 15
> atabus1 at piixide0 channel 1
> vendor 0x8086 product 0x2483 (SMBus serial bus, revision 0x02) at pci0 dev 31 function 3 not configured
> vendor 0x8086 product 0x2485 (audio multimedia, revision 0x02) at pci0 dev 31 function 5 not configured
> vendor 0x8086 product 0x2486 (modem communications, revision 0x02) at pci0 dev 31 function 6 not configured
> isa0 at pcib0
> com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
> pckbc0 at isa0 port 0x60-0x64
> pckbd0 at pckbc0 (kbd slot)
> pckbc0: using irq 1 for kbd slot
> wskbd0 at pckbd0: console keyboard, using wsdisplay0
> pcppi0 at isa0 port 0x61
> sysbeep0 at pcppi0
> isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
> npx0 at isa0 port 0xf0-0xff: using exception 16
> fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
> pcic0 at isa0 port 0x3e0-0x3e1 iomem 0xd0000-0xdffff irq
> pcic0: controller 0 (Intel 82365SL Revision 1) has socket A only
> pcmcia0 at pcic0 controller 0 socket 0
> isapnp0: no ISA Plug 'n Play devices found
> fd0 at fdc0 drive 0: 1.44MB, 80 cyl, 2 head, 18 sec
> pcic0: controller 0 detecting irqs with mask 0xde18:..10..11
> pcic0: using irq 10 for socket events
> md0: internal 2500 KB image area
> an0 at pcmcia0 function 0: Cisco Systems, 350 Series Wireless LAN Adapter
>  port 0x400-0x43f
> pcmcia0: card irq 11
> wd0 at atabus0 drive 0: <HITACHI_DK23DA-30>
> wd0: drive supports 16-sector PIO transfers, LBA addressing
> wd0: 28615 MB, 58140 cyl, 16 head, 63 sec, 512 bytes/sect x 58605120 sectors
> wd0: 32-bit data port
> wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
> wd0(piixide0:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA data transfers)
> an0: read record failed
> an0: failed to attach controller
> boot device: fd0
> root on md0a dumps on md0b
> root file system type: ffs
> warning: no /dev/console
> 
> l8*
> 	-lava
> 
> x.25 - minix - bitnet - plan9 - 110 bps - ASR 33 - base8