From nobody@FreeBSD.org  Tue Jan 15 19:26:44 2008
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D41BE16A421
	for <freebsd-gnats-submit@FreeBSD.org>; Tue, 15 Jan 2008 19:26:44 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id CFA1113C458
	for <freebsd-gnats-submit@FreeBSD.org>; Tue, 15 Jan 2008 19:26:44 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.2/8.14.2) with ESMTP id m0FJPRmx039847
	for <freebsd-gnats-submit@FreeBSD.org>; Tue, 15 Jan 2008 19:25:27 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.2/8.14.1/Submit) id m0FJPRZM039846;
	Tue, 15 Jan 2008 19:25:27 GMT
	(envelope-from nobody)
Message-Id: <200801151925.m0FJPRZM039846@www.freebsd.org>
Date: Tue, 15 Jan 2008 19:25:27 GMT
From: Sven Berkvens-Matthijsse <sven@berkvens.net>
To: freebsd-gnats-submit@FreeBSD.org
Subject: ral device causes massive interrupt storm sometimes
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         119696
>Category:       kern
>Synopsis:       [irq] [ral] ral device causes massive interrupt storm sometimes
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jan 15 19:30:01 UTC 2008
>Closed-Date:    
>Last-Modified:  Tue Feb 19 00:00:07 UTC 2008
>Originator:     Sven Berkvens-Matthijsse
>Release:        FreeBSD 7.0-PRERELEASE #5: Thu Jan 10 18:27:04 CET 2008 amd64
>Organization:
De Kattenfabriek
>Environment:
FreeBSD paws.berkvens.net 7.0-PRERELEASE FreeBSD 7.0-PRERELEASE #5: Thu Jan 10 18:27:04 CET 2008     sven@paws.berkvens.net:/usr/obj/usr/src/sys/PAWS  amd64

>Description:
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.
>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.
>Fix:
I'm not sure what the problem is, let alone a solution.

>Release-Note:
>Audit-Trail:

From: Robert Jenssen <robertjenssen@ozemail.com.au>
To: bug-followup@freebsd.org
Cc:  
Subject: Re:kern/119696: [irq] [ral] ral device causes massive interrupt storm sometimes
Date: Tue, 29 Jan 2008 09:54:06 +1100

 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

From: Robert Jenssen <robertjenssen@ozemail.com.au>
To: bug-followup@freebsd.org
Cc:  
Subject: Re:kern/119696: [irq] [ral] ral device causes massive interrupt storm sometimes
Date: Sun, 3 Feb 2008 20:20:33 +1100

 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

From: Ernst Peter Stein <epstein@pochta.ru>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/119696: [irq] [ral] ral device causes massive interrupt
	storm sometimes
Date: Tue, 19 Feb 2008 02:47:31 +0300

 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
 
 
 
>Unformatted:
