From nobody@FreeBSD.org  Thu Oct  3 04:22:08 2002
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 57CDD37B401
	for <freebsd-gnats-submit@FreeBSD.org>; Thu,  3 Oct 2002 04:22:08 -0700 (PDT)
Received: from www.freebsd.org (www.freebsd.org [216.136.204.117])
	by mx1.FreeBSD.org (Postfix) with ESMTP id DABA643E3B
	for <freebsd-gnats-submit@FreeBSD.org>; Thu,  3 Oct 2002 04:22:07 -0700 (PDT)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.12.6/8.12.6) with ESMTP id g93BM77R069951
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 3 Oct 2002 04:22:07 -0700 (PDT)
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.12.6/8.12.6/Submit) id g93BM7sb069950;
	Thu, 3 Oct 2002 04:22:07 -0700 (PDT)
Message-Id: <200210031122.g93BM7sb069950@www.freebsd.org>
Date: Thu, 3 Oct 2002 04:22:07 -0700 (PDT)
From: Dirk-Willem van Gulik <dirkx@webweaving.org>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Wi(4) driver hangs after long data transfers
X-Send-Pr-Version: www-1.0

>Number:         43625
>Category:       kern
>Synopsis:       [wi] wi(4) driver hangs after long data transfers
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    imp
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Oct 03 04:30:04 PDT 2002
>Closed-Date:    Fri May 13 14:07:45 MDT 2011
>Last-Modified:  Fri May 13 14:07:45 MDT 2011
>Originator:     Dirk-Willem van Gulik
>Release:        4.6.2, RELENG_4
>Organization:
WebWeaving
>Environment:
FreeBSD cnodecope.wleiden.net 4.7-RC FreeBSD 4.7-RC #3: Fri Sep 27 15:26:28 CEST 2002     root@cnodecope.wleiden.net:/usr/src/sys/compile/COPE
as well as stock 4.6.2
>Description:
On a machine with 2 or 3 wi(4) cards:

wi0: <Intersil Prism2.5> mem 0xfedfa000-0xfedfafff irq 9 at device 17.0 on pci0
wi0: 802.11 address: 00:06:25:a7:a8:82
wi0: using RF:PRISM2.5 MAC:ISL3874A(Mini-PCI)
wi0: Intersil Firmware: Primary 1.00.05, Station 1.03.04
wi1: <Intersil Prism2.5> mem 0xfedf9000-0xfedf9fff irq 10 at device 18.0 on pci0
wi1: 802.11 address: 00:06:25:a7:a8:ba
wi1: using RF:PRISM2.5 MAC:ISL3874A(Mini-PCI)
wi1: Intersil Firmware: Primary 1.00.05, Station 1.03.04
wi2: <Intersil Prism2.5> mem 0xfedf8000-0xfedf8fff irq 11 at device 19.0 on pci0
wi2: 802.11 address: 00:06:25:a7:a7:2a
wi2: using RF:PRISM2.5 MAC:ISL3874A(Mini-PCI)
wi2: Intersil Firmware: Primary 1.00.05, Station 1.03.04

When transfering a big file using TCP in hostap mode to an identical machine (either direction) then one, or both machines, will at some point start emitting the errors listed below; and the TCP stack on all ports, including wired, will freeze for 10-500 second periods. A reboot is the only reliable fix - though there are indications that long periods of no traffic allow the situation to subside.

Host addresses are allocated using DHCP (i.e. there is a BPF filter in the channel).

The fetch is a simple 'fetch http://otherbox/big.file; where the latter is a 10 to 100 Gbyte file of all zero's.

