diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-01-09 12:51:54 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-01-16 10:56:53 +0100 |
commit | f2a9ea377957355e7a703c6d08ff85c8b0ba4d0c (patch) | |
tree | 1395a282db5f98df3ebd3b4f8d8e20b69119ece1 | |
parent | 8c5bd6375fed0150fa80a5623c0e6ca1e430b4fd (diff) |
huawei: use NDISDUP only if net port from cdc_ncm or cdc_ether
-rw-r--r-- | plugins/huawei/mm-broadband-modem-huawei.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/plugins/huawei/mm-broadband-modem-huawei.c b/plugins/huawei/mm-broadband-modem-huawei.c index b899da7a..0f9688f2 100644 --- a/plugins/huawei/mm-broadband-modem-huawei.c +++ b/plugins/huawei/mm-broadband-modem-huawei.c @@ -1346,19 +1346,28 @@ huawei_modem_create_bearer (MMIfaceModem *self, huawei_modem_create_bearer); if (mm_port_get_port_type (mm_base_modem_peek_best_data_port (MM_BASE_MODEM (self))) == MM_PORT_TYPE_NET) { - /* If we get a data port, check for NDISDUP support */ - mm_dbg ("Checking ^NDISDUP support..."); - mm_base_modem_at_command (MM_BASE_MODEM(self), - "^NDISDUP?", - 3, - FALSE, - (GAsyncReadyCallback)ndisdup_check_ready, - ctx); - return; + /* If we get a 'net' port, check if driver is 'cdc_ether' or 'cdc_ncm' */ + const gchar **drivers; + guint i; + + drivers = mm_base_modem_get_drivers (MM_BASE_MODEM (self)); + for (i = 0; drivers[i]; i++) { + if (g_str_equal (drivers[i], "cdc_ether") || g_str_equal (drivers[i], "cdc_ncm")) { + /* If being handled by cdc-ether or cdc-ncm, check for NDISDUP support */ + mm_dbg ("Checking ^NDISDUP support..."); + mm_base_modem_at_command (MM_BASE_MODEM (self), + "^NDISDUP?", + 3, + FALSE, + (GAsyncReadyCallback)ndisdup_check_ready, + ctx); + return; + } + } } mm_dbg ("Creating default bearer..."); - mm_broadband_bearer_new (MM_BROADBAND_MODEM(self), + mm_broadband_bearer_new (MM_BROADBAND_MODEM (self), properties, NULL, /* cancellable */ (GAsyncReadyCallback)broadband_bearer_new_ready, |