aboutsummaryrefslogtreecommitdiff
path: root/src/mm-base-modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-base-modem.c')
-rw-r--r--src/mm-base-modem.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index 5d9782c3..0224e0b5 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -655,12 +655,24 @@ mm_base_modem_peek_port_qmi_for_data (MMBaseModem *self,
g_object_unref (client);
if (!found) {
- g_set_error (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_NOT_FOUND,
- "Couldn't find associated QMI port for 'net/%s'",
+ /* For the case where we have only 1 data port and 1 QMI port and they
+ * don't match with the previous rules (e.g. in some Huawei modems),
+ * just return the found one */
+ if (g_list_length (self->priv->data) == 1 &&
+ g_list_length (self->priv->qmi) == 1 &&
+ self->priv->data->data == data) {
+ mm_info ("Assuming QMI port '%s' is associated to net/%s",
+ mm_port_get_device (MM_PORT (self->priv->qmi->data)),
mm_port_get_device (data));
- return NULL;
+ found = MM_QMI_PORT (self->priv->qmi->data);
+ } else {
+ g_set_error (error,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_NOT_FOUND,
+ "Couldn't find associated QMI port for 'net/%s'",
+ mm_port_get_device (data));
+ return NULL;
+ }
}
return found;