aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-01-09 12:51:54 +0100
committerAleksander Morgado <aleksander@lanedo.com>2013-01-16 10:56:53 +0100
commitf2a9ea377957355e7a703c6d08ff85c8b0ba4d0c (patch)
tree1395a282db5f98df3ebd3b4f8d8e20b69119ece1
parent8c5bd6375fed0150fa80a5623c0e6ca1e430b4fd (diff)
huawei: use NDISDUP only if net port from cdc_ncm or cdc_ether
-rw-r--r--plugins/huawei/mm-broadband-modem-huawei.c29
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,