login
Login
/
Register
Search
Search this site:
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2008
»
May
»
20
Re: [PATCH 10/15] rfkill: rework suspend and resume handlers
view
thread
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From: Ivo van Doorn
Subject:
Re: [PATCH 10/15] rfkill: rework suspend and resume handlers
Date: Tuesday, May 20, 2008 - 3:08 am
On Sunday 18 May 2008, Henrique de Moraes Holschuh wrote:
quoted text
> The resume handler should reset the wireless transmitter rfkill > state to exactly what it was when the system was suspended. Do it, > and do it using the normal routines for state change while at it. > > The suspend handler should force-switch the transmitter to blocked > state, ignoring caches. Do it. > > Also take an opportunity shot to rfkill_remove_switch() and also > force the transmitter to blocked state there, bypassing caches. > > Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
quoted text
> Cc: Ivo van Doorn <IvDoorn@gmail.com> > --- > net/rfkill/rfkill.c | 35 ++++++++++++++++++----------------- > 1 files changed, 18 insertions(+), 17 deletions(-) > > diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c > index c5a79ab..f11220b 100644 > --- a/net/rfkill/rfkill.c > +++ b/net/rfkill/rfkill.c > @@ -75,24 +75,25 @@ static void update_rfkill_state(struct rfkill *rfkill) > } > > static int rfkill_toggle_radio(struct rfkill *rfkill, > - enum rfkill_state state) > + enum rfkill_state state, > + int force) > { > int retval = 0; > enum rfkill_state oldstate, newstate; > > oldstate = rfkill->state; > > - if (rfkill->get_state && > + if (rfkill->get_state && !force && > !rfkill->get_state(rfkill->data, &newstate)) > rfkill->state = newstate; > > - if (state != rfkill->state) { > + if (force || state != rfkill->state) { > retval = rfkill->toggle_radio(rfkill->data, state); > if (!retval) > rfkill->state = state; > } > > - if (rfkill->state != oldstate) > + if (force || rfkill->state != oldstate) > rfkill_led_trigger(rfkill, rfkill->state); > > return retval; > @@ -107,7 +108,6 @@ static int rfkill_toggle_radio(struct rfkill *rfkill, > * a specific switch is claimed by userspace in which case it is > * left alone. > */ > - > void rfkill_switch_all(enum rfkill_type type, enum rfkill_state state) > { > struct rfkill *rfkill; > @@ -118,7 +118,7 @@ void rfkill_switch_all(enum rfkill_type type, enum rfkill_state state) > > list_for_each_entry(rfkill, &rfkill_list, node) { > if ((!rfkill->user_claim) && (rfkill->type == type)) > - rfkill_toggle_radio(rfkill, state); > + rfkill_toggle_radio(rfkill, state, 0); > } > > mutex_unlock(&rfkill_mutex); > @@ -210,7 +210,8 @@ static ssize_t rfkill_state_store(struct device *dev, > if (mutex_lock_interruptible(&rfkill->mutex)) > return -ERESTARTSYS; > error = rfkill_toggle_radio(rfkill, > - state ? RFKILL_STATE_ON : RFKILL_STATE_OFF); > + state ? RFKILL_STATE_ON : RFKILL_STATE_OFF, > + 0); > mutex_unlock(&rfkill->mutex); > > return error ? error : count; > @@ -251,7 +252,8 @@ static ssize_t rfkill_claim_store(struct device *dev, > if (rfkill->user_claim != claim) { > if (!claim) > rfkill_toggle_radio(rfkill, > - rfkill_states[rfkill->type]); > + rfkill_states[rfkill->type], > + 0); > rfkill->user_claim = claim; > } > > @@ -284,12 +286,11 @@ static int rfkill_suspend(struct device *dev, pm_message_t state) > > if (dev->power.power_state.event != state.event) { > if (state.event & PM_EVENT_SLEEP) { > - mutex_lock(&rfkill->mutex); > - > - if (rfkill->state == RFKILL_STATE_ON) > - rfkill->toggle_radio(rfkill->data, > - RFKILL_STATE_OFF); > + /* Stop transmitter, keep state, no notifies */ > + update_rfkill_state(rfkill); > > + mutex_lock(&rfkill->mutex); > + rfkill->toggle_radio(rfkill->data, RFKILL_STATE_OFF); > mutex_unlock(&rfkill->mutex); > } > > @@ -306,8 +307,8 @@ static int rfkill_resume(struct device *dev) > if (dev->power.power_state.event != PM_EVENT_ON) { > mutex_lock(&rfkill->mutex); > > - if (rfkill->state == RFKILL_STATE_ON) > - rfkill->toggle_radio(rfkill->data, RFKILL_STATE_ON); > + /* restore radio state AND notify everybody */ > + rfkill_toggle_radio(rfkill, rfkill->state, 1); > > mutex_unlock(&rfkill->mutex); > } > @@ -334,7 +335,7 @@ static int rfkill_add_switch(struct rfkill *rfkill) > > mutex_lock(&rfkill_mutex); > > - error = rfkill_toggle_radio(rfkill, rfkill_states[rfkill->type]); > + error = rfkill_toggle_radio(rfkill, rfkill_states[rfkill->type], 0); > if (!error) > list_add_tail(&rfkill->node, &rfkill_list); > > @@ -347,7 +348,7 @@ static void rfkill_remove_switch(struct rfkill *rfkill) > { > mutex_lock(&rfkill_mutex); > list_del_init(&rfkill->node); > - rfkill_toggle_radio(rfkill, RFKILL_STATE_OFF); > + rfkill_toggle_radio(rfkill, RFKILL_STATE_OFF, 1); > mutex_unlock(&rfkill_mutex); > } >
--
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[RFC] rfkill class rework
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 01/15] ACPI: thinkpad-acpi: fix initialization erro ...
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 02/15] ACPI: thinkpad-acpi: fix LED handling on old ...
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 03/15] Input: rename SW_RADIO to SW_RFKILL_ALL (v2)
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 04/15] rfkill: clarify meaning of rfkill states
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 05/15] rfkill: fix minor typo in kernel doc
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 06/15] rfkill: handle SW_RFKILL_ALL events
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 07/15] rfkill: add parameter to disable radios by d ...
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 08/15] rfkill: add read-write rfkill switch support
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 09/15] rfkill: add the WWAN radio type
, Henrique de Moraes H ...
, (Sun May 18, 11:47 am)
[PATCH 10/15] rfkill: rework suspend and resume handlers
, Henrique de Moraes H ...
, (Sun May 18, 11:48 am)
[PATCH 11/15] rfkill: add notifier chains support
, Henrique de Moraes H ...
, (Sun May 18, 11:48 am)
[PATCH 12/15] rfkill: add type string helper
, Henrique de Moraes H ...
, (Sun May 18, 11:48 am)
[PATCH 13/15] rfkill: add uevent notifications
, Henrique de Moraes H ...
, (Sun May 18, 11:48 am)
[PATCH 14/15] rfkill: do not allow userspace to override A ...
, Henrique de Moraes H ...
, (Sun May 18, 11:48 am)
[PATCH 15/15] rfkill: document rw rfkill switches and clar ...
, Henrique de Moraes H ...
, (Sun May 18, 11:48 am)
Re: [PATCH 11/15] rfkill: add notifier chains support
, Thomas Renninger
, (Mon May 19, 1:44 am)
Re: [PATCH 11/15] rfkill: add notifier chains support
, Henrique de Moraes H ...
, (Mon May 19, 6:10 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Randy Dunlap
, (Mon May 19, 10:51 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Henrique de Moraes H ...
, (Mon May 19, 3:04 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Elias Oltmanns
, (Mon May 19, 3:52 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Randy Dunlap
, (Mon May 19, 3:56 pm)
Re: [PATCH 04/15] rfkill: clarify meaning of rfkill states
, Ivo van Doorn
, (Tue May 20, 3:08 am)
Re: [PATCH 05/15] rfkill: fix minor typo in kernel doc
, Ivo van Doorn
, (Tue May 20, 3:08 am)
Re: [PATCH 06/15] rfkill: handle SW_RFKILL_ALL events
, Ivo van Doorn
, (Tue May 20, 3:08 am)
Re: [PATCH 08/15] rfkill: add read-write rfkill switch support
, Ivo van Doorn
, (Tue May 20, 3:08 am)
Re: [PATCH 09/15] rfkill: add the WWAN radio type
, Ivo van Doorn
, (Tue May 20, 3:08 am)
Re: [PATCH 10/15] rfkill: rework suspend and resume handlers
, Ivo van Doorn
, (Tue May 20, 3:08 am)
Re: [PATCH 11/15] rfkill: add notifier chains support
, Ivo van Doorn
, (Tue May 20, 3:09 am)
Re: [PATCH 12/15] rfkill: add type string helper
, Ivo van Doorn
, (Tue May 20, 3:09 am)
Re: [PATCH 13/15] rfkill: add uevent notifications
, Ivo van Doorn
, (Tue May 20, 3:09 am)
Re: [PATCH 14/15] rfkill: do not allow userspace to overri ...
, Ivo van Doorn
, (Tue May 20, 3:09 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Ivo van Doorn
, (Tue May 20, 3:09 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Henrique de Moraes H ...
, (Tue May 20, 8:54 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Ivo van Doorn
, (Tue May 20, 10:18 am)
Re: [PATCH 09/15] rfkill: add the WWAN radio type
, Henrique de Moraes H ...
, (Tue May 20, 6:12 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Henrique de Moraes H ...
, (Tue May 20, 6:44 pm)
Re: [PATCH 09/15] rfkill: add the WWAN radio type
, Inaky Perez-Gonzalez
, (Tue May 20, 8:35 pm)
Re: [PATCH 09/15] rfkill: add the WWAN radio type
, Henrique de Moraes H ...
, (Tue May 20, 8:42 pm)
Re: [PATCH 09/15] rfkill: add the WWAN radio type
, Inaky Perez-Gonzalez
, (Tue May 20, 11:48 pm)
Re: [PATCH 09/15] rfkill: add the WWAN radio type
, Henrique de Moraes H ...
, (Wed May 21, 7:07 am)
Re: [PATCH 14/15] rfkill: do not allow userspace to overri ...
, Henrique de Moraes H ...
, (Thu May 22, 1:51 pm)
Re: [PATCH 14/15] rfkill: do not allow userspace to overri ...
, Ivo van Doorn
, (Fri May 23, 7:15 am)
Re: [PATCH 14/15] rfkill: do not allow userspace to overri ...
, Henrique de Moraes H ...
, (Tue May 27, 7:08 am)
Re: [PATCH 14/15] rfkill: do not allow userspace to overri ...
, Ivo van Doorn
, (Tue May 27, 7:38 am)
Re: [PATCH 14/15] rfkill: do not allow userspace to overri ...
, Henrique de Moraes H ...
, (Tue May 27, 10:41 am)
Re: [PATCH 14/15] rfkill: do not allow userspace to overri ...
, Ivo van Doorn
, (Tue May 27, 11:13 am)
[PATCH 15/15] rfkill: document rw rfkill switches and clar ...
, Henrique de Moraes H ...
, (Wed May 28, 5:45 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Ivo van Doorn
, (Thu May 29, 6:02 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Henrique de Moraes H ...
, (Thu May 29, 9:26 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Ivo van Doorn
, (Thu May 29, 10:19 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Henrique de Moraes H ...
, (Thu May 29, 10:22 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Ivo van Doorn
, (Thu May 29, 10:40 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Henrique de Moraes H ...
, (Thu May 29, 10:46 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Dmitry Torokhov
, (Thu May 29, 11:58 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Henrique de Moraes H ...
, (Thu May 29, 2:16 pm)
[PATCH] Input: rename SW_RADIO to SW_RFKILL_ALL (v2)
, Henrique de Moraes H ...
, (Thu May 29, 2:25 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and ...
, Henrique de Moraes H ...
, (Tue Jun 3, 8:11 pm)
Navigation
Create content
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Alan Cox
Re: Please add ZFS support (from GPL sources)
Trenton D. Adams
Re: Flash IO slow 1.5 MB/s
Rafael J. Wysocki
[Bug #11287] Regression in 2.6.27-rc2 in acpi_processor_init()
Bart Van Assche
Re: Is gcc thread-unsafe?
Ingo Molnar
Re: [PATCH] x86: silence section mismatch warning - uv_cpu_init
dragonflybsd-commit
:
Simon 'corecode' Schubert
Re: cvs commit: src/bin/hostname hostname.1 src/bin/domainname domainname....
Sepherosa Ziehau
cvs commit: src/sys/dev/netif/ral rt2560.c
Sepherosa Ziehau
cvs commit: src/sys/dev/netif/ural if_ural.c if_uralreg.h
Chris Pressey
Re: cvs commit: src/lib/libutil _secure_path.c auth.c fparseln.c humanize_number.c...
Joerg Sonnenberger
Re: cvs commit: src/sys/kern vfs_syscalls.c
git
:
Mark Junker
git on MacOSX and files with decomposed utf-8 file names
Junio C Hamano
Re: git-svnimport
Mark Burton
Re: Sporadic BSOD with msys git?
Junio C Hamano
Re: [PATCH] Detached HEAD (experimental)
Johannes Schindelin
Re: [PATCH] Fix approxidate("never") to always return 0
linux-ath5k-devel
:
Bruno Randolf
[ath5k-devel] [PATCH] ath5k: treat RXORN as non-fatal
Jiri Moravec
[ath5k-devel] can't add ath5k into bridge on kernel >=2.6.33
Lukáš Turek
Re: [ath5k-devel] Atheros HW/cfg80211 ignore nonUS regdom with "EEPROM regdomain: ...
Bob Copeland
Re: [ath5k-devel] [PATCH] ath5k: fix detection of jumbo frames
Bob Copeland
Re: [ath5k-devel] Transfers stall with ath5k on compat-wireless drivers
openbsd-source-changes
:
Marc Espie
CVS: cvs.openbsd.org: src
David Gwynne
CVS: cvs.openbsd.org: src
Theo de Raadt
CVS: cvs.openbsd.org: www
Igor Sobrado
CVS: cvs.openbsd.org: src
Brad Smith
CVS: cvs.openbsd.org: src
Colocation donated by:
Syndicate