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