Hello, I have a Soekris net6501-50 with an Atheros AR9380 (model AR5BXB112) wireless card attached to a Mini PCI Express slot. When attempting to `ifconfig athn0 scan`, or otherwise interact with the interface, I trigger a panic. I’ve tried both with and without the athn firmware installed via `fw_update`, and even tested the card in a PCI-E adapter.
Here’s the panic line: panic: kernel diagnostic assertion "pin < sc->ngpiopins" failed: file "../../../../dev/ic/ar9003.c", line 514 I've included trace, ps, registers and objdump output below. Any help would be appreciated! Cheers, Mark `trace` output: ddb> trace Debugger(d09da499,f54bc948,d09b7298,f54bc948,0) at Debugger+0x4 panic(d09b7298,d0935a26,d0996d20,d099eec4,202) at panic+0x67 __assert(d0935a26,d099eec4,202,d0996d20,1) at __assert+0x2e ar9003_gpio_write(d1f40000,ff,1,d1f40000,d1f40000) at ar9003_gpio_write+0xa2 athn_set_led(d1f40000,0,0,1,80) at athn_set_led+0x31 athn_led_init(d1f40000,7f,0,f54bc9ec,d0203009) at athn_led_init+0x35 athn_init(d1f40030,d0b21068,d6efb220,d2491200,d1f40030) at athn_init+0xe8 athn_ioctl(d1f40030,8020690c,d2491200,d0427410,d2491228) at athn_ioctl+0x1cc in6_ifinit(d1f40030,d2491200,1,d03c6d49,d6cce2ac) at in6_ifinit+0xbe in6_update_ifa(d1f40030,f54bcc10,0,0,0) at in6_update_ifa+0x292 in6_ifattach_linklocal(d1f40030,0,f54bcd7c,3c50,f8214ba2) at in6_ifattach_linkl ocal+0x128 in6_ifattach(d1f40030,0,f54bcd7c,d03c78a5,f54bcd68) at in6_ifattach+0xdd in6_if_up(d1f40030,d09bd23c,cfbd5000,3c02d003,80206910) at in6_if_up+0x13 if_up(d1f40030,0,0,3c02d003,d1cf9030) at if_up+0x6e ifioctl(d6c8ec40,80206910,f54bce84,d6cded68,f54bcec8) at ifioctl+0xcdb sys_ioctl(d6cded68,f54bcf64,f54bcf84,f54bcfa8,d6e59b00) at sys_ioctl+0x144 syscall() at syscall+0x214 --- syscall (number 10) --- 0x2: `ps` output: ddb> ps PID PPID PGRP UID S FLAGS WAIT COMMAND *20727 19085 20727 0 7 0x3 ifconfig 19085 7999 19085 0 3 0x8b pause zsh 7999 12432 7999 1000 3 0x8b pause zsh 12432 1 12432 1000 2 0 tmux 8775 3974 8775 1000 3 0x83 kqread tmux 3974 28811 3974 1000 3 0x8b pause zsh 28811 3693 3693 1000 3 0x90 select sshd 3693 9282 3693 0 3 0x92 poll sshd 19024 1 19024 0 3 0x83 ttyin getty 9267 1 9267 0 3 0x80 select cron 31441 1 31441 0 3 0x80 nanosleep watchdogd 2267 1 2267 601 3 0x90 kqread unbound 30127 1 30127 688 3 0x90 kqread dnscrypt-proxy 10904 1 10904 0 3 0xb0 select sendmail 4418 1 4418 77 3 0x90 poll dhcpd 9282 1 9282 0 3 0x80 select sshd 31370 21117 10004 83 3 0x90 poll ntpd 21117 10004 10004 83 3 0x90 poll ntpd 10004 1 10004 0 3 0x80 poll ntpd 14077 21793 21793 74 3 0x90 bpf pflogd 21793 1 21793 0 3 0x80 netio pflogd 7320 31362 31362 73 3 0x90 poll syslogd 31362 1 31362 0 3 0x80 netio syslogd 21221 0 0 0 3 0x4200 aiodoned aiodoned 23527 0 0 0 3 0x4200 syncer update 13509 0 0 0 3 0x4200 cleaner cleaner 25814 0 0 0 3 0x4200 reaper reaper 30850 0 0 0 3 0x4200 pgdaemon pagedaemon 30879 0 0 0 3 0x4200 bored crypto 11107 0 0 0 3 0x4200 pftm pfpurge 8157 0 0 0 3 0x4200 mmctsk sdmmc1 26366 0 0 0 3 0x4200 mmctsk sdmmc0 24641 0 0 0 3 0x4200 usbtsk usbtask 28718 0 0 0 3 0x4200 usbatsk usbatsk 16005 0 0 0 3 0x4200 bored sensors 21790 0 0 0 3 0x4200 bored systq 19530 0 0 0 3 0x4200 bored syswq 30656 0 0 0 3 0x40004200 idle0 25734 0 0 0 3 0x4200 kmalloc kmthread 1 0 1 0 3 0x82 wait init 0 -1 0 0 3 0x200 scheduler swapper `show registers` output: ddb> show registers ds 0x10 es 0x10 fs 0x20 gs 0 edi 0xd09b7298 systq+0x1ae0 esi 0x100 ebp 0xf54bc8fc ebx 0xf54bc948 edx 0x1 ecx 0xd0b2008c kprintf_mutex eax 0x1 eip 0xd055fc74 Debugger+0x4 cs 0x8 eflags 0x202 esp 0xf54bc8fc ss 0x10 Debugger+0x4: popl %ebp `objdump` output: /* * Access to General Purpose Input/Output ports. */ int ar9003_gpio_read(struct athn_softc *sc, int pin) { KASSERT(pin < sc->ngpiopins); return (((AR_READ(sc, AR_GPIO_IN) & AR9300_GPIO_IN_VAL) & (1 << pin)) != 0); } void ar9003_gpio_write(struct athn_softc *sc, int pin, int set) { uint32_t reg; KASSERT(pin < sc->ngpiopins); reg = AR_READ(sc, AR_GPIO_IN_OUT); if (set) reg |= 1 << pin; else reg &= ~(1 << pin); AR_WRITE(sc, AR_GPIO_IN_OUT, reg); AR_WRITE_BARRIER(sc); }