rfkill: always init poll delayed work
authorJohannes Berg <johannes@sipsolutions.net>
Wed, 3 Jun 2009 07:55:29 +0000 (09:55 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 3 Jun 2009 18:06:15 +0000 (14:06 -0400)
The rfkill core didn't initialise the poll delayed work
because it assumed that polling was always done by specifying
the poll function. cfg80211, however, would like to start
polling only later, which is a valid use case and easy to
support, so change rfkill to always initialise the poll
delayed work and thus allow starting polling by calling the
rfkill_resume_polling() function after registration.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/rfkill/core.c

index 91e9168b5447389d197fb71020181996a8c05579..11b7314723dfa9f66e32f1b90881b16eff8dff12 100644 (file)
@@ -909,16 +909,15 @@ int __must_check rfkill_register(struct rfkill *rfkill)
 
        rfkill->registered = true;
 
-       if (rfkill->ops->poll) {
-               INIT_DELAYED_WORK(&rfkill->poll_work, rfkill_poll);
-               schedule_delayed_work(&rfkill->poll_work,
-                       round_jiffies_relative(POLL_INTERVAL));
-       }
-
+       INIT_DELAYED_WORK(&rfkill->poll_work, rfkill_poll);
        INIT_WORK(&rfkill->uevent_work, rfkill_uevent_work);
-
        INIT_WORK(&rfkill->sync_work, rfkill_sync_work);
+
+       if (rfkill->ops->poll)
+               schedule_delayed_work(&rfkill->poll_work,
+                       round_jiffies_relative(POLL_INTERVAL));
        schedule_work(&rfkill->sync_work);
+
        rfkill_send_events(rfkill, RFKILL_OP_ADD);
 
        mutex_unlock(&rfkill_global_mutex);