On Monday 03 November 2008, Henrique de Moraes Holschuh wrote: > We "optimize" away the get_state() hook call on rfkill_toggle_radio > when doing a forced state change. This means the resume path is not > calling get_state() as it should. > > Call it manually on the resume handler, as we don't want to mess with > the EPO path by removing the optimization. This has the added benefit > of making it explicit that rfkill->state could have been modified > before we hit the rfkill_toggle_radio() call in the class resume > handler. > > Signed-off-by: Henrique de Moraes Holschuh <hmh@xxxxxxxxxx> > Cc: Ivo van Doorn <IvDoorn@xxxxxxxxx> > Cc: Matthew Garrett <mjg59@xxxxxxxxxxxxx> > Cc: Alan Jenkins <alan-jenkins@xxxxxxxxxxxxxx> Acked-by: Ivo van Doorn <IvDoorn@xxxxxxxxx> > --- > net/rfkill/rfkill.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c > index caee717..7a82a35 100644 > --- a/net/rfkill/rfkill.c > +++ b/net/rfkill/rfkill.c > @@ -526,6 +526,7 @@ static int rfkill_suspend(struct device *dev, pm_message_t state) > static int rfkill_resume(struct device *dev) > { > struct rfkill *rfkill = to_rfkill(dev); > + enum rfkill_state newstate; > > if (dev->power.power_state.event != PM_EVENT_ON) { > mutex_lock(&rfkill->mutex); > @@ -533,6 +534,9 @@ static int rfkill_resume(struct device *dev) > dev->power.power_state.event = PM_EVENT_ON; > > /* restore radio state AND notify everybody */ > + if (rfkill->get_state && > + !rfkill->get_state(rfkill->data, &newstate)) > + rfkill->state = newstate; > rfkill_toggle_radio(rfkill, rfkill->state_for_resume, 1); > > mutex_unlock(&rfkill->mutex); -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html