From f87e2251d7dcc434cdccf841918cd6b82cbd5ac7 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 5 Jan 2011 16:34:51 -0600 Subject: [PATCH] wimax: turn off wimaxd's fast reconnect logic It eventually gets confusing for everyone. NM is the policy, so handle reconnect there. --- src/wimax/iwmxsdk.c | 21 +++++++++++++++++++++ src/wimax/iwmxsdk.h | 1 + src/wimax/nm-device-wimax.c | 1 + 3 files changed, 23 insertions(+) diff --git a/src/wimax/iwmxsdk.c b/src/wimax/iwmxsdk.c index ab4b0ec1c4..d36967b126 100644 --- a/src/wimax/iwmxsdk.c +++ b/src/wimax/iwmxsdk.c @@ -873,6 +873,27 @@ error_get_status: return result; } +/* + * Turn fast reconnect capability on/off + * + * This function tells wimaxd to turn fast reconnect on or off. + */ +int iwmx_sdk_set_fast_reconnect_enabled(struct wmxsdk *wmxsdk, int enabled) +{ + WIMAX_API_RET r; + char errstr[512]; + UINT32 errstr_size = sizeof(errstr); + + r = SetFastReconnectCapabilityStatus(&wmxsdk->device_id, !!enabled); + if (r != WIMAX_API_RET_SUCCESS) { + GetErrorString(&wmxsdk->device_id, r, errstr, &errstr_size); + nm_log_err(LOGD_WIMAX, "wmxsdk: Cannot set fast reconnect to %d: %d (%s)", + enabled, r, errstr); + return -EIO; + } + return 0; +} + static void __iwmx_sdk_media_status_update_cb (WIMAX_API_DEVICE_ID_P device_id, WIMAX_API_MEDIA_STATUS mediaStatus) { diff --git a/src/wimax/iwmxsdk.h b/src/wimax/iwmxsdk.h index 1cef36fa3d..13e4ff7dc4 100644 --- a/src/wimax/iwmxsdk.h +++ b/src/wimax/iwmxsdk.h @@ -95,6 +95,7 @@ void iwmx_sdk_set_callbacks(struct wmxsdk *wmxsdk, WIMAX_API_DEVICE_STATUS iwmxsdk_status_get(struct wmxsdk *wmxsdk); int iwmx_sdk_connect(struct wmxsdk *wmxsdk, const char *nsp_name); int iwmx_sdk_disconnect(struct wmxsdk *wmxsdk); +int iwmx_sdk_set_fast_reconnect_enabled(struct wmxsdk *wmxsdk, int enabled); WIMAX_API_CONNECTED_NSP_INFO_EX *iwmx_sdk_get_connected_network(struct wmxsdk *wmxsdk); const char *iwmx_sdk_dev_status_to_str(WIMAX_API_DEVICE_STATUS status); const char *iwmx_sdk_reason_to_str(WIMAX_API_STATUS_REASON reason); diff --git a/src/wimax/nm-device-wimax.c b/src/wimax/nm-device-wimax.c index fbfcb46660..ef105a725b 100644 --- a/src/wimax/nm-device-wimax.c +++ b/src/wimax/nm-device-wimax.c @@ -969,6 +969,7 @@ wmx_new_sdk_cb (struct wmxsdk *sdk, void *user_data) wmx_scan_result_cb, wmx_removed_cb, self); + iwmx_sdk_set_fast_reconnect_enabled (priv->sdk, 0); if (!priv->sdk_action_defer_id) priv->sdk_action_defer_id = g_idle_add (sdk_action_defer_cb, self);