diff options
author | Dan Williams <dcbw@redhat.com> | 2010-05-04 17:33:04 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2010-05-04 17:34:11 -0700 |
commit | 885bc90be91f44f4e2aeb837f40aafcce3089789 (patch) | |
tree | dafe14565b6fefee3fd4fc93f63219f515c84d36 /src/mm-generic-gsm.c | |
parent | 26a3fe3f53b4a053035ea4f1c1a67eed7fe2761f (diff) |
gsm/cdma: fix data port assignment (rh #587400)
QCDM ports should never be the data port; 'net' ports take precedence
over AT ports too. Clarify that.
Diffstat (limited to 'src/mm-generic-gsm.c')
-rw-r--r-- | src/mm-generic-gsm.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index 0e787d22..41d9e523 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -401,7 +401,12 @@ mm_generic_gsm_grab_port (MMGenericGsm *self, g_return_val_if_fail (!strcmp (subsys, "net") || !strcmp (subsys, "tty"), FALSE); port = mm_modem_base_add_port (MM_MODEM_BASE (self), subsys, name, ptype); - if (port && MM_IS_AT_SERIAL_PORT (port)) { + if (!port) { + g_warn_if_fail (port != NULL); + return NULL; + } + + if (MM_IS_AT_SERIAL_PORT (port)) { GPtrArray *array; int i; @@ -431,11 +436,12 @@ mm_generic_gsm_grab_port (MMGenericGsm *self, } else if (ptype == MM_PORT_TYPE_SECONDARY) priv->secondary = MM_AT_SERIAL_PORT (port); - } else if (MM_IS_QCDM_SERIAL_PORT (port) && !priv->qcdm) { - priv->qcdm = MM_QCDM_SERIAL_PORT (port); - } else { + } else if (MM_IS_QCDM_SERIAL_PORT (port)) { + if (!priv->qcdm) + priv->qcdm = MM_QCDM_SERIAL_PORT (port); + } else if (!strcmp (subsys, "net")) { /* Net device (if any) is the preferred data port */ - if (!priv->data || MM_IS_SERIAL_PORT (priv->data)) { + if (!priv->data || MM_IS_AT_SERIAL_PORT (priv->data)) { priv->data = port; g_object_notify (G_OBJECT (self), MM_MODEM_DATA_DEVICE); check_valid (self); |