The errors seen are as below. Note that the 'wi_seek' is also seen under other circumstances and may, or may not, have to do anything with it. 
      
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc00/0; last status fc00
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc81/0; last status fc81
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc83/0; last status fc83
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc84/0; last status fc84
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc06/0; last status fc06
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc09/0; last status fc09
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc0c/0; last status fc0c
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc2d/0; last status fc2d
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc04/0; last status fc04
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc02/0; last status fc02
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc03/0; last status fc03
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc0e/0; last status fc0e
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc2a/0; last status fc2a
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc01/0; last status fc01
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc85/0; last status fc85
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc28/0; last status fc28
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc23/0; last status fc23
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc24/0; last status fc24
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to fc80/0; last status fc80
Sep 28 16:00:55 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:00:55 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:00:55 cnodecope /kernel: wi2: failed to allocate 1594 bytes on NIC
Sep 28 16:00:55 cnodecope /kernel: wi2: tx buffer allocation failed
Sep 28 16:00:55 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:00:55 cnodecope /kernel: wi2: failed to allocate 1594 bytes on NIC
Sep 28 16:00:55 cnodecope /kernel: wi2: mgmt. buffer allocation failed
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to 0/0; last status 8000
Sep 28 16:00:55 cnodecope /kernel: wi2: timeout in wi_seek to 0/44; last status 8000
Sep 28 16:00:55 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:00:55 cnodecope /kernel: wi2: xmit failed
Sep 28 16:01:53 cnodecope /kernel: wi2: watchdog timeout
Sep 28 16:01:53 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:01:53 cnodecope last message repeated 3 times
Sep 28 16:01:53 cnodecope /kernel: wi2: init failed
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc07/0; last status fc07
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc00/0; last status fc00
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc81/0; last status fc81
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc83/0; last status fc83
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc84/0; last status fc84
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc06/0; last status fc06
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc09/0; last status fc09
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc0c/0; last status fc0c
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc2d/0; last status fc2d
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc04/0; last status fc04
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc02/0; last status fc02
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc03/0; last status fc03
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc0e/0; last status fc0e
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc2a/0; last status fc2a
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc01/0; last status fc01
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc85/0; last status fc85
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc28/0; last status fc28
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc23/0; last status fc23
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc24/0; last status fc24
Sep 28 16:01:53 cnodecope /kernel: wi2: timeout in wi_seek to fc80/0; last status fc80
Sep 28 16:01:53 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:01:53 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:01:53 cnodecope /kernel: wi2: failed to allocate 1594 bytes on NIC
Sep 28 16:01:53 cnodecope /kernel: wi2: tx buffer allocation failed
Sep 28 16:01:53 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:01:54 cnodecope /kernel: wi2: failed to allocate 1594 bytes on NIC
Sep 28 16:01:54 cnodecope /kernel: wi2: mgmt. buffer allocation failed
Sep 28 16:02:58 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:03:29 cnodecope /kernel: wi2: timeout in wi_seek to 0/0; last status 8000
Sep 28 16:03:29 cnodecope /kernel: wi2: timeout in wi_seek to 0/44; last status 8000
Sep 28 16:03:29 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:03:29 cnodecope /kernel: wi2: xmit failed
Sep 28 16:04:27 cnodecope /kernel: wi2: watchdog timeout
Sep 28 16:04:27 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:04:27 cnodecope last message repeated 3 times
Sep 28 16:04:27 cnodecope /kernel: wi2: init failed
Sep 28 16:04:27 cnodecope /kernel: wi2: timeout in wi_seek to fc07/0; last status fc07
Sep 28 16:04:27 cnodecope /kernel: wi2: timeout in wi_seek to fc00/0; last status fc00
Sep 28 16:04:27 cnodecope /kernel: wi2: timeout in wi_seek to fc81/0; last status fc81
Sep 28 16:04:27 cnodecope /kernel: wi2: timeout in wi_seek to fc83/0; last status fc83
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc84/0; last status fc84
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc06/0; last status fc06
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc09/0; last status fc09
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc0c/0; last status fc0c
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc2d/0; last status fc2d
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc04/0; last status fc04
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc02/0; last status fc02
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc03/0; last status fc03
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc0e/0; last status fc0e
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc2a/0; last status fc2a
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc01/0; last status fc01
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc85/0; last status fc85
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc28/0; last status fc28
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc23/0; last status fc23
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc24/0; last status fc24
Sep 28 16:04:28 cnodecope /kernel: wi2: timeout in wi_seek to fc80/0; last status fc80
Sep 28 16:04:28 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:04:28 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:04:28 cnodecope /kernel: wi2: failed to allocate 1594 bytes on NIC
Sep 28 16:04:28 cnodecope /kernel: wi2: tx buffer allocation failed
Sep 28 16:04:28 cnodecope /kernel: wi2: wi_cmd: busy bit won't clear.
Sep 28 16:04:28 cnodecope /kernel: wi2: failed to allocate 1594 bytes on NIC
Sep 28 16:04:28 cnodecope /kernel: wi2: mgmt. buffer allocation failed
Sep 28 16:04:28 cnodecope /kernel: wi1: timeout in wi_cmd 0x010b; event status 0x8000
Sep 28 16:04:28 cnodecope /kernel: wi1: xmit failed
>How-To-Repeat:
Set up to 4.6.2 machines; configure one in hostap; let the other associate (dhcp was used). Install apache. Create a file on one machine and fetch it from the other.
>Fix:
Unknown. Linux RH8 and older versions with wlan-ng will do a 'hard hang' in this situation wihtout any output.
>Release-Note:
>Audit-Trail:

From: Dirk-Willem van Gulik <dirkx@webweaving.org>
To: freebsd-gnats-submit@FreeBSD.org
Cc:  
Subject: kern/43625: Wi(4) driver hanfs after long data transfers
Date: Fri, 18 Oct 2002 12:06:22 +0200 (CEST)

 After observing a linux system with a pre 2002-09-12 driver; it was
 noticed that the fix related to:
 
 	http://hostap.epitest.fi/cgi-bin/viewcvs.cgi/*checkout*/hostap/ChangeLog?rev=HEAD&content-type=text/plain
 
 	* fixed a bug in AP management queue handling (noticed by
  	  Tiebing Zhang)
 	  - if AP management frame queue had more than one item, only the last
  	    one was processed; other items were dropped with memory leak
 
 seems to change the behaviour significantly. There may be an equivalent in
 the FreeBSD code.
 
 Dw
 
Responsible-Changed-From-To: freebsd-bugs->imp 
Responsible-Changed-By: kris 
Responsible-Changed-When: Sun Jul 13 02:35:40 PDT 2003 
Responsible-Changed-Why:  
Assign to wi maintainer 

http://www.freebsd.org/cgi/query-pr.cgi?pr=43625 
State-Changed-From-To: open->closed 
State-Changed-By: imp 
State-Changed-When: Fri May 13 14:07:11 MDT 2011 
State-Changed-Why:  
Hangs like this are firmware based.  This is too old also.  Newer 
firmware might fix. 


http://www.freebsd.org/cgi/query-pr.cgi?pr=43625 
>Unformatted:
