if_alc trouble

Sergey V. Dyatko sergey.dyatko at gmail.com
Fri Aug 13 07:45:41 UTC 2010


Hi all,
I have strange problem:

NIC:
alc0 at pci0:2:0:0:        class=0x020000 card=0x38a317aa chip=0x10621969
rev=0xc0 hdr=0x00 vendor     = 'Attansic (Now owned by Atheros)'
    device     = 'Atheros AR8132 PCI-E Fast Ethernet Controller
(AR8132)' class      = network
    subclass   = ethernet

% uname -a
FreeBSD laptop.minsk.domain 9.0-CURRENT FreeBSD 9.0-CURRENT #8 r209973:
Tue Jul 13 10:17:08 EEST 2010
root at laptop.minsk.domain:/usr/obj/usr/src/sys/b450  i386

I'm using if_alc as a kernel module, when I boot with plugged in
cable all works fine, but when I booting with unplugged
cable - network doesn't work.

I'm trying kenv hw.alc.msi_disable=1 and kldload if_alc..
from messages: 

Aug 13 09:06:12 laptop kernel: alc0: <Atheros AR8132 PCIe Fast
Ethernet> port 0x3000-0x307f mem 0x96100000-0x9613ffff ir q 16 at
Ethernet> device 0.0 on pci2
Aug 13 09:06:12 laptop kernel: alc0: 15872 Tx FIFO, 15360 Rx FIFO
Aug 13 09:06:12 laptop kernel: miibus0: <MII bus> on alc0
Aug 13 09:06:12 laptop kernel: atphy0: <Atheros F1 10/100/1000 PHY> PHY
0 on miibus0 Aug 13 09:06:12 laptop kernel: atphy0:  10baseT,
10baseT-FDX, 100baseTX, 100baseTX-FDX, auto Aug 13 09:06:12 laptop
kernel: alc0: Ethernet address: 00:1f:16:2e:fa:49 Aug 13 09:06:12
laptop kernel: alc0: [FILTER] Aug 13 09:06:12 laptop kernel: alc0: link
state changed to DOWN Aug 13 09:06:15 laptop kernel: alc0: link state
changed to UP Aug 13 09:06:15 laptop kernel: alc0: DMA write error! --
resetting Aug 13 09:06:15 laptop kernel: alc0: link state changed to
DOWN Aug 13 09:06:16 laptop kernel: alc0: promiscuous mode enabled
Aug 13 09:06:17 laptop kernel: alc0: link state changed to UP
Aug 13 09:06:18 laptop kernel: alc0: DMA write error! -- resetting
Aug 13 09:06:18 laptop kernel: alc0: link state changed to DOWN
Aug 13 09:06:20 laptop kernel: alc0: link state changed to UP
Aug 13 09:06:21 laptop kernel: alc0: DMA write error! -- resetting


how to repeat: 
1) boot with unplugged cable (if_alc_load="YES" on loader.conf)
2) plug-in cable
3) dhclient alc0
4) tcpdump -ni alc0 -vvv -> http://tiger.ipfw.ru/files/tcpdump.txt
5) reboot with plugged cable..
6) dhclient alc0
....
[tiger at laptop]~%ifconfig alc0 
alc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu
1500
options=c3198<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MCAST,WOL_MAGIC,VLAN_HWTSO,LINKSTATE>
ether 00:1f:16:2e:fa:49 inet 192.168.9.150 netmask 0xffffff00 broadcast
192.168.9.255 media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active

now I can unplug cable, unload if_alc, load it again, plug cable -- all
works fine..

Thanks in advance....

-- 
wbr, tiger


More information about the freebsd-current mailing list