On Friday 26 September 2008, Johannes Berg wrote: > On Fri, 2008-09-26 at 01:05 +0300, Tomas Winkler wrote: > > > > I am not sure if registring a notifier would be the best solution, > > > persionally I was thinking of implementing the rfkill structure into ieee80211_local > > > and make it listen to events directly. > > I think I like this better. > > > That's definitely other option we wanted to suggest that mac80211 > > would register itself to rfkill subsystem and will provide to driver > > appropriate callbacks. The question is how drivers vary in the rfkil > > implementation and whether it wouldn't be more complex, in that case > > the notification is quite clean solution. > > How complex does it have to be? Not really, probably it only needs to be a wrapper around rfkill_force_state where we can use the RFKILL_ defines to indicate the BLOCKED status. > > > That means that the only change needed in ieee80211_ioctl_siwtxpower() is > > > only allowing the enabling of the radio when RFKILL is not set to BLOCKED. > > > > That's just complicates everything and moving the policy decisions to > > the driver after all even > > form txpower off you implement it as soft rfkill. Why does it complicate things? It means that mac80211 doesn't use rfkill_force_state() when the user triggers a radio state change using iw/iwconfig/ifconfig or whatever userspace tool. mac80211 doesn't generate rfkill events because it isn't tied to any device keys/buttons/sliders. That is what the drivers do. And they should only listen to that key/button/slider. > > I would suggest just remove the support for txpower off in mac80211 > > now when appropriate or sync it with soft block after all it coming > > from user space as a software event. > > I think what we should do is in mac80211 simply synthesize the > "radio_enabled" state that the config callback has from both rfkill and > txpower off. Anything wrong with that? Come to think of it, there is a bug in the previous patch since it doesn't handle the case when the interface is brought up during a BLOCKED state. So all that has to be done is: * rfkill BLOCK event received in mac80211 * set flag to indicate the BLOCKED state * disable radio * prevent radio being enabled through ifup * prevent radio being enabled through iwconfig txpower on * rfkill UNBLOCK event received from mac80211 * clear flag to indicate UNBLOCKED state * restore radio to the by iwconfig/ifup configured state Ivo -- 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