aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-04-25trying to move indication setupmasterBjørn Mork
2021-04-25connect step debuggingBjørn Mork
Signed-off-by: Bjørn Mork <bjorn@mork.no>
2021-04-24more no_ip_family_preference debugBjørn Mork
Signed-off-by: Bjørn Mork <bjorn@mork.no>
2021-04-24more no_ip_family_preference debugBjørn Mork
Signed-off-by: Bjørn Mork <bjorn@mork.no>
2021-04-24no_ip_family_preference debugBjørn Mork
Signed-off-by: Bjørn Mork <bjorn@mork.no>
2021-04-23bearer-qmi: reorder methods in connection state machineAleksander Morgado
The "ready" methods for each step in the state machine must be ordered from bottom to top, so that the readers can read the methods in that order when following the logic.
2021-04-23port-qmi: WDS clients also mux-id specificAleksander Morgado
In addition to differentiating between IPv4 and IPv6 clients, we also need to explicitly allocate different clients in different bearer objects when in multiplexing.
2021-04-23bearer-qmi: fix dual-stack connectionsBjørn Mork
Connecting the second family of a dual stack connections fails with 'PolicyMismatch' when muxing is setup after family selection. Switching the order of the family selection and muxing setup to fix the problem. Looks like family selection must be the very last WDS request before connecting the client. Signed-off-by: Bjørn Mork <bjorn@mork.no>
2021-04-22port-qmi: fix WITH_QRTR checkAleksander Morgado
2021-04-22port-qmi: fix crash when QRTR is disabledBjørn Mork
Fix typo causing crash when WITH_QRTR is undefined: [6596]: <debug> [1619029470.854688] [cdc-wdm0/probe] probing QMI... Thread 1 "ModemManager" received signal SIGSEGV, Segmentation fault. 0x77a7310f in install_property_internal () from /usr/lib/libgobject-2.0.so.0 (gdb) bt #0 0x77a7310f in install_property_internal () from /usr/lib/libgobject-2.0.so.0 #1 0x77a731db in validate_and_install_class_property () from /usr/lib/libgobject-2.0.so.0 Backtrace stopped: frame did not save the PC Fixes: ec375bd959f0 ("port-qmi: add support for QRTR") Signed-off-by: Bjørn Mork <bjorn@mork.no>
2021-04-21qmi: Increase qmi_device_open timeoutLoic Poulain
SDX55 modem can take slighlty more than 25 seconds to start all its services from cold boot/reset (including QMI services), causing QMI port opening timeout error. This patch increases the qmi_device_open timeout from 25 seconds to 45 seconds to prevent such issue. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-04-21bearer: mbim: Check for multiplex supportLoic Poulain
If multiplexing is not supported by the network driver, do not enable it by default and fail in case it is required. This is the case for mhi_net driver, that do no implement multi MBIM session (only session 0 is supported). Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-04-21plugins: generic: Add 'wwan' subsystem supportLoic Poulain
wwan is a new subsystem for WWAN devices, allowing to expose the WWAN device and its ports in a generic way. The sysfs hierarchy for such device is /sys/class/wwanX /sys/class/wwanX/wwanXpYP Where X is the WWAN device index, Y the port index and P the control protocol name (QMI, MBIM...). A control port is also exposed as character device in /dev. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-04-21broadband-modem-mbim: Add MHI MBIM port peek supportLoic Poulain
For MHI data port (mhi-net), simply return the primary MBIM port. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-04-21broadband-modem-qmi: Add MHI QMI port peek supportLoic Poulain
For MHI data port (mhi-net), simply return the primary QMI port. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-04-21base: Add support for wwan subsystemLoic Poulain
Add support for the Linux wwan subsystem that started to expose control channel as character devices (e.g. /dev/wwan0p1MBIM...). Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-04-21filter: Add wwan port devicesLoic Poulain
Allow WWAN control ports. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-04-21udev: add wwan port devices as valid candidatesLoic Poulain
The new Linux WWAN subsystem exposes the various WWAN control ports as character devices. WWAN port device naming follows the following convention: wwanXpYP, where X is the wwan device index, Y the port index and P the port type/protocol. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-04-21build: disable gtkdocize in autoreconfAleksander Morgado
We have a custom modified gtk-doc.make file in our sources, which disables the gtkdoc-rebase on local install step, so we don't want autoreconf to copy a different one when we're bootstrapping.
2021-04-20sms-part-3gpp: add flag for indicating PDU is transfer-route messageClayton Craft
When the message is a transfer-route MT, there is no SMSC address to parse out. This flag allows indicating when the PDU is one such message.
2021-04-20broadband-modem-qmi: Handle transfer-route MT messagesClayton Craft
This handles transfer-route MT messages, automatically ACKing any that need to be ACKed. Based on work by Angus Ainslie and Elias Rudberg
2021-04-20quectel: set QGPSXTRA to enable assistance supportDylan Van Assche
Quectel modems require to enable XTRA GNSS assistance first with QGPSXTRA=1, before it can be used.
2021-04-19sim-mbim: increase the timeout for the MBIM_CID_HOME_PROVIDER queryVincent Palatin
Increase the timeout from 10 seconds to 30 seconds when reading the operator information through the MBIM_CID_HOME_PROVIDER query. We have observed cases where it took more than 12 seconds on a Fibocom L850-GL modem with specific China Unicom SIMs. This timeout was actually the cause of a corruption of the operator name (e.g. returning '@' rather than the real operator name) on the Intel XMM7360 based L850-GL. The following scenario was happening: - the base-sim code sends a first MBIM 'home-provider' query to read the operator identifier. - this query times-out after 10 seconds. - the base-sim immediately sends another MBIM 'home-provider' query to read the operator name. - the modem returns a corrupted operator identifier. Intel helped for the debugging and indicates that when the first query happens, the modem starts reading the SIM files (EF SPN/PNN), apparently it's taking a long time, when it's receives the second query while the first one is not entirely processed, this triggers a bug (in the modem firmware) and returns a corrupted name.
2021-04-14data,icon: resize to fit the contentsAleksander Morgado
2021-04-14port-qmi: minor alignment fixesAleksander Morgado
2021-04-14port-qmi: add support for QMAPv4 with checksum offload enabledAleksander Morgado
2021-04-14port-qmi: new helper macro to check for supported QMAP valuesAleksander Morgado
2021-04-14plugin: probe QRTR ports for QMI supportAndrew Lassalle
2021-04-14base-modem: create modem for QRTR subsystemAndrew Lassalle
Add support for QRTR devices so modems can be created based on ports using the QRTR subsystem.
2021-04-14port-probe: create port-qmi using a QRTR nodeAndrew Lassalle
For QRTR devices, create the qmi ports using the QRTR node.
2021-04-14qcom-soc-plugin: add support for QRTR+IPA based setupsAleksander Morgado
2021-04-14port-qmi: add support for QRTRAndrew Lassalle
Extend mm-port-qmi to accept a QRTR node to work with modems using the QRTR protocol.
2021-04-14port-qmi: initialize endpoint info for all backendsAleksander Morgado
Connect the signal to initialize endpoint info in the generic object initialization, also applicable for QRTR ports.
2021-04-14port-qmi: net ports using IPA driver expect rmnet based multiplexingAleksander Morgado
When using the IPA driver we cannot blindly use the master network interface, we must always use RMNET based multiplexing.
2021-04-14port-qmi: avoid using QmiDeviceExpectedDataFormat in the port setupAleksander Morgado
The QmiDeviceExpectedDataFormat is specific to modules exposed by the qmi_wwan driver, it has nothing to do with other drivers we may find in the system like bam-dmux or ipa, which don't allow changing the expected data format. The port setup logic is now updated to use a new flags bitmask that specifies which kernel data modes are supported or currently available.
2021-04-14context: allow disabling QRTR on runtime even if support is builtAleksander Morgado
2021-04-14kernel-device,qrtr: common physdev UID for all QRTR nodesAleksander Morgado
Add a common physdev UID to all ports in the Qualcomm SoC, so that they are all bound together to the same modem object. This change assumes that no external plugged device ever exports a QRTR node in the QRTR bus (e.g. that no PCI or USB device would ever do that). This assumption is likely wrong, but given that we're currently limiting the QRTR support to the Qualcomm SoC plugin, the assumption is valid for us for now.
2021-04-14qrtr-bus-watcher: add a class to watch for QRTR nodesAndrew Lassalle
Add a watcher to listen for QRTR add/remove signals.
2021-04-14kernel-device,qrtr: add MMKernelDeviceQrtr skeletonAndrew Lassalle
Add the skeleton of MMKernelDeviceQrtr and allow building it by the introduction of with-qrtr.
2021-04-14log: enable QRTR loggingAndrew Lassalle
Add the 'Qrtr' domain so logging from libqrtr is enabled.
2021-04-14filter: add filter for QRTR devicesAndrew Lassalle
Add support for devices using the subsystem "qrtr".
2021-04-14ci: add build tests with QRTR supportAleksander Morgado
2021-04-14build: look for libqrtr-glib with pkg-configAleksander Morgado
The WITH_QRTR symbol in config.h will let us know both if libqrtr-glib is found and if libqmi-glib is compiled with QRTR support (as per the exposed "qmi_qrtr_supported" variable in pkg-config).
2021-04-14iface-modem: minor refactor in the unload required logicAleksander Morgado
No change in the logic, just in how it's setup. E.g. we will load the max number of retries just once when the logic starts, instead of checking it on every iteration. Also some other minor coding style changes included, e.g. adding the timeout between retries as a defined symbol.
2021-04-14iface-modem: Increase unlock_required retriesPavan Holla
If a SIM is known to exist, for e.g. if it was created during load_sim_slots, persist a few more times before giving up on the SIM to be ready. There are modems on which the SIM takes more than 15s to be ready, luckily, they happen to be QMI modems where the SIM's iccid in load_sim_slots lets us know that there is a sim.
2021-04-12cli: avoid attempting to setup timeout on NULL proxyAleksander Morgado
mm_manager_get_proxy() may actually return NULL if creating the internal GDBusProxy for the Manager interface fails.
2021-04-12kerneldevice: fix segfault when processing event for non-existing portAleksander Morgado
ModemManager[6954]: <warn> [1618260091.319919] [br0] invalid sysfs path read for net/br0 ** ERROR:kerneldevice/mm-kernel-device-generic.c:235:ptr_array_add_sysfs_attribute_link_basename: assertion failed: (array && sysfs_path && attribute) Bail out! ERROR:kerneldevice/mm-kernel-device-generic.c:235:ptr_array_add_sysfs_attribute_link_basename: assertion failed: (array && sysfs_path && attribute) Thread 1 "ModemManager" received signal SIGABRT, Aborted. (gdb) bt #0 0x00007ffff7438ef5 in raise () at /usr/lib/libc.so.6 #1 0x00007ffff7422862 in abort () at /usr/lib/libc.so.6 #2 0x00007ffff76c2084 in () at /usr/lib/libglib-2.0.so.0 #3 0x00007ffff771d85d in g_assertion_message_expr () at /usr/lib/libglib-2.0.so.0 #4 0x00005555556a5337 in ptr_array_add_sysfs_attribute_link_basename (array=0x5555557de520, sysfs_path=0x0, attribute=0x555555703bd8 "driver", out_value=0x0) at kerneldevice/mm-kernel-device-generic.c:235 #5 0x00005555556a542b in preload_contents_other (self=0x5555557a6c60) at kerneldevice/mm-kernel-device-generic.c:255 #6 0x00005555556a6485 in preload_contents (self=0x5555557a6c60) at kerneldevice/mm-kernel-device-generic.c:517 #7 0x00005555556a7fb6 in check_preload (self=0x5555557a6c60) at kerneldevice/mm-kernel-device-generic.c:980 #8 0x00005555556a855f in initable_init (initable=0x5555557a6c60, cancellable=0x0, error=0x7fffffffe5c8) at kerneldevice/mm-kernel-device-generic.c:1127 #9 0x00007ffff78a2f41 in g_initable_new_valist () at /usr/lib/libgio-2.0.so.0 #10 0x00007ffff78a2ffa in g_initable_new () at /usr/lib/libgio-2.0.so.0 #11 0x00005555556a8205 in mm_kernel_device_generic_new_with_rules (props=0x5555557a5fa0, rules=0x7fffec001e30, error=0x7fffffffe5c8) at kerneldevice/mm-kernel-device-generic.c:1042 #12 0x00005555556a827d in mm_kernel_device_generic_new (props=0x5555557a5fa0, error=0x7fffffffe5c8) at kerneldevice/mm-kernel-device-generic.c:1063 #13 0x00005555555aba9c in handle_kernel_event (self=0x555555793220, properties=0x5555557a5fa0, error=0x7fffffffe5c8) at mm-base-manager.c:414
2021-04-12shared-qmi: Remove iteration over slots at startupPavan Holla
MM used to iterate over each SIM slot to load IMSI, operator name etc. However, switching slots at start up caused a few issues in the real world. a) Sierra Wireless' AUTO-SIM feature, the hidden SIM slot switching is actually triggering a full modem reset (because the firmware detects a new SIM for a different operator, and automatically resets itself to load the firmware+carrier config associated to that other operator). b) The IMSI on slot 2 is reported to be the same as slot 1. This is solved by adding a 1000ms delay before reading IMSI on slot 2, after GET_CARD_STATUS indicates the sim is ready. The delay means a 2s startup penalty when both slots are loaded. c) 2/5 developers have encountered a fw bug where the modem incorrectly reports that the SIM on slot 1 has vanished after the sequence of slot switches. This makes the modem unusable. d) If the eSIM daemon changes slots and opens a channel to the eUICC, MM will detect a hotswap, and break the channel during reprobe. e) SIMs from a certain large operator in the US take over 20s to be ready. Thus, switching to such a SIM for just loading IMSI may not be worth it. This change does not affect detection of sims in all slots. We still expose the iccid and presence of all sims. However, properties like IMSI and operator_name will not be exposed for the inactive slot.
2021-04-09iface-modem-time: fix invalid read when loading network timezone failsAleksander Morgado
==226546== Invalid read of size 4 ==226546== at 0x5068CB7: g_error_matches (in /usr/lib/libglib-2.0.so.0.6600.7) ==226546== by 0x1BAC86: load_network_timezone_ready (mm-iface-modem-time.c:218) ==226546== by 0x4EA827E: g_simple_async_result_complete (in /usr/lib/libgio-2.0.so.0.6600.7) ==226546== by 0x17AE2C: at_command_ready (mm-base-modem-at.c:538) ==226546== by 0x4EA827E: g_simple_async_result_complete (in /usr/lib/libgio-2.0.so.0.6600.7) ==226546== by 0x24B475: serial_command_ready (mm-port-serial-at.c:378) ==226546== by 0x4EA827E: g_simple_async_result_complete (in /usr/lib/libgio-2.0.so.0.6600.7) ==226546== by 0x244F94: command_context_complete_and_free (mm-port-serial.c:141) ==226546== by 0x246861: port_serial_got_response (mm-port-serial.c:755) ==226546== by 0x246923: port_serial_timed_out (mm-port-serial.c:785) ==226546== by 0x50863C3: ??? (in /usr/lib/libglib-2.0.so.0.6600.7) ==226546== by 0x5085B83: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.6600.7)
2021-04-09libmm-glib,bearer-properties: fix usage of CMP_FLAGS_NO_RM_PROTOCOLAleksander Morgado