>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]"

Reply via email to