summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJukka Rissanen <jukka.rissanen@linux.intel.com>2013-07-25 16:31:29 +0300
committerZhang zhengguang <zhengguang.zhang@intel.com>2013-08-15 09:15:53 +0800
commit62da345484bba7397974de47c646ea2dc8af3b91 (patch)
treea40e47088ee5602aca025691fad4b6cae2e8610e
parentde9a417f3ad6daf12eee7088570bc9f478e0f4cc (diff)
downloadconnman-tizen_ivi_genivi.tar.gz
connman-tizen_ivi_genivi.tar.bz2
connman-tizen_ivi_genivi.zip
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.c43
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;
}