diff options
Diffstat (limited to 'meta/recipes-connectivity/connman/connman-0.65/fix-shutdown-ap-disconnect.patch')
| -rw-r--r-- | meta/recipes-connectivity/connman/connman-0.65/fix-shutdown-ap-disconnect.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/meta/recipes-connectivity/connman/connman-0.65/fix-shutdown-ap-disconnect.patch b/meta/recipes-connectivity/connman/connman-0.65/fix-shutdown-ap-disconnect.patch new file mode 100644 index 0000000000..a0ad0991df --- /dev/null +++ b/meta/recipes-connectivity/connman/connman-0.65/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: | ||
