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>