Skip to content

Commit c81b4a6

Browse files
lvoeglhughsie
authored andcommitted
modem-manager: Do not fail if no ports found
This should not be treated as an error as `mm_modem_get_ports` and `mm_modem_get_ignored_ports` return `FALSE` if the number of ports is zero. Signed-off-by: Lukas Voegl <[email protected]>
1 parent 09d5c9f commit c81b4a6

File tree

2 files changed

+47
-65
lines changed

2 files changed

+47
-65
lines changed

plugins/modem-manager/fu-mm-backend.c

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -200,36 +200,26 @@ fu_mm_backend_probe_gtype_fallback(FuMmBackend *self, MMObject *omodem, GError *
200200
return NULL;
201201
}
202202

203-
if (!mm_modem_get_ports(modem, &used_ports, &n_used_ports)) {
204-
g_set_error_literal(error,
205-
FWUPD_ERROR,
206-
FWUPD_ERROR_NOT_SUPPORTED,
207-
"failed to get port information");
208-
return NULL;
209-
}
210-
for (guint i = 0; i < n_used_ports; i++) {
211-
g_debug("found port %s: %s",
212-
used_ports[i].name,
213-
fu_mm_device_port_type_to_string(used_ports[i].type));
214-
FU_BIT_SET(ports_bitmask, used_ports[i].type);
203+
if (mm_modem_get_ports(modem, &used_ports, &n_used_ports)) {
204+
for (guint i = 0; i < n_used_ports; i++) {
205+
g_debug("found port %s: %s",
206+
used_ports[i].name,
207+
fu_mm_device_port_type_to_string(used_ports[i].type));
208+
FU_BIT_SET(ports_bitmask, used_ports[i].type);
209+
}
210+
mm_modem_port_info_array_free(used_ports, n_used_ports);
215211
}
216-
mm_modem_port_info_array_free(used_ports, n_used_ports);
217212

218213
#if MM_CHECK_VERSION(1, 26, 0)
219-
if (!mm_modem_get_ignored_ports(modem, &ignored_ports, &n_ignored_ports)) {
220-
g_set_error_literal(error,
221-
FWUPD_ERROR,
222-
FWUPD_ERROR_NOT_SUPPORTED,
223-
"failed to get port information");
224-
return NULL;
225-
}
226-
for (guint i = 0; i < n_ignored_ports; i++) {
227-
g_debug("found port %s: %s",
228-
ignored_ports[i].name,
229-
fu_mm_device_port_type_to_string(ignored_ports[i].type));
230-
FU_BIT_SET(ports_bitmask, ignored_ports[i].type);
214+
if (mm_modem_get_ignored_ports(modem, &ignored_ports, &n_ignored_ports)) {
215+
for (guint i = 0; i < n_ignored_ports; i++) {
216+
g_debug("found port %s: %s",
217+
ignored_ports[i].name,
218+
fu_mm_device_port_type_to_string(ignored_ports[i].type));
219+
FU_BIT_SET(ports_bitmask, ignored_ports[i].type);
220+
}
221+
mm_modem_port_info_array_free(ignored_ports, n_ignored_ports);
231222
}
232-
mm_modem_port_info_array_free(ignored_ports, n_ignored_ports);
233223
#endif // MM_CHECK_VERSION(1, 26, 0)
234224

235225
/* find the correct GType */

plugins/modem-manager/fu-mm-device.c

Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -423,50 +423,42 @@ fu_mm_device_probe_from_omodem(FuMmDevice *self, MMObject *omodem, GError **erro
423423
fu_device_set_backend_id(FU_DEVICE(self), mm_object_get_path(omodem));
424424

425425
/* look for the AT and QMI/MBIM ports */
426-
if (!mm_modem_get_ports(modem, &used_ports, &n_used_ports)) {
427-
g_set_error_literal(error,
428-
FWUPD_ERROR,
429-
FWUPD_ERROR_NOT_SUPPORTED,
430-
"failed to get port information");
431-
return FALSE;
432-
}
433-
for (guint i = 0; i < n_used_ports; i++) {
434-
g_autofree gchar *device_file = g_strdup_printf("/dev/%s", used_ports[i].name);
435-
if (used_ports[i].type >= MM_MODEM_PORT_TYPE_LAST)
436-
continue;
437-
if (used_ports[i].type == MM_MODEM_PORT_TYPE_IGNORED &&
438-
g_pattern_match_simple("wwan*qcdm*", used_ports[i].name)) {
439-
fu_mm_device_add_port(self,
440-
MM_MODEM_PORT_TYPE_QCDM,
441-
device_file,
442-
FU_MM_DEVICE_PORT_FLAG_NONE);
443-
} else {
444-
fu_mm_device_add_port(self,
445-
used_ports[i].type,
446-
device_file,
447-
FU_MM_DEVICE_PORT_FLAG_NONE);
426+
if (mm_modem_get_ports(modem, &used_ports, &n_used_ports)) {
427+
for (guint i = 0; i < n_used_ports; i++) {
428+
g_autofree gchar *device_file =
429+
g_strdup_printf("/dev/%s", used_ports[i].name);
430+
if (used_ports[i].type >= MM_MODEM_PORT_TYPE_LAST)
431+
continue;
432+
if (used_ports[i].type == MM_MODEM_PORT_TYPE_IGNORED &&
433+
g_pattern_match_simple("wwan*qcdm*", used_ports[i].name)) {
434+
fu_mm_device_add_port(self,
435+
MM_MODEM_PORT_TYPE_QCDM,
436+
device_file,
437+
FU_MM_DEVICE_PORT_FLAG_NONE);
438+
} else {
439+
fu_mm_device_add_port(self,
440+
used_ports[i].type,
441+
device_file,
442+
FU_MM_DEVICE_PORT_FLAG_NONE);
443+
}
448444
}
445+
mm_modem_port_info_array_free(used_ports, n_used_ports);
449446
}
450-
mm_modem_port_info_array_free(used_ports, n_used_ports);
451447

452448
#if MM_CHECK_VERSION(1, 26, 0)
453-
if (!mm_modem_get_ignored_ports(modem, &ignored_ports, &n_ignored_ports)) {
454-
g_set_error_literal(error,
455-
FWUPD_ERROR,
456-
FWUPD_ERROR_NOT_SUPPORTED,
457-
"failed to get ignored port information");
458-
return FALSE;
459-
}
460-
for (guint i = 0; i < n_ignored_ports; i++) {
461-
g_autofree gchar *device_file = g_strdup_printf("/dev/%s", ignored_ports[i].name);
462-
if (ignored_ports[i].type >= MM_MODEM_PORT_TYPE_LAST)
463-
continue;
464-
fu_mm_device_add_port(self,
465-
ignored_ports[i].type,
466-
device_file,
467-
FU_MM_DEVICE_PORT_FLAG_MAKE_RAW);
449+
if (mm_modem_get_ignored_ports(modem, &ignored_ports, &n_ignored_ports)) {
450+
for (guint i = 0; i < n_ignored_ports; i++) {
451+
g_autofree gchar *device_file =
452+
g_strdup_printf("/dev/%s", ignored_ports[i].name);
453+
if (ignored_ports[i].type >= MM_MODEM_PORT_TYPE_LAST)
454+
continue;
455+
fu_mm_device_add_port(self,
456+
ignored_ports[i].type,
457+
device_file,
458+
FU_MM_DEVICE_PORT_FLAG_MAKE_RAW);
459+
}
460+
mm_modem_port_info_array_free(ignored_ports, n_ignored_ports);
468461
}
469-
mm_modem_port_info_array_free(ignored_ports, n_ignored_ports);
470462
#endif // MM_CHECK_VERSION(1, 26, 0)
471463

472464
/* add properties to fwupd device */

0 commit comments

Comments
 (0)