aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2021-09-10build,meson: Fix suspend/resume optionIñigo Martínez
The suspend/resume option does not build properly if journal option is disabled. This is beacause the journal option is check to add suspend/resume code. It has been fixed by replacing journal option check by the suspend/resume option.
2021-09-10core: remove execution bit from file modes in source filesAleksander Morgado
2021-09-08broadband-modem-qmi: don't error out on empty call listAleksander Morgado
Only error out if the required TLVs are missing.
2021-09-08iface-modem-voice: avoid warning with -Wincompatible-pointer-typesAleksander Morgado
../src/mm-iface-modem-voice.c: In function ‘mm_iface_modem_voice_reload_all_calls’: ../src/mm-iface-modem-voice.c:2549:64: warning: passing argument 2 of ‘((MMIfaceModemVoice *)g_type_interface_peek((void *)((GTypeInstance *)self)->g_class, mm_iface_modem_voice_get_type()))->load_call_list’ from incompatible pointer type [-Wincompatible-pointer-types] 2549 | reload_all_calls_ready, | ^~~~~~~~~~~~~~~~~~~~~~ | | | void (*)(MMIfaceModemVoice *, GAsyncResult *, GTask *) {aka void (*)(struct _MMIfaceModemVoice *, struct _GAsyncResult *, struct _GTask *)} ../src/mm-iface-modem-voice.c:2549:64: note: expected ‘GAsyncReadyCallback’ {aka ‘void (*)(struct _GObject *, struct _GAsyncResult *, void *)’} but argument is of type ‘void (*)(MMIfaceModemVoice *, GAsyncResult *, GTask *)’ {aka ‘void (*)(struct _MMIfaceModemVoice *, struct _GAsyncResult *, struct _GTask *)’}
2021-09-08broadband-modem-qmi: refactor process_get_all_call_info() to avoid handling ↵Aleksander Morgado
the GTask The process_get_all_call_info() was not completing the input GTask on every possible code path (e.g. when remote party number or call info wasn't available). The method is now updated to avoid processing the GTask itself, instead it will attempt to build the call list and return a GError on any kind of failure.
2021-09-08mm-broadband-modem-qmi: add AT URCs fall back for callsDylan Van Assche
Enable AT URCs for calls on top of QMI Voice indications for AT+QMI devices only. Some AT+QMI devices send unreliable QMI indications when the host is resuming. In such cases, AT URCs can be used as a fall back to make calls reliable. While AT+QMI devices relied before on AT commands to load call list information and handle AT URCs for async updates, this is now handled through QMI by forcefully reloading the call list instead of processing the AT URCs. This approach is disabled by default through the MM_IFACE_MODEM_VOICE_INDICATION_CALL_LIST_RELOAD_ENABLED property. This property is set to true in case of QMI modems.
2021-09-08mm-modem-helpers: only parse calls in voice modeDylan Van Assche
Calls in a CLCC response in data-only or fax-only mode do not count as actuall calls.
2021-09-07build: Port to mesonIñigo Martínez
meson is a build system focused on speed an ease of use, which helps speeding up the software development. This patch adds meson support along autotools.
2021-08-31build: use WITH_QRTR exclusively to check for QRTR supportAleksander Morgado
The user may request to disable QRTR support using `--without-qrtr` even if libqmi has QRTR support.
2021-08-27broadband-modem-mbim: Fix password on initial EPS bearer settingsAndrew Lassalle
Currently, we are sending the username twice instead of username and password. Fix the password value.
2021-08-09port-qmi: limit MTU to max RMNET packet sizeAleksander Morgado
The maximum MTU that the master interface can support should be less or equal than RMNET_MAX_PACKET_SIZE, as defined in the `rmnet_private.h` file in the linux sources (not a public header). Only applicable to RMNET link management (i.e. not to qmi_wwan add_mux/del_mux). Fixes https://gitlab.freedesktop.org/mobile-broadband/libqmi/-/issues/71
2021-08-09port-qmi: only consider port setup not needed if data modes matchAleksander Morgado
When not requesting multiplexing support, only assume we don't need any additional setup if multiplexing is disabled AND if the data modes match between kernel and device. This fixes the connection setup in MSM8916 (rpmsg+bam/dmux).
2021-08-09core: new '--test-multiplex-requested' optionAleksander Morgado
The new option will change the default setting in MBIM and QMI bearers to "request" when no explicit "multiplex" configuration is given by the user. This option will help test the multiplexing support in the modems before it's made a default in a future release.
2021-08-09bearer-qmi: don't enable multiplexing by default unless in IPAAleksander Morgado
The next 1.18 release will have multiplexing support, but not enabled by default, to avoid breaking setups that don't expect the new virtual net interfaces for the multiplexed sessions. The exception is Qualcomm SoCs using the IPA driver, where multiplexing is fully required.
2021-08-09bearer-mbim: don't enable multiplexing by defaultAleksander Morgado
The next 1.18 release will have multiplexing support, but not enabled by default, to avoid breaking setups that don't expect the new virtual net interfaces for the multiplexed sessions.
2021-08-09broadband-bearer: default to 'none' if no multiplexing config providedAleksander Morgado
2021-08-09base-bearer: remove default multiplex support symbolAleksander Morgado
Using "requested" as a common default for every possible implementation works, because it can handle setups without multiplexing capabilities (e.g. plain AT+PPP modems) and also setups without non-multiplexing capabilities (e.g. IPA based SoCs). But if we don't want "requested" as default, then there will be failing cases; e.g. we cannot use "none" as default for all as it would break IPA, and we cannot use "required" as default for all as it would break AT+PPP setups. So, remove the common default, it's not flexible enough.
2021-08-09broadband-modem-qmi: fix max bearers computation in IPA based setupsAleksander Morgado
In IPA based setups, there are only multiplexed bearers supported, there is no way to not enable multiplexing. We change the logic that computes the maximum number of multiplexed and non-multiplexed bearers, so that we check which are the current kernel data modes before computing them.
2021-08-09bearer-list: if non-multiplexing not supported, 0 max non-multiplexed bearersAleksander Morgado
2021-08-09bearer-list: if multiplexing not supported, 0 max multiplexed bearersAleksander Morgado
Fixes warnings on AT+PPP based devices: ModemManager[602870]: <debug> [1626948725.168355] [modem0] allowed up to 1 active bearers (ModemManager:602870): GLib-GObject-WARNING **: 12:12:05.185: value "0" of type 'guint' is invalid or out of range for property 'max-active-multiplexed-bearers' of type 'guint'
2021-08-04broadband-modem-mbim: minor rework in SIM event related commentsAleksander Morgado
2021-08-04broadband-modem-mbim: also report as available not fully ready SIMsAleksander Morgado
If a SIM card is not fully ready or in a failed state in the non-active slot, we should still report them as available.
2021-08-04broadband-modem-mbim: deal with the slot info status notification event for DSSAZhangMingjie
2021-08-04kernel-device-generic: Fix ptr_array_add_sysfs_attribute_link_basenameLoic Poulain
A pointer can not be used anymore after its ownership has been transfered using the g_steal_pointer function (pointer is nullified). In this function, g_steal_pointer() is used when inserting 'value' inside the array but can also be subsequently used when dumping 'value' to 'out_value' via g_strdup(). Fix that with simple reordering. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-08-02modem-qmi: implement multiparty functionalitiesJoel Selvaraj
The following functionalities are implemented: 1. Hold all and accept 2. Hangup all and accept 3. Hangup all 4. Join multiparty 5. Leave multiparty 6. Call transfer
2021-08-02modem-qmi: implement call waiting setup and queryJoel Selvaraj
2021-08-02modem-qmi: implement setup in call unsolicited eventsJoel Selvaraj
Handle supplementary service notification indication. Useful to know when existing call is on hold, unheld and waiting.
2021-08-02call-list: allow getting call object by indexJoel Selvaraj
2021-08-02test,modem-helpers: add test case of AT+CPOL? response parsingTeijo Kinnunen
2021-08-02modem-helpers: allow unquoted operator code in AT+CPOL? responseTeijo Kinnunen
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/409
2021-07-30kernel-device: generic: Support ATTR conditionLoic Poulain
Only the plural ATTRS form was checked but we also need to support the single ATTR for matching device's attribute only. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-07-30build: Rename template filesIñigo Martínez
The template files in the `build-aux` directory used in enums sources and headers generation use the `{$name}-template.[ch]` pattern. However, the examples in the official guide[0] and usually GNOME and Freedesktop packages use the `{$name}.[ch].template` pattern. Due to this, the name of the template files and build commands have been changed. [0] https://developer.gnome.org/gobject/stable/glib-mkenums.html
2021-07-27port-mbim: increase timeout of first command after port openAleksander Morgado
The port open operation may be happening very early after the device has booted, so let's give the module some more time to reply the very first MBIM query we do. The original 10s seems to be a bit tight in some cases. See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/405#note_1006746
2021-07-27port-qmi: open without data format explicitly if requested by userAleksander Morgado
Regardless of whether WDA is supported or not.
2021-07-27port-qmi: early check if WDA is supportedAleksander Morgado
We should check if WDA is supported before running any other logic that may change the state of the kernel or the modem. E.g. if we don't do this as the first step, the loading of the supported kernel data modes may end up changing the expected kernel data mode to raw-ip.
2021-07-27port-qmi: cleanly close device if an open operation failedAleksander Morgado
ModemManager[703345]: <debug> [1626962477.971869] [modem0] couldn't open QMI port with data format update: Unexpected kernel data mode: cannot setup using CTL ModemManager[703345]: <debug> [1626962477.972197] [cdc-wdm0/qmi] Opening QMI device... ModemManager[703345]: <debug> [1626962477.972310] [cdc-wdm0/qmi] Checking if QMI device already opening... ModemManager[703345]: <warn> [1626962477.975182] [modem0] couldn't start initialization: QMI device open/close operation in progress
2021-07-27port-qmi: support devices that only run in 802.3 modeAleksander Morgado
E.g. the ZTE MF190 has a very old QMI firmware that is not able to run CTL Set Data Format (raw-ip). ModemManager[666366]: [/dev/cdc-wdm0] QMI Device supports 4 services: ModemManager[666366]: [/dev/cdc-wdm0] ctl (1.2) ModemManager[666366]: [/dev/cdc-wdm0] wds (1.3) ModemManager[666366]: [/dev/cdc-wdm0] dms (1.2) ModemManager[666366]: [/dev/cdc-wdm0] nas (1.0) ModemManager[666366]: [/dev/cdc-wdm0] Setting network port data format... ModemManager[666366]: [/dev/cdc-wdm0] Sent message... <<<<<< RAW: <<<<<< length = 21 <<<<<< data = 01:14:00:00:00:00:00:03:26:00:09:00:10:02:00:02:00:01:01:00:00 ModemManager[666366]: [/dev/cdc-wdm0] Sent generic request (translated)... <<<<<< QMUX: <<<<<< length = 20 <<<<<< flags = 0x00 <<<<<< service = "ctl" <<<<<< client = 0 <<<<<< QMI: <<<<<< flags = "none" <<<<<< transaction = 3 <<<<<< tlv_length = 9 <<<<<< message = "Set Data Format" (0x0026) <<<<<< TLV: <<<<<< type = "Protocol" (0x10) <<<<<< length = 2 <<<<<< value = 02:00 <<<<<< translated = raw-ip <<<<<< TLV: <<<<<< type = "Format" (0x01) <<<<<< length = 1 <<<<<< value = 00 <<<<<< translated = absent ModemManager[666366]: [/dev/cdc-wdm0] Received message... <<<<<< RAW: <<<<<< length = 19 <<<<<< data = 01:12:00:80:00:00:01:03:26:00:07:00:02:04:00:01:00:2D:00 ModemManager[666366]: [/dev/cdc-wdm0] Received generic response (translated)... <<<<<< QMUX: <<<<<< length = 18 <<<<<< flags = 0x80 <<<<<< service = "ctl" <<<<<< client = 0 <<<<<< QMI: <<<<<< flags = "response" <<<<<< transaction = 3 <<<<<< tlv_length = 7 <<<<<< message = "Set Data Format" (0x0026) <<<<<< TLV: <<<<<< type = "Result" (0x02) <<<<<< length = 4 <<<<<< value = 01:00:2D:00 <<<<<< translated = FAILURE: InvalidDataFormat ModemManager[666366]: <debug> [1626961628.001354] [cdc-wdm0/qmi] QMI port open operation failed: QMI protocol error (45): 'InvalidDataFormat' ModemManager[666366]: <warn> [1626961628.002563] [modem0] couldn't start initialization: QMI protocol error (45): 'InvalidDataFormat' ModemManager[666366]: <warn> [1626961628.004181] [modem0] couldn't initialize: 'Modem is unusable, cannot fully initialize'
2021-07-27broadband-modem-qmi: remove trailing whitespacesAleksander Morgado
2021-07-26bearer-mbim: Disable multiplex support for wwan devicesLoic Poulain
WWAN network devices expose link management over netlink (wwan type), but it is not yet supported by libmbim. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-07-26kernel-device: Add get_wwandev_sysfs_pathLoic Poulain
The wwan subsystem is a new bus agnostic framework exposing wwan device and its components (ports, netdev...). It can be useful to get the wwan device a device belongs to Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-07-26mm-sim-mbim: Remove trailing F in ICCIDPavan Holla
QMI modems remove trailing F in 19 digit ICCID. Do the same on MBIM modems for consistency.
2021-07-21port-qmi: open dpm port automatically in case of IPA net driverJoel Selvaraj
Requires IPA kernel driver to expose the TX and RX endpoint IDs through sysfs. Available from linux 5.14 onwards.
2021-07-21base-modem: set net sysfs pathJoel Selvaraj
Required by MMPortQmi for fetching the TX and RX endpoint IDs through sysfs from linux 5.14 onwards
2021-07-21port-qmi: allow MMPortQmi to get the net sysfs pathJoel Selvaraj
Will be set by base modem when organizing ports, similar to net driver name. Required for fetching the TX and RX endpoint IDs through sysfs from linux 5.14 onwards.
2021-07-14broadband-modem-mbim: fix passing new slots array in the set operationAleksander Morgado
2021-07-14broadband-modem-mbim: slot index in MM starts at 1Aleksander Morgado
When querying the slots using "Slot info status", the modem expects the slot index passed in the [0,number_slots-1] range. But for the ModemManager API, the slot indices start at 1; i.e. they are in the [1,number_of_slots] range. Consider that wen reporting the current slot index using MBIM.
2021-07-14mm-broadband-modem-mbim: implement the set_primary_sim_slot() method for DSSAZhangMingjie
2021-07-14mm-broadband-modem-mbim: implement the load_sim_slots() method for DSSAZhangMingjie
2021-07-14modem-qmi: disable call list check in case of QMIJoel Selvaraj
Fixes AT load call list function messing up with the call list in case of both AT+QMI is available for a given modem.
2021-07-13bearer-mbim: never update bearer properties sent by the userAleksander Morgado
We should never run any mm_bearer_properties_set_X() operations ourselves for the properties received by the user, or otherwise the logic comparing the bearers will fail and we may end up creating one bearer per connection attempt.