Hello, I'm working on the sony-laptop driver and I've seen that recent VAIO notebooks permanently store the radio device state inside the Embedded Controller, so I've added the code to make the rfkill state persistent (using the rfkill_init_sw_state function) and everything works fine. Then I decided to forward to the input core the physical rfkill switch state change (that powers on/off every interface and hard blocks/unbloks them), using the SW_RFKILL_ALL switch event declared in input.h, to allow userspace to know about the change. However rfkill-input started interfering, so I tried passing every value to the master_switch_mode module parameter, without success. In particular: - when using 0, putting the switch back to on won't make the devices state restored (as it should, but people will not likely want this); - when using 1, the state is preserved when moving the switch, but every interface will be on at boot, vanishing the hardware device state storing. - when using 2, every interface will be powered on, as it should. None of the previous settings allows the user to power on only the needed interface using the hardware capability. Moreover I've seen this Documentation/feature-removal-schedule.txt: What: CONFIG_RFKILL_INPUT When: 2.6.33 Why: Should be implemented in userspace, policy daemon. Who: Johannes Berg <johannes@sipsolutions.net> which is the right thing to do, but rfkill-input is still there in 2.6.39! I think it should be removed immediately. Currently I solved undefining CONFIG_RFKILL_INPUT inside core.c and everything is working fine.
Please handle issues like this by email. be sure to cc the relevant developers and the appropriate development mailing lists. Thanks.
Ok, I'm in touch with the maintainer now on the netdev mainling list, we can close this bug (that will be solved at some point in the future when the userspace tools are widely shipped by the distributions). Thank you for your time.