>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:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"