rfkill: preserve state across suspend
authorHenrique de Moraes Holschuh <hmh@hmh.eng.br>
Fri, 21 Nov 2008 22:40:09 +0000 (20:40 -0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 26 Nov 2008 14:47:43 +0000 (09:47 -0500)
commitf80b5e99c7dac5a9a0d72496cec5075a12cd1476
tree493b11de9639655fbf2a9431f9def759ab3f6a27
parent5925d976fbe99859d636e7075e5304625503c5fe
rfkill: preserve state across suspend

The rfkill class API requires that the driver connected to a class
call rfkill_force_state() on resume to update the real state of the
rfkill controller, OR that it provides a get_state() hook.

This means there is potentially a hidden call in the resume code flow
that changes rfkill->state (i.e. rfkill_force_state()), so the
previous state of the transmitter was being lost.

The simplest and most future-proof way to fix this is to explicitly
store the pre-sleep state on the rfkill structure, and restore from
that on resume.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
include/linux/rfkill.h
net/rfkill/rfkill.c