rt2x00dev->rfkill->name = rt2x00dev->ops->name;
        rt2x00dev->rfkill->data = rt2x00dev;
-       rt2x00dev->rfkill->state = -1;
        rt2x00dev->rfkill->toggle_radio = rt2x00rfkill_toggle_radio;
-       if (test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags))
+       if (test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) {
                rt2x00dev->rfkill->get_state = rt2x00rfkill_get_state;
+               rt2x00dev->rfkill->state =
+                       rt2x00dev->ops->lib->rfkill_poll(rt2x00dev) ?
+                           RFKILL_STATE_SOFT_BLOCKED : RFKILL_STATE_UNBLOCKED;
+       } else {
+               rt2x00dev->rfkill->state = RFKILL_STATE_UNBLOCKED;
+       }
 
        INIT_DELAYED_WORK(&rt2x00dev->rfkill_work, rt2x00rfkill_poll);