From f2a9ea377957355e7a703c6d08ff85c8b0ba4d0c Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Wed, 9 Jan 2013 12:51:54 +0100 Subject: huawei: use NDISDUP only if net port from cdc_ncm or cdc_ether --- plugins/huawei/mm-broadband-modem-huawei.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'plugins') 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, -- cgit v1.2.3-70-g09d2