aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-10Revert "iface-modem-signal: send a query after threshold set up"Aleksander Morgado
This reverts commit 17ed63637fea7ab7238880ec5eb75df910355dd2. We were reusing the signal_state_query_ready() callback in the wrong way.
2023-05-10iface-modem-signal: send a query after threshold set upNagi Marupaka
After the setup of threshold for signal state notifications, trigger a query of the current signal state values.
2023-05-10broadband-modem-qmi: enable/disable messaging AT unsolicited events tooSebastian Krzyszkowiak
When the host is resuming from system suspend, QMI indications sent by the modem at resume time can be lost. The exact reason why it happens is still unknown. Until this is fixed, ModemManager currently workarounds that in QMI mode by listening and reacting to AT URCs too, which are being received reliably. In order to achieve that, messaging_setup_unsolicited_events chains the parent's implementation with its own, effectively setting up handlers for both AT and QMI channels. This worked fine on modems such as EG25 which enable SMS indications by default. However, some modems, such as BM818, don't have these indications enabled on boot and don't report incoming messages via AT unless requested via AT+CNMI. To make SMS handling on resume reliable on such modems, make sure that MMBroadbandModemQmi also enables/disables unsolicited events in the same way it already sets up handlers for them. Signed-off-by: Sebastian Krzyszkowiak <dos@dosowisko.net>
2023-05-09libmm-glib,location-3gpp: fix conversion to gulong in ↵Maxim Anisimov
mm_location_3gpp_new_from_string_variant Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
2023-05-03build: unstable release version bump to 1.21.6Aleksander Morgado
2023-05-03shared-qmi: don't assume cancellation signal handler is setup in the ↵Aleksander Morgado
registration wait The cancellation_id will not be set if the cancellable is already cancelled by the time g_cancellable_connect() is called.
2023-05-03shared-qmi: ensure cancellation is setup last in the registration waitAleksander Morgado
register_in_network_cancelled() may be called early if the given cancellable is already cancelled, and if so, we want it to remove the timeout and signal handler, which should have been configured before setting up the cancellation signal handler.
2023-05-03broadband-modem-mbim: group together all runtime state while enabled in its ↵Aleksander Morgado
own struct
2023-05-03bearer-list: rename variables in the foreach contextsAleksander Morgado
So that the variable names in each context identify the action being performed, to easier reading.
2023-05-03broadband-modem-mbim: ignore registration set error if NwError=0 reportedAleksander Morgado
Returning an error in the registration set request completely breaks the async operation requesting the explicit registration, even if the modem may have already been registered via indications while waiting for the set request to be completed. We now ignore the registration set error if it returns a generic failure with NwError=0, as in certain Qualcomm based devices. We ignore unconditionally, without explicitly checking if we're registered or not, because the upper logic will anyway do that. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/723
2023-05-03broadband-modem-mbim: ensure cached state info is reseted on disableAleksander Morgado
So that it is reloaded fresh once re-enabled, otherwise we may be using stale state values that are not in sync with the state reported in the interface skeletons.
2023-05-03iface-modem-3gpp: skip interface updates if it's disabledAleksander Morgado
E.g. we don't want to update the 3GPP registration state to "idle" if the interface has already been disabled: <msg> [1681814812.903723] [modem0] 3GPP registration state changed (idle -> unknown) <inf> [1681814812.903842] [modem0] consolidated registration state: cs 'idle', ps 'idle', eps 'idle', 5gs 'unknown' --> 'unknown' <dbg> [1681814812.906194] [modem0] disabling the Modem interface... <inf> [1681814812.911148] [modem0] disabled modem <dbg> [1681814812.913453] [ttyACM0/at] device open count is 0 (close) <dbg> [1681814812.913629] [ttyACM0/at] closing serial port... <dbg> [1681814812.915559] [ttyACM0/at] serial port closed <msg> [1681814812.916569] [modem0] state changed (disabling -> disabled) <dbg> [1681814868.945069] [/dev/cdc-wdm4] number of consecutive timeouts: 1 <msg> [1681814868.950724] [modem0] 3GPP registration state changed (unknown -> idle) <inf> [1681814868.950885] [modem0] consolidated registration state: cs 'idle', ps 'idle', eps 'idle', 5gs 'unknown' --> 'idle' <msg> [1681814868.951797] [modem0] state changed (disabled -> enabled) <dbg> [1681814868.955740] [modem0] registration in network: cancelled <wrn> [1681814868.958562] [modem0] registration in network failed: Operation was cancelled
2023-05-03iface-modem-3gpp: coding style updates in initialization sequenceAleksander Morgado
2023-05-03iface-modem-3gpp: coding style changes in initial EPS bearer update logicAleksander Morgado
2023-05-03iface-modem-simple: improve logging and cancellability in network ↵Aleksander Morgado
registration sequence
2023-05-03iface-modem-3gpp: coding style updates in enabling/disabling sequencesAleksander Morgado
2023-05-03broadband-modem: explicitly abort ongoing attempt when disablingAleksander Morgado
2023-05-03bearer-list: new common method to disconnect one or all bearersAleksander Morgado
2023-05-03iface-modem-3gpp: allow cancelling the wait for packet service stateAleksander Morgado
When a request to disable the modem arrives while the packet service state wait is ongoing we were not correctly cancelling the operation. The main reason for this is that this operation does not change the modem state, and so the "wait for final state" logic in the disabling sequence was not being considered. We solve this by plugging in the Simple.Connect() operation cancellable in the wait for packet service state operation. The connection attempt will be cancelled during the disabling sequence as well, and when that happens we will explicitly halt the packet service state wait as well.
2023-05-03iface-modem-3gpp: minor rename of variablesAleksander Morgado
2023-05-03broadband-modem-qmi: use DSD system status to report packet service stateAleksander Morgado
We now support modem-reported packet service state, instead of guessing it in the 3GPP interface logic. The DSD system status reporting a valid access technology is an indication that the packet service is ready. Instead of holding back the registration status until the DSD system status reports a valid value, we will now report the modem as registered, and bind the DSD system status exclusively to the packet service status. In the simple connection attempt we're already waiting first for being registered, and then for being attached in PS.
2023-05-03broadband-modem-mbim: minor refactor in speeds reportingAleksander Morgado
2023-05-03broadband-modem-mbim: report packet service state updatesAleksander Morgado
Use the Packet Service messages to report the state of PS domain, instead of guessing.
2023-05-03iface-modem-3gpp: don't guess packet service state if modem can report itAleksander Morgado
In certain protocols like QMI or MBIM we may be able to report an exact packet service state, so there is no need to guess it, as the guess may not always be right. The logic will track automatically whether modem-reported packet service states are available, and use them if so. Otherwise, it'll try to guess as we were doing before (e.g. if registered in EPS, packet service is considered attached).
2023-04-27libmm-glib: separate files for flags and enums typesAleksander Morgado
This allows us to skip needing to include the non-existent build_string_from_mask() or get_string() counterparts in the documentation index.
2023-04-27build-aux,mkenums: use mixed enums+flags template without docs in daemonAleksander Morgado
2023-04-27build-aux,mkenums: import custom mkenums tool from libqmi/libmbimAleksander Morgado
We're going to use certain new features included in the custom tool.
2023-04-19iface-modem-3gpp: don't compare profile-name on attach APNsAndrew Lassalle
When a request to set a new eps bearer settings is received, ignore the profile-name when comparing the previous configuration with the new one, since the modem's profile might already have a name that won't match the settings provided by the user. Profile names are used in QMI modems. If the profile name does not match the existing one, the modem will detach and reattach to the network.
2023-04-19helpers-mbim: fix MMSignal selection based on data classAleksander Morgado
MbimDataClass is a flags bitmask, not an enumeration. This logic was broken if the reported data class was e.g. 4G+5GNSA.
2023-04-14docs: update copyrightAleksander Morgado
2023-04-14daemon: update copyrightAleksander Morgado
2023-04-14cli: update copyrightAleksander Morgado
2023-04-13udev: new ID_MM_REQUIRED tagAleksander Morgado
Users with QMI or MBIM capable modems may want to ensure that these are never managed using plain AT commands, as that also involves using PPP. This fallback to AT could happen if the QMI or MBIM port probing fails for whatever reason. The new `ID_MM_REQUIRED` udev tag allows specifying that a given port MUST be successfully grabbed when creating a new modem object, or otherwise the modem object will not be created at all (even if there are other fallback control ports like AT that could have been used). Use this tag with caution. It is assumed that when this tag is used some other external process may be monitoring the existence of the modem object in DBus as exposed by ModemManager, and if it does not appear for any reason then the modem would be reseted with some other mechanism (e.g. GPIOs, if available). If no such mechanism to autorecover the modem is in place, using this tag may leave the modem exposed in the kernel but ignored by ModemManager. This tag must be applied on the specific port for which the existence and usability must be ensured. E.g. flagging the MBIM port of the Fibocom L850 module as required: $ vim /lib/udev/rules.d/78-mm-test.rules ACTION!="add|change|move|bind", GOTO="mm_test_rules_end" SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}" ATTRS{idVendor}=="2cb7", ATTRS{idProduct}=="0007", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_REQUIRED}="1" LABEL="mm_test_rules_end" $ sudo udevadm control --reload $ sudo udevadm trigger $ sudo udevadm info -p /sys/class/usbmisc/cdc-wdm0 ... E: ID_MM_REQUIRED=1 E: ID_MM_CANDIDATE=1
2023-04-13plugin: refactor how list of probe flags is builtAleksander Morgado
To make it clearer that the initial list of flags must be the one based on which ones are expected in the subsystem and which one the plugin is requesting.
2023-04-13port-probe: perform auto detection of port type hints for wwanAleksander Morgado
We can remove the port type hint udev tags for the wwan subsystem, as that logic is now incorporated in the port type hint processing logic in the daemon itself. This makes it clearer to know what exact hints are being used, as the logic is in a single place and it has proper logging of all possible cases.
2023-04-13port-probe: perform auto detection of port type hints for cdc_wdmAleksander Morgado
Do not do this in the plugin; instead, do it along with the logic that looks for port type hints in udev, so that we can properly warn if things don't match.
2023-04-13port-probe: improve logging of detected port type hints in udev tagsAleksander Morgado
Explicitly log when a tag is found, and also warn if too many por type hints are provided in the same port.
2023-04-13port-probe: simplify AT port type hints handlingAleksander Morgado
When processing the hints for port probing we don't care if the AT port is flagged as primary or secondary.
2023-04-13sierra: add port hints for HL7812Marcus Folkesson
Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
2023-04-12port-serial: close_force() may dispose the last object referenceAleksander Morgado
2023-04-11build: align GLIB_VERSION_MIN_REQUIRED with glib version we actually requireLubomir Rintel
Now that we've dealt with everything that has been deprecated since glib-2.44 until glib-2.56 (which we check), we can enable warnings that guard against using the deprecated constructs.
2023-04-11base-modem-at: use better names for pairs of dependent cancellablesLubomir Rintel
We cancel AT commands (or sequences) on cancellation of the modem's cancellable as well as of the optional user-provided one. However, the GTask can be associated with only one. That's okay if the user didn't supply one -- we just use the modem's cancellable only. Otherwise we chain the cancellables together (also cancel the user one with the modem one) at cost of some extra complexity. This aims to make the above a little clearer by using hopefully better names. Suggested-by: Aleksander Morgado <aleksandermj@chromium.org>
2023-04-11base-modem-at: make abort_task_if_port_unusable() unref the GTaskLubomir Rintel
Aleksander seems to prefer it this way. Looks better. Suggested-by: Aleksander Morgado <aleksandermj@chromium.org>
2023-04-11base-modem: remove mm_base_modem_get_cancellable()Lubomir Rintel
No users left for the getter that takes a reference after a port of MMBaseModemAT to GTask. peek_cancellable() is used instead, because the GTask constructor takes a reference itself.
2023-04-11base-modem-at: port mm_base_modem_at_{command,sequence}_full() to GTaskLubomir Rintel
Use GTask API in place of the deprecated GSimpleAsyncResult.
2023-04-11port-serial-at: port mm_port_serial_at_command() to GTaskLubomir Rintel
Use GTask API in place of the deprecated GSimpleAsyncResult.
2023-04-11port-serial-at: make mm_port_serial_at_command_finish() transfer ownershipLubomir Rintel
This will make it slightly easier to port mm_port_serial_at_command() to use GTask, since we won't have to keep a pointer to the result in GTask after _finish() has been called. In most cases the caller needs the value anyway, so this doesn't add too much hasle.
2023-04-11port-serial: port mm_port_serial_command() to GTaskLubomir Rintel
Use GTask API in place of the deprecated GSimpleAsyncResult.
2023-04-11iface-modem: fix incorrectly halted periodic signal checksAleksander Morgado
Whenever an explicit signal refresh was requested we would flag the check as ongoing but never reset the flag, so it would never attempt to reload it again. Fixes 0080ed612d0a412c5794059a93ed30ca07103b79 Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/702
2023-04-11helpers-qmi: support new personalization feature status typeAleksander Morgado
The personalization feature enum used in "card status" is different to the one used in other UIM operations like "depersonalization". libqmi dependency updated to 1.33.6 to ensure we can use the new types.