Subject: kern/36040: iwi: problem with firmware load
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <a-burghardt@gmx.de>
List: netbsd-bugs
Date: 03/19/2007 14:25:01
>Number:         36040
>Category:       kern
>Synopsis:       iwi: problem with firmware load
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Mar 19 14:25:01 +0000 2007
>Originator:     Andreas Burghardt
>Release:        NetBSD 4.0_BETA2
>Organization:
---
>Environment:
NetBSD bebek 4.0_BETA2 NetBSD 4.0_BETA2 (GENERIC_LAPTOP) #0: Sun Mar 18 21:02:03 CET 2007  teliti@bebek:/usr/obj/obj/sys/arch/i386/compile/GENERIC_LAPTOP i386
>Description:
When loading the firmware for iwi (almost allways) it cannot be loaded:

#ifconfig iwi0 up
firmware version = 196608
iwi0: timeout processing cb
iwi0: could not load main firmware
iwi0: timeout processing cb
iwi0: could not load main firmware

This procedure has to be repeated several times until the firmware is loaded. After the connection broke down (normally) this procedure has to be repeated again ... and again ...
>How-To-Repeat:
Using a Benq Joybook 5200G:

iwi0 at pci2 dev 4 function 0: Intel PRO/Wireless LAN 2200BG Mini-PCI Adapter (rev. 0x05)
iwi0: interrupting at irq 11
iwi0: 802.11 address 00:15:00:20:6e:4d
iwi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
iwi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps

# ifconfig iwi0 up (with an already installed firmware!)
>Fix:
Since I'm no programmer and I only can read C I searched the file src/sys/dev/pci/if_iwi.c and changed two values:
line 2208: 400 --> 450
line 2213: 400 --> 450

After this little modification the iwi firmware is loading (almost everytime) without any problem, but (sometimes) it happens that:

iwi0: timeout waiting for firmware initialization to complete
iwi0: could not load main firmware
iwi0: device configuration failed

when the firmware has to be loaded again