diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2013-07-25 16:31:29 +0300 |
---|---|---|
committer | Zhang zhengguang <zhengguang.zhang@intel.com> | 2013-08-15 09:15:53 +0800 |
commit | 62da345484bba7397974de47c646ea2dc8af3b91 (patch) | |
tree | a40e47088ee5602aca025691fad4b6cae2e8610e | |
parent | de9a417f3ad6daf12eee7088570bc9f478e0f4cc (diff) | |
download | connman-tizen_ivi_genivi.tar.gz connman-tizen_ivi_genivi.tar.bz2 connman-tizen_ivi_genivi.zip |
technology: Do not send any rfkill to kernel after receiving onesubmit/tizen_ivi_release/20131120.032027submit/tizen_ivi_genivi/20140131.015912submit/tizen/20130912.075641submit/tizen/20130815.011956ivi_oct_m2accepted/tizen_ivi_release/20131120.050253accepted/tizen/ivi/genivi/20140131.020206accepted/tizen/20130912.093500accepted/tizen/20130912.085336accepted/tizen/20130912.082351tizen_ivi_releasetizen_ivi_genivi
If we receive rfkill event from kernel, we must not send it
back blindly. This could cause a ping-pong effect where the
technology is switched on/off constantly.
Upstream commit id:7a2d00e0bfe99cc327f78b9841bd8aca9efa2877
-rw-r--r-- | src/technology.c | 43 |
1 files changed, 6 insertions, 37 deletions
diff --git a/src/technology.c b/src/technology.c index 77601b40..7dcc0001 100644 --- a/src/technology.c +++ b/src/technology.c @@ -1724,45 +1724,14 @@ int __connman_technology_update_rfkill(unsigned int index, if (technology == NULL) return -ENXIO; - /* If hardblocked, there is no need to handle softblocked state */ - if (technology_apply_rfkill_change(technology, - softblock, hardblock, FALSE) == TRUE) - return 0; + technology_apply_rfkill_change(technology, softblock, hardblock, + FALSE); - if (global_offlinemode == TRUE) - return 0; - - /* - * State diagram how to set the block status from individual - * technology status fields: - * - * enabled | softblocked | offline | is - * | | | blocked - * -----------+---------------+-----------+---------- - * no | no | no | yes - * yes | no | no | no - * no | yes | no | yes - * yes | yes | no | yes - * no | no | yes | yes - * yes | no | yes | no - * no | yes | yes | yes - * yes | yes | yes | yes - * - * The enabled is controlled by dbus API (typically - * from UI). softblocked is set either by dbus API or by - * external event. Offline (flight mode) is set via dbus - * API. - */ - - DBG("type %d enabled %d soft %d hard %d blocked %d", - type, technology->enabled, - technology->softblocked, technology->hardblocked, - !(technology->enabled && !technology->softblocked)); - - if (technology->enabled && !technology->softblocked) - return __connman_rfkill_block(type, FALSE); + if (technology->hardblocked) + DBG("%s hardblocked", get_name(technology->type)); else - return __connman_rfkill_block(type, TRUE); + DBG("%s is%s softblocked", get_name(technology->type), + technology->softblocked ? "" : " not"); return 0; } |