gsupplicant: Add a new state according to 'interface_disabled'
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Wed, 10 Oct 2012 08:18:45 +0000 (11:18 +0300)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Tue, 16 Oct 2012 10:18:02 +0000 (13:18 +0300)
commit583b1a120a8b5b11654c389144d9f7f96c4cfe35
treef47f61249fdb58d290f71e4e99f933093661634f
parentc270ca4eeaefc43ec471ba0b5383b50f4d34c0b7
gsupplicant: Add a new state according to 'interface_disabled'

When soft rfkill is on, wpa_supplicant sets the interface disabled and
sends a state named 'interface_disabled'. Taking this information into
account fixes the following issue:
- disable wifi (user setting) and hard rfkill it
- then un-hard rfkill it, whereafter rfkill states (soft/hard) will go
  like this:
    * from 1/1 to 0/0
    * from 0/0 to 1/0
    when 0/0 occurs, connman will request to enable wifi

The problem with this is that enabling wifi takes quite some time and
in between ConnMan will soft block wifi to disable it (according to
previous user setting). Thus it will request to disable wifi but since
enabling is still going on, this request won't do anything. Meanwhile
wpa_supplicant will also catch the soft rfkill event and wpa_supplicant
will set the state to 'interface_disabled', but since it's not handled
properly by ConnMan, the wifi_enable() callback will be called and the
function will assume wifi got enabled.
gsupplicant/gsupplicant.h
gsupplicant/supplicant.c
plugins/wifi.c