NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/41119: wpi(4) error messages on suspend



>Number:         41119
>Category:       kern
>Synopsis:       wpi(4) error messages on suspend
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Apr 01 16:30:00 +0000 2009
>Originator:     Jukka Ruohonen
>Release:        5.99.8
>Organization:
-
>Environment:
System: NetBSD camus.bitnet 5.99.9 NetBSD 5.99.9 (GENERIC_DEBUG) #1: Wed Apr 1
19:05:48 EEST 2009 
jruoho%camus.bitnet@localhost:/var/tmp/obj/sys/arch/amd64/compile/GENERIC_DEBUG 
amd64
Architecture: x86_64
Machine: amd64

>Description:

When suspending a laptop with running wpi(4), the console is filled with:

acpi0: entering state 3
Flushing disk caches: 1 done
wpi0: could not lock memory
wpi0: could not lock memory
wpi0: could not lock memory
wpi0: could not lock memory
wpi0: could not lock memory
wpi0: could not lock memory
wpi0: could not lock memory
wpi0: could not lock memory
wpi0: could not lock memory
wpi0: could not lock memory
wpi0: could not lock memory

... and so on (about thirty of those). While these appear to do no harm,
perhaps this could be handled more discreetly.

>How-To-Repeat:

        Suspend a laptop with Intel PRO/Wireless 3945ABG that is running,
        associated and using wpa_supplicant(8). 

>Fix:

One solution could be to stop the interface before suspending. This seemed
to work for me.


--- if_wpi.c.~1.41.~    2008-11-12 20:23:08.000000000 +0200
+++ if_wpi.c    2009-04-01 19:05:10.000000000 +0300
@@ -171,6 +171,7 @@
 static void wpi_hw_config(struct wpi_softc *);
 static int  wpi_init(struct ifnet *);
 static void wpi_stop(struct ifnet *, int);
+static bool wpi_suspend(device_t PMF_FN_PROTO);
 static bool wpi_resume(device_t PMF_FN_PROTO);
 static int     wpi_getrfkill(struct wpi_softc *);
 static void wpi_sysctlattach(struct wpi_softc *);
@@ -360,7 +361,7 @@
 
        wpi_sysctlattach(sc);
 
-       if (!pmf_device_register(self, NULL, wpi_resume))
+       if (!pmf_device_register(self, wpi_suspend, wpi_resume))
                aprint_error_dev(self, "couldn't establish power handler\n");
        else
                pmf_class_network_register(self, ifp);
@@ -3203,6 +3204,16 @@
 }
 
 static bool
+wpi_suspend(device_t dv PMF_FN_ARGS)
+{
+       struct wpi_softc *sc = device_private(dv);
+
+       wpi_stop(sc->sc_ic.ic_ifp, 1);
+
+       return true;
+}
+
+static bool
 wpi_resume(device_t dv PMF_FN_ARGS)
 {
        struct wpi_softc *sc = device_private(dv);



Home | Main Index | Thread Index | Old Index