From 23c027a7a9b916aabc82e70d922b727aa70af89a Mon Sep 17 00:00:00 2001 From: Stephan Gerhold Date: Thu, 11 Aug 2022 15:50:17 +0200 Subject: [PATCH] broadband-modem-qmi: split up peek_port_qmi_for_data() peek_port_qmi_for_data() is currently quite confusing to read because it mostly covers qmi_wwan while the mhi_net case returns early. Split this up into separate functions per driver to make it less confusing, similar to the variant in mm-broadband-modem-qmi-qcom-soc. No functional change. --- src/mm-broadband-modem-qmi.c | 64 +++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 5a347e64..75c07dd8 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -262,33 +262,24 @@ mm_broadband_modem_qmi_get_port_qmi_for_data (MMBroadbandModemQmi *self, } static MMPortQmi * -peek_port_qmi_for_data (MMBroadbandModemQmi *self, - MMPort *data, - QmiSioPort *out_sio_port, - GError **error) +peek_port_qmi_for_data_mhi (MMBroadbandModemQmi *self, + MMPort *data, + QmiSioPort *out_sio_port, + GError **error) +{ + return mm_broadband_modem_qmi_peek_port_qmi (self); +} + +static MMPortQmi * +peek_port_qmi_for_data_usb (MMBroadbandModemQmi *self, + MMPort *data, + QmiSioPort *out_sio_port, + GError **error) { GList *cdc_wdm_qmi_ports; GList *l; const gchar *net_port_parent_path; MMPortQmi *found = NULL; - const gchar *net_port_driver; - - g_assert (MM_IS_BROADBAND_MODEM_QMI (self)); - g_assert (mm_port_get_subsys (data) == MM_PORT_SUBSYS_NET); - - net_port_driver = mm_kernel_device_get_driver (mm_port_peek_kernel_device (data)); - if (g_strcmp0 (net_port_driver, "qmi_wwan") != 0 && g_strcmp0 (net_port_driver, "mhi_net")) { - g_set_error (error, - MM_CORE_ERROR, - MM_CORE_ERROR_FAILED, - "Unsupported QMI kernel driver for 'net/%s': %s", - mm_port_get_device (data), - net_port_driver); - return NULL; - } - - if (!g_strcmp0 (net_port_driver, "mhi_net")) - return mm_broadband_modem_qmi_peek_port_qmi (self); net_port_parent_path = mm_kernel_device_get_interface_sysfs_path (mm_port_peek_kernel_device (data)); if (!net_port_parent_path) { @@ -327,6 +318,35 @@ peek_port_qmi_for_data (MMBroadbandModemQmi *self, return found; } + +static MMPortQmi * +peek_port_qmi_for_data (MMBroadbandModemQmi *self, + MMPort *data, + QmiSioPort *out_sio_port, + GError **error) +{ + const gchar *net_port_driver; + + g_assert (MM_IS_BROADBAND_MODEM_QMI (self)); + g_assert (mm_port_get_subsys (data) == MM_PORT_SUBSYS_NET); + + net_port_driver = mm_kernel_device_get_driver (mm_port_peek_kernel_device (data)); + + if (!g_strcmp0 (net_port_driver, "qmi_wwan")) + return peek_port_qmi_for_data_usb (self, data, out_sio_port, error); + + if (!g_strcmp0 (net_port_driver, "mhi_net")) + return peek_port_qmi_for_data_mhi (self, data, out_sio_port, error); + + g_set_error (error, + MM_CORE_ERROR, + MM_CORE_ERROR_FAILED, + "Unsupported QMI kernel driver for 'net/%s': %s", + mm_port_get_device (data), + net_port_driver); + return NULL; +} + MMPortQmi * mm_broadband_modem_qmi_peek_port_qmi_for_data (MMBroadbandModemQmi *self, MMPort *data,