aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2023-01-03build: compile plugins before daemonAleksander Morgado
2023-01-03build: fix missing module name in shared option utilsAleksander Morgado
2023-01-03build: move plugins directory to src/pluginsAleksander Morgado
We are going to allow including the plugin sources built within the ModemManager daemon binary; moving the sources within the daemon sources directory makes it easier.
2023-01-03log: avoid redefining MM_MODULE_NAMEAleksander Morgado
2022-12-20base-modem: don't assume ports tables always existAleksander Morgado
The 'link_ports' and 'ports' tables are created during object init(), but they are fully removed and cleared during dispose(). Given that the MMDevice executes an explicit g_object_run_dispose(), there may be cases where a long-running operation that isn't cancelled ends up being completed by the time the object disposal has already run at least once. That would end up crashing the process if we attempt to e.g. iterate over one of the ports hash tables: 0x00007c3594eb3b93 (libglib-2.0.so.0 - ghash.c: 1180) g_hash_table_iter_next 0x00005b60d86f2563 (ModemManager - mm-base-modem.c: 1133) mm_base_modem_get_port_infos 0x00005b60d870228e (ModemManager - mm-iface-modem.c: 4013) fcc_unlock 0x00007c35950126a8 (libgio-2.0.so.0 - gtask.c: 1230) g_task_return_now 0x00007c35950116fa (libgio-2.0.so.0 - gtask.c: 1300) g_task_return 0x00007c3595011d12 (libgio-2.0.so.0 - gtask.c: 1930) g_task_return_new_error 0x00005b60d87518f2 (ModemManager - mm-broadband-modem-mbim.c: 1970) radio_state_set_up_ready 0x00007c35950126a8 (libgio-2.0.so.0 - gtask.c: 1230) g_task_return_now 0x00007c35950116fa (libgio-2.0.so.0 - gtask.c: 1300) g_task_return 0x00007c35950c486c (libmbim-glib.so.4 - mbim-device.c: 253) transaction_task_complete_and_free 0x00007c35950c714b (libmbim-glib.so.4 - mbim-device.c: 335) transaction_timed_out 0x00007c3594ec1232 (libglib-2.0.so.0 - gmain.c: 4971) g_timeout_dispatch 0x00007c3594ec43fc (libglib-2.0.so.0 - gmain.c: 3417) g_main_context_dispatch 0x00007c3594ec4704 (libglib-2.0.so.0 - gmain.c: 4211) g_main_context_iterate 0x00007c3594ec4978 (libglib-2.0.so.0 - gmain.c: 4411) g_main_loop_run 0x00005b60d86d7c56 (ModemManager - main.c: 217) main 0x00007c3594c526c5 (libc.so.6 + 0x000286c5) __libc_init_first 0x00007c3594c52781 (libc.so.6 + 0x00028781) __libc_start_main 0x00005b60d86d7970 (ModemManager + 0x00061970) _start Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/677 Change-Id: I6695c284f86a196e60de7f714bc1671332d08848
2022-12-18port-mbim: chain up device notifications through the portAleksander Morgado
Instead of having the modem object listen notifications in the MbimDevice, the MMPortMbim will act as an intermediate emitter for the same. The primary benefit is that the lifecycle of the port object is tightly coupled to the life of the modem object, so there is no chance that the port object outlives the modem object. And the port object will ensure its own device notification handler is correctly cleared up on its dispose, so there should be no chance of firing up a signal in the device for a listener that is already freed.
2022-12-18port-mbim: implement the new generic 'removed' signalAleksander Morgado
Letting the MMBroadbandModemMbim listen for the notifications of the MbimDevice was not a good idea, especially since no explicit reference to the device object was hold in the modem object. This leads to race conditions in which the MbimDevice outlives the MMBroadbandModemMbim and the MMPortMbim, and when the "device-removed" signal is triggered, the program crashes. The MMPortMbim will now emit its own 'removed' signals when the underlying MbimDevice emits "device-removed', ensuring that the signal handler is properly cleared up during the MMPortMbim disposal. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/518
2022-12-18port-qmi: implement the new generic 'removed' signalAleksander Morgado
Letting the MMBroadbandModemQmi listen for the notifications of the QmiDevice was not a good idea, especially since no explicit reference to the device object was hold in the modem object. This leads to race conditions in which the QmiDevice outlives the MMBroadbandModemQmi and the MMPortQmi, and when the "device-removed" signal is triggered, the program crashes. The MMPortQmi will now emit its own 'removed' signals when the underlying QmiDevice emits "device-removed', ensuring that the signal handler is properly cleared up during the MMPortQmi disposal.
2022-12-18port: define new generic 'removed' signalAleksander Morgado
This signal indicates that the port is no longer accessible. Unlike a udev port removal event, this indication may happen even if the port is still exposed by the system. It is designed to detect protocol proxy crashes, and so when such event is detected by the modem, a full reprobe of the device will be done to start from scratch the protocol management operations.
2022-12-06iface-modem-3gpp: Check before registeringSven Schwermer
If the modem is already registered when ModemManager probes the modem, it will ignore the registration state since the modem is not enabled yet. Always querying the registration state before starting the registration procedure makes sure to catch such cases and not perform unnecessary registration steps. Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2022-12-06broadband-modem-mbim: print MbimSmsStatusFlag as flags stringAleksander Morgado
This requires bumping libmbim to 1.29.2, which is the version including the enum->flags change.
2022-12-05broadband-modem-mbim: MbimSmsStatusFlag is flags, not an enumAleksander Morgado
We can directly use this change instead of requiring the libmbim version bump because the numeric values of the enum didn't change: NEW_MESSAGE == 2 == (1<<1) Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/673
2022-11-30base-sms: improve logging of user operationsAleksander Morgado
2022-11-30base-sms: refactor memory management in handlersAleksander Morgado
Use g_auto* helpers where needed, and switch to use the slice allocator for the handler operation contexts.
2022-11-30iface-modem-messaging: improve logging of user operationsAleksander Morgado
2022-11-30iface-modem-messaging: refactor memory management in handlersAleksander Morgado
Use g_auto* helpers where needed, and switch to use the slice allocator for the handler operation contexts.
2022-11-30iface-modem-messaging: use the abort_invocation_if_state_not_reached() helperAleksander Morgado
2022-11-30iface-modem-messaging: allow Delete operation during enabling/disablingAleksander Morgado
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/671
2022-11-28mm-sim-qmi: use UIM service for loading operator identifier and nameAkash Aggarwal
Output of NAS Get Home Network depends on network state, and we may fail to read SIM card info if device is not attached. Load card operator name and identifier using UIM Read Transparent.
2022-11-22broadband-modem-qmi: don't fail profile update indications setup if one ↵Aleksander Morgado
client missing Using mm_shared_qmi_ensure_client() ensures that the client must exist or otherwise the operation would fail. Instead, try to peek the clients independently with mm_shared_qmi_peek_client() and only fail if both exist. The state machine logic already treats the clients as optional.
2022-11-22mm-broadband-modem-qmi: register for profile change indicationAkash Aggarwal
Update profile manager and notify clients if there is a change in modem profiles list.
2022-11-22broadband-modem-qmi: don't depend on other TLVs when processing Signal InfoAleksander Morgado
When processing the NAS Signal Info message, don't assume that a previously processed TLV creates the MMSignal object for a given access technology.
2022-11-22mm-broadband-modem-qmi: update UMTS RSCP while loading signal valuesAkash Aggarwal
2022-11-22mm-broadband-modem-qmi: fix Nr5g SNR valueokaestne
value needs to be divided by 10 as for LTE
2022-11-21mm-broadband-modem-qmi: fully free SignalLoadValuesResultokaestne
2022-11-15broadband-modem-mbim: add AT based fallback to load model nameSunXinzhao
Modify the load_model function to use the AT command to get the model name and display the module name in the model instead of [vid:pid]. Test on L860 Linux Device, use `mmcli -L`, it can show: "/org/free desktop/ModemManager1/Modem/0 [Intel] L860-GL-16 LTE Module"
2022-11-15mm-broadband-modem-qmi: fix loading Nr5g signal infookaestne
2022-11-15context: include MSG log level in --helpAleksander Morgado
2022-11-10test,modem-helpers-qmi: unit tests for NAS system info registration processingAleksander Morgado
Requires the response parser methods in libqmi.
2022-11-10broadband-modem-qmi: use new system info processor helperAleksander Morgado
2022-11-10modem-helpers-qmi: new helper to process System Info messagesAleksander Morgado
2022-11-10modem-helpers: new method to check if reg state is registeredAleksander Morgado
2022-11-10broadband-modem-mbim: simplify caps loading logic by using autoptrAleksander Morgado
2022-11-10broadband-modem-mbim: use ms extensions, if available, for capabilitiesDaniele Palmas
2022-11-10broadband-modem-mbim: add supported modes from CustomDataClassDaniele Palmas
Some modems (e.g. Telit FN990) reports 5G capabilities in CustomDataClass field of device-caps cid: take this into account when building the modes according to the data caps.
2022-11-08iface-modem-3gpp: fix memory leak when processing PCOsAleksander Morgado
==109786== 2,798 (96 direct, 2,702 indirect) bytes in 2 blocks are definitely lost in loss record 5,882 of 5,903 ==109786== at 0x4841888: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==109786== by 0x4A01329: g_malloc (gmem.c:130) ==109786== by 0x4A23F17: g_slice_alloc (gslice.c:1074) ==109786== by 0x4A4B8F8: UnknownInlinedFun (gvariant-core.c:488) ==109786== by 0x4A4B8F8: UnknownInlinedFun (gvariant-core.c:626) ==109786== by 0x4A4B8F8: g_variant_builder_end (gvariant.c:3756) ==109786== by 0x48FD6DC: mm_pco_to_variant (mm-pco.c:251) ==109786== by 0x1AB397: mm_iface_modem_3gpp_update_pco_list (mm-iface-modem-3gpp.c:2274) ==109786== by 0x2306DF: ms_basic_connect_extensions_notification_pco (mm-broadband-modem-mbim.c:5101) ==109786== by 0x2306DF: ms_basic_connect_extensions_notification (mm-broadband-modem-mbim.c:5280) ==109786== by 0x2306DF: device_notification_cb (mm-broadband-modem-mbim.c:5332) ==109786== by 0x4CD3BD6: g_cclosure_marshal_VOID__BOXEDv (gmarshal.c:1686) ==109786== by 0x4CED11B: UnknownInlinedFun (gclosure.c:895) ==109786== by 0x4CED11B: g_signal_emit_valist (gsignal.c:3456) ==109786== by 0x4CED203: g_signal_emit (gsignal.c:3606) ==109786== by 0x50ADA0F: indication_ready (mbim-device.c:870) ==109786== by 0x4B92DD3: g_task_return_now (gtask.c:1232)
2022-11-08bearer-mbim: remove explicit packet service set during attemptAleksander Morgado
An explicit packet service state update request sent during a connection attempt may end up triggering an explicit re-attach with the network, which in turn cancels the ongoing connection attempt. The logic to trigger an explicit attach is now managed by the Simple.Connect() operation, which will make sure that no new request is sent if the modem is already attached, so there is no need for this step in the MBIM connection logic any more. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/622
2022-11-08broadband-modem-mbim: track uplink/downlink speeds only via indicationsAleksander Morgado
The uplink and downlink speeds will be exclusively tracked via packet service indications, and stored within the MBIM modem object. When the bearer connect result is built, we will include the latest speeds reported, which may have changed upon the operation to connect to the network.
2022-11-08broadband-modem-mbim: translate UNSUPPORTED error during packet attachAleksander Morgado
So that the upper layers are allowed to decide what to do in case the modem doesn't support the operation.
2022-11-08broadband-modem-mbim: return nw_error on packet service attach failureAleksander Morgado
If the packet attach operation fails we may still get the response with a nw_error field telling us a more detailed error reason for the failure. Try to parse the message and return an error including the nw_error information.
2022-11-08broadband-modem-mbim: increase to 30s the packet service set timeoutAleksander Morgado
Same timeout as used in the connection attempt.
2022-11-08iface-modem-simple: explicitly request packet service attach if neededAleksander Morgado
Instead of just waiting for the packet service to be attached, if we waited and still didn't get it, an explicit request will be sent.
2022-11-08iface-modem-3gpp: allow internal request to set packet serviceAleksander Morgado
Provide a new internal method in the 3GPP interface to request an explicit packet service state update.
2022-11-08mm-broadband-modem-mbim: ignore SIM related indications during SIM slot switchJack Song
Using pending_sim_slot_switch_action to ignore SIM slot update during modem shutdown Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/645
2022-11-07build: drop autotoolsAleksander Morgado
2022-11-07build: disable Test interface in base manager if building without testsAleksander Morgado
There is no real need for this interface if tests are not being built.
2022-11-07build: fix building without tests supportAleksander Morgado
2022-11-04base-modem: log port names and types detectedAleksander Morgado
2022-11-04bearer-qmi: improve logging of connection failuresAleksander Morgado
Clearly specify whether the IPv4 or IPv6 path is failing.
2022-11-04iface-modem-3gpp: decrease severity of logs that don't affect functionalityAleksander Morgado
Instead of warning about various unimportant things failing that don't affect functionality, just print the logs in debug level and go on.