aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2022-11-04iface-modem: improve logging of user request to set power stateAleksander Morgado
2022-11-04iface-modem: improve logging of user request to enable/disable modemAleksander Morgado
2022-11-04iface-modem: improve logging of user request to get cell infoAleksander Morgado
2022-11-04iface-modem: improve logging of user request to set primary SIM slotAleksander Morgado
2022-11-04iface-modem: improve logging of user request to delete bearerAleksander Morgado
2022-11-04iface-modem: improve logging of user request to run AT commandAleksander Morgado
2022-11-04iface-modem: improve logging of user request to set current capabilitiesAleksander Morgado
2022-11-04iface-modem: improve logging of user request to create bearerAleksander Morgado
2022-11-04iface-modem: refactor user request to list bearersAleksander Morgado
2022-11-04iface-modem: improve logging in INFO levelAleksander Morgado
2022-11-04log-helpers: add helper to log simple connect propertiesAleksander Morgado
2022-11-04log-helpers: add helper to log 3gpp profileAleksander Morgado
2022-11-04log-helpers: add helper to log bearer propertiesAleksander Morgado
2022-11-04libmm-glib,common: add helpers to build printable stringsAleksander Morgado
2022-11-04log: allow querying whether personal info should be shown or notAleksander Morgado
We need this when building printable representations of helper types like the MMBearerProperties object.
2022-11-04log: new methods to check if a given logging level is enabledAleksander Morgado
There are certain cases where we perform a lot of data processing just for logging purposes. Having methods that let us know whether a given log level will be printed before doing all that data processing is useful.
2022-11-04log: new mm_obj_log() that allows specifying level explicitlyAleksander Morgado
2022-11-04log: new helper to allow printing or hiding personal infoAleksander Morgado
2022-11-04core,log: reduce the log level tag to 3 charactersAleksander Morgado
Just to make all of them the same avoid needing extra whitespaces just for alignment of the text after this tag.
2022-11-04core,log: new 'MSG' log level between 'INFO' and 'WARN'Aleksander Morgado
We're bumping the current "INFO" level messages to the new "MSG" level, also making the new level the default. The old "INFO" level will be used to setup an intermediate level of logging which is not as verbose as "DEBUG" but still provides some capabilities to analyze the behavior of a modem.
2022-11-03base-sim: fix length when reading GID1/GID2Aleksander Morgado
We were attempting to read 15 bytes unconditionally, regardless of the size of the EF_gid1 and EF_gid2 files. This operation would succeed in some SIM cards even if the actual file lengths are shorter: AT+CRSM=176,28478,0,0,15 +CRSM: 144,0,"FFFF" OK But the operation would fail in some other SIM cards due to the length mismatch: AT+CRSM=176,28478,0,0,15 +CRSM: 103,0 OK Using 0 as requested length instructs the modem to read the length specified in the EF status information, which is also the same approach we do in QMI and MBIM. AT+CRSM=176,28478,0,0,0 +CRSM: 144,0,"FFFF" OK
2022-11-01iface-modem-3gpp-profile-manager: Initialize autofreed string to NULLEvangelos Ribeiro Tzaras
This avoids compiler warnings when using -Wmaybe-uninitialized Closes: #653
2022-10-27base-sim: fix loading GID2Aleksander Morgado
We were not even trying to load it if GID1 was successfully loaded.
2022-10-27sim-mbim: read exact GID1/GID2 file sizeAleksander Morgado
2022-10-27mm-broadband-modem-qmi: do not set "enable refresh" in PDC "register" QMI ↵Akash Aggarwal
message If "enable refresh" is set, QMI modem expects an acknowledgement upon receiving a PDC refresh indication, otherwise the modem resets assuming clients are facing an issue in refreshing their cache. Register for PDC refresh indication without setting "enable refresh" TLV. We would still receive the refresh indication to notify that the list of profiles stored has changed and would not have to acknowledge the modem.
2022-10-19core: update copyright yearsAleksander Morgado
2022-10-18broadband-modem-qmi: support for setting up signal thresholdsAkash Aggarwal
2022-10-11mm-iface-modem: always require a SIM card in 3GPP modulesAkash Aggarwal
Avoid removing 3GPP capabilities if sim is absent. Transition to 'Failed' state for 3GPP capable devices if sim is absent.
2022-10-10foxconn: remove QMI_SERVICE_FOX from Generic MBIM modem objectFanice.luo
Allocate the fox_client to attempt loading the firmware info using QMI_SERVICE_FOX,and release it when no longer needed. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/599
2022-10-06sms-part-3gpp: coding style fixesAleksander Morgado
2022-10-06broadband-modem-mbim: ensure message array contains valid PDUsAleksander Morgado
When reading SMS PDUs during initialization or upon a notification of a new PDU arriving, we should ensure that the array of messages returned is of type PDU, and also validate whether the array contains valid PDUs before processing them, otherwise we could be dereferencing invalid memory. This is trying to fix crashes like the following: 0x000059502b7ebaa2(ModemManager -mm-broadband-modem-mbim.c:7816)add_sms_part 0x000059502b7f5cf5(ModemManager -mm-broadband-modem-mbim.c:7849)sms_read_query_ready 0x000079e48edb36d3(libgio-2.0.so.0 -gtask.c:1230)g_task_return_now 0x000079e48edb2732(libgio-2.0.so.0 -gtask.c:1300)g_task_return 0x000079e48ee64ce5(libmbim-glib.so.4 -mbim-device.c:240)transaction_task_complete_and_free 0x000079e48ee6665f(libmbim-glib.so.4 -mbim-device.c:1017)data_available 0x000079e48ec65463(libglib-2.0.so.0 -gmain.c:3417)g_main_context_dispatch 0x000079e48ec6576e(libglib-2.0.so.0 -gmain.c:4211)g_main_context_iterate 0x000079e48ec659e2(libglib-2.0.so.0 -gmain.c:4411)g_main_loop_run 0x000059502b7796b1(ModemManager -main.c:217)main 0x000079e48e9f77a7(libc.so.6 + 0x000227a7)__libc_start_main 0x000059502b7794b9(ModemManager + 0x0005f4b9)_start 0x00007ffef825c6a7
2022-10-05sim-mbim: fix race condition when sync requested during preloadAleksander Morgado
This is an extremely tricky race condition. * During SIM object initialization, we try to load SIM type (first item loaded). * MMSimMbim SIM type loading step runs preload_subscriber_info(), which: ** Sets self->priv->preload = TRUE; so that it is not run anymore. ** Sets the sync monitor to clear preloaded info if sync needed. ** Runs the subscriber ready status operation asynchronously. ** Just before the subscriber ready status operation returns, the system goes to sleep. ** The resume logic kicks in, and we flag the modem with sync needed, which clears the self->priv->preload flag. * Then the subscriber ready status operation response arrives, and we store the IMSI and the other things. * When the next initialization step happens, given that self->priv->preload is cleared, we run attempt to run preload_subscriber_info() again, and this time it finds the info like IMSI is already set, so asserts: 0x00007cbcd287523f (libglib-2.0.so.0 - gtestutils.c: 3253) g_assertion_message 0x00007cbcd28752a2 (libglib-2.0.so.0 - gtestutils.c: 3279) g_assertion_message_expr 0x00005cbdab0a2dc0 (ModemManager - mm-sim-mbim.c: 253) subscriber_ready_status_ready 0x00007cbcd29a173b (libgio-2.0.so.0 - gtask.c: 1230) g_task_return_now 0x00007cbcd29a0799 (libgio-2.0.so.0 - gtask.c: 1300) g_task_return 0x00007cbcd2a548e0 (libmbim-glib.so.4 - mbim-device.c: 264) transaction_task_complete_and_free 0x00007cbcd2a562fc (libmbim-glib.so.4 - mbim-device.c: 1047) data_available 0x00007cbcd28534a6 (libglib-2.0.so.0 - gmain.c: 3417) g_main_context_dispatch 0x00007cbcd28537b1 (libglib-2.0.so.0 - gmain.c: 4211) g_main_context_iterate 0x00007cbcd2853a25 (libglib-2.0.so.0 - gmain.c: 4411) g_main_loop_run 0x00005cbdab034d26 (ModemManager - main.c: 217) main 0x00007cbcd25e16c5 (libc.so.6 + 0x000286c5) __libc_init_first 0x00007cbcd25e1781 (libc.so.6 + 0x00028781) __libc_start_main 0x00005cbdab034a40 (ModemManager + 0x00061a40) _start In order to solve this, upon a sync request the ongoing preload operation will be cancelled.
2022-10-05iface-modem-3gpp: disallow Scan() or Register() if LockedAleksander Morgado
We are exporting the 3GPP interface even when locked, so we should cleanly disallow the Scan() and Register() operations on that state, instead of wrongly assuming they may never happen. 0x00007c192134944a (libc.so.6 + 0x0003744a) gsignal 0x00007c19213344e8 (libc.so.6 + 0x000224e8) abort 0x00007c19215c4221 (libglib-2.0.so.0 - gtestutils.c: 3253) g_assertion_message 0x00007c19215c4284 (libglib-2.0.so.0 - gtestutils.c: 3279) g_assertion_message_expr 0x00005b3eec9c9fbc (ModemManager - mm-iface-modem-3gpp.c) handle_scan_auth_ready 0x00007c19216ef75b (libgio-2.0.so.0 - gtask.c: 1230) g_task_return_now 0x00007c19216ee7b9 (libgio-2.0.so.0 - gtask.c: 1300) g_task_return 0x00005b3eec99a5ef (ModemManager - mm-dispatcher-fcc-unlock.c: 69) dispatcher_run_ready 0x00007c19216ef75b (libgio-2.0.so.0 - gtask.c: 1230) g_task_return_now 0x00007c19216ef78e (libgio-2.0.so.0 - gtask.c: 1244) complete_in_idle_cb 0x00007c19215a2486 (libglib-2.0.so.0 - gmain.c: 3417) g_main_context_dispatch 0x00007c19215a2791 (libglib-2.0.so.0 - gmain.c: 4211) g_main_context_iterate 0x00007c19215a2a05 (libglib-2.0.so.0 - gmain.c: 4411) g_main_loop_run 0x00005b3eec998451 (ModemManager - main.c: 217) main 0x00007c19213347a7 (libc.so.6 + 0x000227a7) __libc_start_main 0x00005b3eec998259 (ModemManager + 0x00060259) _start Fixes 83e7600a67d1c5952d0fada07ebe70dfef3492f6
2022-09-30mm-modem-helpers.c: adjust the RING regexAngus Ainslie
The Broadmobi BM818 has some additional carriage returns in the RING message Fixes: #626 Signed-off-by: Angus Ainslie <angus@akkea.ca>
2022-09-30sim-mbim: fallback to AT commands if reading GID via MBIM failsAleksander Morgado
Older MBIM modems don't support the low level UICC reading extension defined by Microsoft. In those case, fallback to reading the GID values using AT commands wherever possible.
2022-09-30base-sim: implement GID1 and GID2 loading using AT commandsAleksander Morgado
2022-09-27broadband-modem-qmi: select last used level when enabling SARAleksander Morgado
Same as we do in the MBIM protocol implementation.
2022-09-27iface-modem-sar: report updated level on SAR enableAleksander Morgado
The SAR enable operation may be selecting an explicit SAR level by itself, so make sure the protocol implementation reports back to the interface the default level that was used while enabling SAR. No level change is reported in the interface if the SAR is being disabled.
2022-09-27iface-modem-sar: avoid changing level if already in the target levelAleksander Morgado
2022-09-27iface-modem-sar: avoid changing state if already in the target stateAleksander Morgado
2022-09-27iface-modem-sar: disallow changing SAR level if SAR disabledAleksander Morgado
This was already forbidden in the MBIM implementation, and we should also have it in the QMI implementation, so just make it a generic check in the interface.
2022-09-27iface-modem-sar: fix set power level async method completionAleksander Morgado
Not a big deal because both enable_finish() and set_power_level() finish were doing the same thing until a recent change.
2022-09-27broadband-modem-qmi: attempt to preallocate SAR clientAleksander Morgado
Otherwise the SAR support check will fail.
2022-09-27broadband-modem-qmi: Implement the SAR interfaceMadhav
Implement the sar interface for QMI modems.
2022-09-26iface-modem-3gpp-profile-manager: fix requested IP type normalizationAleksander Morgado
mm_iface_modem_3gpp_profile_manager_set_profile() was changed so that the input profile object was not touched, and instead a copy of the same would be used within the method. Unfortunately, that change missed the update of the IP type normalization step, which would end up modifying the original settings instead of the newly created copy. Fixes 7464940971ded3d550217872b42fef9f3120b1bf
2022-09-20iface-modem-3gpp: helpers to check if specific domains are supportedAleksander Morgado
2022-09-20iface-modem-3gpp: allow applying domain registration updates altogetherAleksander Morgado
When processing QMI and MBIM messages to report domain registration updates, we should do that altogether so that we don't report bogus transitions to idle if the registration state switches from one domain to another. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/629
2022-09-20iface-modem-3gpp: fix clearing 5GS reg status if explicit registration failsAleksander Morgado
2022-09-19mm-iface-modem: don't attempt to check lock status when current active slot ↵Jack Song
have eSIM without profiles Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/630
2022-09-16enum, bearer: added non-ip bearerAlexey Orishko