Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Jan 2004 15:11:04 +0100
From:      Marko Zec <zec@tel.fer.hr>
To:        Lorenzo Vicisano <lorenzo@vicisano.net>, freebsd-mobile@freebsd.org
Cc:        freebsd-net@freebsd.org
Subject:   Re: prism 2.5 timeout in wi_cmd 0x010b
Message-ID:  <200401101511.04672.zec@tel.fer.hr>
In-Reply-To: <20040109184349.A12711@cisco.com>
References:  <20040109184349.A12711@cisco.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--Boundary-00=_4fAAAunGWPP68/U
Content-Type: text/plain;
  charset="iso-8859-2"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Lorenzo,

can you try the attached patch, it does seem to help on my ThinkPad X30, 
which has an internal mini-PCI Prism2.5 card with the same firmware.

Cheers,

Marko


On Saturday 10 January 2004 03:43, Lorenzo Vicisano wrote:
> Hi,
>
> This is the context:
>
>  - Stable as of Jan 9 (FreeBSD 4.9-STABLE #14: Fri Jan  9 15:04:16
> PST 2004) The problem was present since Dec 22.. at least.
>
>  - Linksys PCI WMP11/Prism:
>
> wi0: <Intersil Prism2.5> mem 0xf8a02000-0xf8a02fff irq 5 at device
> 11.0 on pci2 wi0: 802.11 address: 00:06:25:09:a7:8f
> wi0: using RF:PRISM2.5 MAC:ISL3874A(Mini-PCI)
> wi0: Intersil Firmware: Primary 1.01.00, Station 1.04.02
>
>  acting as a client. The AP is a DLink 614+ (I've tried various
>  versions of the firmware).
>
>  - High volume of transmitted traffic (ftp-ed a few MBs within the
>    WLAN). Either towards the AP or towards other clients (E.g.
> AN350).
>
> And this is the symptom:
>
> wi0: timeout in wi_cmd 0x010b; event status 0x0000
> wi0: xmit failed
>
> after this the NIC is dead.
> Sometimes the box freezes for a few seconds, sometimes it doesn't.
> Most of the times the NIC doesn't resume unless it brought up/down
> (ifconfig down/up).
>
> More messages (after the NIC stops working):
>
> wi0: watchdog timeout
> wi0: timeout in wi_cmd 0x0002; event status 0x0000
> wi0: wi_cmd: busy bit won't clear.
> wi0: wi_cmd: busy bit won't clear.
> wi0: wi_cmd: busy bit won't clear.
> wi0: init failed
> wi0: watchdog timeout
>
> Complete log attached. I'm able to reproduce this consistently ;(
> I can do some debugging and provide more info, if needed.
>
> 	thanks,
> 	Lorenzo

--Boundary-00=_4fAAAunGWPP68/U
Content-Type: text/x-diff;
  charset="iso-8859-2";
  name="wi.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="wi.diff"

--- if_wi.c.orig	Wed Jan  7 15:55:18 2004
+++ if_wi.c	Wed Jan  7 16:38:37 2004
@@ -1016,9 +1016,11 @@ wi_cmd(sc, cmd, val0, val1, val2)
 		 * set in the event status register.
 		 */
 		s = CSR_READ_2(sc, WI_EVENT_STAT);
+		DELAY(1);
 		if (s & WI_EV_CMD) {
 			/* Ack the event and read result code. */
 			s = CSR_READ_2(sc, WI_STATUS);
+			DELAY(1);
 			CSR_WRITE_2(sc, WI_EVENT_ACK, WI_EV_CMD);
 #ifdef foo
 			if ((s & WI_CMD_CODE_MASK) != (cmd & WI_CMD_CODE_MASK))

--Boundary-00=_4fAAAunGWPP68/U--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200401101511.04672.zec>