Bug 119696 - [irq] [ral] ral device causes massive interrupt storm sometimes
Summary: [irq] [ral] ral device causes massive interrupt storm sometimes
Status: Closed Overcome By Events
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 7.0-PRERELEASE
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-01-15 19:30 UTC by Sven Berkvens-Matthijsse
Modified: 2017-08-27 01:46 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sven Berkvens-Matthijsse 2008-01-15 19:30:01 UTC
In some environments, like my home, my ral WiFi device works like a charm.
No problems whatsoever.

But in some environments, like my office, it causes a massive interrupt
storm (in the order of 70000 interrupts per second) to occur.

I have the following device in my laptop (output of pciconf -l -v):

ral0@pci0:5:9:0: class=0x028000 card=0xb8331462 chip=0x03021814 rev=0x00 hdr=0x00
    vendor     = 'Ralink Technology, Corp'
    device     = 'RT2525 2.4GHz transceiver + RT2560 MAC/BBP wireless a/b'
    class      = network

In my office environment, the device does not detect any networks at all.
My colleague's laptop, which has a recent Intel chipset-based WiFi card
(and also runs the same version of FreeBSD), has no problems with the
environment, and in fact it detects more than ten networks.

Stopping the interface with "/etc/rc.d/netif stop ral0" causes the
interrupt storm to stop. Starting the interface again (it's configured
for DHCP and WPA by the way in /etc/rc.conf) causes the interrupt storm
to resume as before. But even if the device is not up, it produces
around 30 interrupts per second. No idea is that's normal or not, though.

Fix: 

I'm not sure what the problem is, let alone a solution.
How-To-Repeat: I don't know how other people could reproduce the problem. I know how
to reproduce it in my two described environments, though, so if anyone
wants me to test anything (custom patches, etc are no problem) in either
environment, that's certainly possible.
Comment 1 Robert Jenssen 2008-01-28 22:54:06 UTC
Hi,

For two years I have been successfully using an Ralink Wireless Ethernet card 
with a Belkin F1PI241EGau wireless router under FreeBSD 6. After upgrading to 
FreeBSD 7 RC1 the card doesn't reliably connect to the router at bootup. 
Perhaps the problem is related to this PR? I am not sure how to diagnose 
an "interrupt storm". There is nothing relevant in /var/log/messages. 
Rebooting (sometimes multiple times) fixes the problem. As you can see in the 
following example, simply restarting ral0 is not sufficient. I have not seen 
this problem when booting into Win2K.

Regards,

Rob Jenssen


For example (SSID blanked):

# uname -a 
FreeBSD kraken.wollstonecraft 7.0-RC1 FreeBSD 7.0-RC1 #0: Mon Jan 28 
18:24:20 EST 2008 root@kraken.wollstonecraft:/usr/obj/usr/src/sys/KRAKEN i386

# dmesg | grep ral0
ral0: <Ralink Technology RT2560> mem 0xf2004000-0xf2005fff irq 22 at device 
6.0 on pci2
ral0: MAC/BBP RT2560 (rev 0x04), RF RT2525
ral0: Ethernet address: 00:11:50:63:cd:47
ral0: [ITHREAD]

# pciconf -lv
.
.
ral0@pci0:2:6:0:        class=0x028000 card=0x700a1799 chip=0x02011814 
rev=0x01 hdr=0x00
    vendor     = 'Ralink Technology, Corp'
    device     = '0x03011814 Zonet ZEW1601 (Ralink Chipset) 802.11b/g WLAN 
Card'
    class      = network

# ifconfig ral0 list scan
SSID            BSSID              CHAN RATE   S:N     INT CAPS
Ear########...  00:12:bf:25:34:6b   10   54M -63:-95  100 EPS  WPA

# sudo /etc/rc.d/netif restart ral0
Starting wpa_supplicant.
ral0: no link .............. giving up
ral0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:11:50:63:cd:47
        media: IEEE 802.11 Wireless Ethernet autoselect (DS/1Mbps)
        status: no carrier
        ssid Ear##################### channel 10 (2457 Mhz 11g)
        authmode WPA privacy ON deftxkey UNDEF txpower 50 bmiss 7
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7
        roam:rate11g 5 protmode CTS roaming MANUAL
Comment 2 Robert Jenssen 2008-02-03 09:20:33 UTC
To follow-up my previous message, I am seeing the following 
in /var/log/messages:

smbd[1503]:   read_data: read failure for 4 bytes to client 192.168.0.2. Error 
= Operation timed out

At the same time pinging 192.168.0.2 fails. After restarting /etc/rc.d/netif 
ping and samba appear to work again.

Rob Jenssen
Comment 3 epstein 2008-02-18 23:47:31 UTC
Hi,

I can confirm this bug running 7.0-RC2-p1 with a Conceptronic C54Ri =20
Revision 2.0 pci card. The card works fine with Windows XP and Linux. =20
Restarting the interface or rebooting the pc _never_ fixed the problem =20
over here. The manufacturer tells on his website (conceptronic.net) =20
which card version is using which chipset:

C54RC and C54Ri: Ralink RT2560F + RT2525L
C54RC and C54Ri Version 2.0: Ralink RT2501 Turbo Chipset =3D=3D Ralink =20
RT2561T +RT2527L
C54RC version 2.0 without ROHS logo: RT2560F + RT2525L
C54RC version 2.0 with ROHS logo: RT2561T +RT2527L

Pciconf output seems to be wrong...

Related to this problem you will find some postings on a couple of =20
boards and mailinglists, e.g.:
http://www.mail-archive.com/freebsd-stable@freebsd.org/msg91872.html
http://www.mail-archive.com/freebsd-stable@freebsd.org/msg91912.html

My details:

regenbogen# uname -a
FreeBSD regenbogen.local 7.0-RC2-p1 FreeBSD 7.0-RC2-p1 #0: Tue Feb 12 =20
22:23:33 UTC 2008
root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  i386

regenbogen# dmesg | grep ral0
ral0: <Ralink Technology RT2561> mem 0xe1000000-0xe1007fff irq 10 at =20
device 16.0 on pci0
ral0: MAC/BBP RT2561C, RF RT2527
ral0: Ethernet address: 00:80:5a:4d:55:3a
ral0: [ITHREAD]

regenbogen# pciconf -lv
[...]
ral0@pci0:0:16:0:       class=3D0x028000 card=3D0x3c241948 chip=3D0x03021814=
 =20
rev=3D0x00 hdr=3D0x00
     vendor     =3D 'Ralink Technology, Corp'
     device     =3D 'RT2525 2.4GHz transceiver + RT2560 MAC/BBP wireless a/b=
'
     class      =3D network
[...]

regenbogen# ifconfig ral0
ral0: flags=3D8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
         ether 00:80:5a:4d:55:3a
         media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
         status: no carrier
         ssid "" channel 1 (2412 Mhz 11b)
         authmode OPEN privacy OFF txpower 50 bmiss 7 scanvalid 60 bgscan
         bgscanintvl 300 bgscanidle 250 roam:rssi11b 7 roam:rate11b 1 bintva=
l 0

regenbogen# ifconfig ral0 up scan
interrupt storm detected on "irq10:"; throttling interrupt source
[...]
interrupt storm detected on "irq10:"; throttling interrupt source
^C

regenbogen# reboot
[...]

regenbogen# sysctl -a net.wlan.debug=3D-1
net.wlan.debug: 0 -> -1
regenbogen# sysctl -a net.wlan.0.debug=3D-1
net.wlan.0.debug: 0 -> -1
regenbogen# ifconfig ral0 up scan
ral0: ieee80211_newstate: INIT -> SCAN
ral0: ieee80211_check_scan: active scan, duration 2147483647, desired =20
mode auto, flush
ral0: ieee80211_start_scan: active scan, duration 2147483647, desired =20
mode auto, flush
ral0: scan set 1g, 6g, 11g, 7g, 13g, 2g, 3g, 4g, 5g, 8g, 9g, 10g, 12g, =20
14g dwell min 20 max 200
ral0: ieee80211_start_scan: active scan already in progress
ral0: scan_next: chan   1b ->   1g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 1
ral0: scan_next: chan   1g ->   6g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 6
ral0: scan_next: chan   6g ->  11g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 11
ral0: scan_next: chan  11g ->   7g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 7
ral0: scan_next: chan   7g ->  13g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 13
ral0: scan_next: chan  13g ->   2g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 2
ral0: scan_next: chan   2g ->   3g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 3
ral0: scan_next: chan   3g ->   4g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 4
ral0: scan_next: chan   4g ->   5g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 5
ral0: scan_next: chan   5g ->   8g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 8
ral0: scan_next: chan   8g ->   9g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 9
ral0: scan_next: chan   9g ->  10g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 10
ral0: scan_next: chan  10g ->  12g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 12
ral0: scan_next: chan  12g ->  14g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 14
interrupt storm detected on "irq10:"; throttling interrupt source
ral0: sta_pick_bss: no scan candidate
ral0: scan_next: done, restart [ticks 184533, dwell min 20 scanend 214766529=
8]
ral0: scan_next: chan  14g ->   1g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 1
ral0: scan_next: chan   1g ->   6g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 6
ral0: scan_next: chan   6g ->  11g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 11
ral0: scan_next: chan  11g ->   7g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 7
ral0: scan_next: chan   7g ->  13g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 13
ral0: scan_next: chan  13g ->   2g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 2
ral0: scan_next: chan   2g ->   3g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 3
ral0: scan_next: chan   3g ->   4g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 4
ral0: scan_next: chan   4g ->   5g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 5
ral0: scan_next: chan   5g ->   8g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 8
ral0: scan_next: chan   8g ->   9g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 9
ral0: scan_next: chan   9g ->  10g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 10
ral0: scan_next: chan  10g ->  12g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 12
ral0: scan_next: chan  12g ->  14g [active, dwell min 20 max 200]
ral0: ieee80211_ref_node (ieee80211_send_probereq:1461) =20
0xc2f30000<00:80:5a:4d:55:3a> refcnt 3
ral0: [ff:ff:ff:ff:ff:ff] send probe req on channel 14
interrupt storm detected on "irq10:"; throttling interrupt source
[...]



Yours

--
Ernst Peter Stein