diff options
Diffstat (limited to 'meta/recipes-connectivity/connman/connman-0.64/fix-shutdown-ap-disconnect.patch')
-rw-r--r-- | meta/recipes-connectivity/connman/connman-0.64/fix-shutdown-ap-disconnect.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/meta/recipes-connectivity/connman/connman-0.64/fix-shutdown-ap-disconnect.patch b/meta/recipes-connectivity/connman/connman-0.64/fix-shutdown-ap-disconnect.patch new file mode 100644 index 0000000000..a0ad0991df --- /dev/null +++ b/meta/recipes-connectivity/connman/connman-0.64/fix-shutdown-ap-disconnect.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | Schedule delayed scan when being disconnected from an AP | ||
2 | |||
3 | When being disconnected from an AP, a delayed scan is scheduled to make | ||
4 | sure the AP is still there. wpa_supplicant removes a BSS from its bss list | ||
5 | when it disappears from the scan results twice in a row. | ||
6 | |||
7 | Author: Samuel Ortiz <sameo@linux.intel.com> | ||
8 | Ported by Dongxiao Xu <dongxiao.xu@intel.com> | ||
9 | |||
10 | diff -ruN connman-0.56-orig/plugins/supplicant.c connman-0.56/plugins/supplicant.c | ||
11 | --- connman-0.56-orig/plugins/supplicant.c 2010-09-25 15:08:21.242927383 +0800 | ||
12 | +++ connman-0.56/plugins/supplicant.c 2010-09-25 15:12:46.346136858 +0800 | ||
13 | @@ -2184,6 +2184,15 @@ | ||
14 | scanning == TRUE ? "started" : "finished"); | ||
15 | } | ||
16 | |||
17 | +static gboolean delayed_scan(gpointer user_data) | ||
18 | +{ | ||
19 | + struct supplicant_task *task = user_data; | ||
20 | + | ||
21 | + supplicant_scan(task->device); | ||
22 | + | ||
23 | + return FALSE; | ||
24 | +} | ||
25 | + | ||
26 | static void state_change(struct supplicant_task *task, DBusMessage *msg) | ||
27 | { | ||
28 | DBusError error; | ||
29 | @@ -2277,7 +2286,13 @@ | ||
30 | task_connect(task); | ||
31 | } else | ||
32 | task->network = NULL; | ||
33 | + } else { | ||
34 | + if (task->state == WPA_DISCONNECTED) | ||
35 | + g_timeout_add_seconds(10, delayed_scan, task); | ||
36 | + | ||
37 | + remove_network(task); | ||
38 | } | ||
39 | + | ||
40 | break; | ||
41 | |||
42 | default: | ||