kern/181694: Initialize hardware in iwn(4) resume code

Brandon Gooch jamesbrandongooch at gmail.com
Sat Aug 31 00:50:01 UTC 2013


>Number:         181694
>Category:       kern
>Synopsis:       Initialize hardware in iwn(4) resume code
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Aug 31 00:50:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Brandon Gooch
>Release:        10-CURRENT
>Organization:
>Environment:
FreeBSD m6500.m6500 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r254635M: Thu Aug 22 04:25:59 CDT 2013     root@:/usr/obj/usr/home/brandon/wc/freebsd-base-head/sys/DELL_M6500  amd64
>Description:
When resuming from sleep, the iwn(4) doesn't properly restore the hardware to a fully working state.
>How-To-Repeat:
On a computer with a mechanical "RF Kill" switch (which disables the wireless device radio), enter ACPI S3 (sleep) state with the switch in the "off" position. Then, before resuming, move the switch to the "on" position. Finally, resume the computer from sleep, and realize that the device is not enabled, nor does toggling the switch effect the state.

The only "total" fix for this seems to be kldunloading the iwn(4) module, then reloading it with the switch in the "on" position.
>Fix:
Call the iwn_init() function from iwn_resume(), re-initializing the hardware to a good, working state after resume.

Patch attached with submission follows:

Index: if_iwn.c
===================================================================
--- if_iwn.c	(revision 254635)
+++ if_iwn.c	(working copy)
@@ -1030,6 +1030,10 @@
 	/* Clear device-specific "PCI retry timeout" register (41h). */
 	pci_write_config(dev, 0x41, 0, 1);
 
+	/* Initialize the hardware */
+	if (sc->sc_ifp->if_flags & IFF_UP) {
+		iwn_init(sc);
+	}
 	ieee80211_resume_all(ic);
 	return 0;
 }


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list