Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
It may happen that the lifecycle of a QmiDevice and its allocated
QmiClients is managed in a different place of where the QmiClient
commands are run, which may keep a QmiClient reference of its own.
In this setup, it may happen that the QmiDevice is closed and all
clients released while there are still full QmiClient references
around that the client may try to use. When this happens, the client
operation didn't fail with an error, instead it would just issue a
'QMI_IS_DEVICE (self)' failed warning and go on.
...
[/dev/cdc-wdm0] Releasing 'dms' client with flags 'release-cid'...
[/dev/cdc-wdm0] Unregistered 'dms' client with ID '10'
[/dev/cdc-wdm0] sent message...
<<<<<< RAW:
<<<<<< length = 17
<<<<<< data = 01:10:00:00:00:00:00:0C:23:00:05:00:01:02:00:02:0A
[/dev/cdc-wdm0] sent generic request (translated)...
<<<<<< QMUX:
<<<<<< length = 16
<<<<<< flags = 0x00
<<<<<< service = "ctl"
<<<<<< client = 0
<<<<<< QMI:
<<<<<< flags = "none"
<<<<<< transaction = 12
<<<<<< tlv_length = 5
<<<<<< message = "Release CID" (0x0023)
<<<<<< TLV:
<<<<<< type = "Release Info" (0x01)
<<<<<< length = 2
<<<<<< value = 02:0A
<<<<<< translated = [ service = 'dms' cid = '10' ]
qmi_device_command_full: assertion 'QMI_IS_DEVICE (self)' failed
<warn> [062790.772245] checking if connected failed: Transaction timed out
<debug> [062793.774332] Couldn't refresh CDMA registration status: 'QMI operation failed: Transaction timed out'
<debug> [062793.774398] Couldn't refresh signal quality: 'Transaction timed out'
<debug> [062793.774414] Periodic signal checks not rescheduled: disabled
qmi_device_command_full: assertion 'QMI_IS_DEVICE (self)' failed
<warn> [062795.773381] Reloading stats failed: QMI operation failed: Transaction timed out
<warn> [062795.773425] checking if connected failed: Transaction timed out
qmi_device_command_full: assertion 'QMI_IS_DEVICE (self)' failed
qmi_device_command_full: assertion 'QMI_IS_DEVICE (self)' failed
...
We avoid this situation by exposing a new 'client-valid' property that
users may check before running any command.
This same check is now also internally done by all commands so that we
cleanly error out if we detect that the client isn't valid.
|
|
And corresponding '--dms-swi-get-usb-composition' and
'--dms-swi-set-usb-composition=[x]' qmicli actions.
Based on Bjørn Mork's swi_setusbcomp.pl tool:
https://git.mork.no/?p=wwan.git;a=blob_plain;f=scripts/swi_setusbcomp.pl
$ sudo qmicli -d /dev/cdc-wdm2 --dms-swi-get-usb-composition
[/dev/cdc-wdm2] Successfully retrieved USB compositions:
USB composition 6: DM, NMEA, AT, QMI
[*] USB composition 8: DM, NMEA, AT, MBIM
USB composition 9: MBIM
$ sudo qmicli -d /dev/cdc-wdm2 --dms-swi-set-usb-composition=9
[/dev/cdc-wdm2] Successfully set USB composition
You may want to power-cycle the modem now, or just set it offline and reset it:
$> sudo qmicli ... --dms-set-operating-mode=offline
$> sudo qmicli ... --dms-set-operating-mode=reset
$ sudo qmicli -d /dev/cdc-wdm2 --dms-set-operating-mode=offline
[/dev/cdc-wdm2] Operating mode set successfully
$ sudo qmicli -d /dev/cdc-wdm2 --dms-set-operating-mode=reset
[/dev/cdc-wdm2] Operating mode set successfully
(module reboots)
$ sudo qmicli -d /dev/cdc-wdm2 --dms-swi-get-usb-composition
[/dev/cdc-wdm2] Successfully retrieved USB compositions:
USB composition 6: DM, NMEA, AT, QMI
USB composition 8: DM, NMEA, AT, MBIM
[*] USB composition 9: MBIM
|
|
|
|
|
|
Using an intermediate constant variable breaks compilation with C
compilers, as these variables cannot be used as initializers.
Instead, define a deprecated type and cast all deprecated symbols to
that type. We lose the information about what the new replacement
symbol is, but we don't break compilation.
Also, add QMI_DISABLE_DEPRECATED guards around deprecated symbols. So
that when this symbol is defined, e.g. via CFLAGS, building a program
that uses the libmbim API will fail if the program references
deprecated symbols. For now we just use it to keep gtk-doc-scan happy
and avoid unnecessary warnings.
Equivalent to ModemManager commits eedd4ab4457 and f0bb6ef856.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
They all had the WDS prefix instead of WMS, so fix that.
We include the old names in -compat to avoid breaking API.
|
|
|
|
|
|
|
|
The sync close operation that was implemented was partially useless
because the source responsible for I/O was scheduled in the main
context, so we were really relying on that main context to be still
running to properly finish the operation. i.e. a qmi_device_close()
after the default main loop was stopped would always end up with a
timeout error, as the response was never read.
So, we now modify the sync operation so that it doesn't do any explicit
wait for the response, we just issue the MBIM close command.
And we provide a new async operation that may be used to wait for the
MBIM close response.
|
|
This is a vendor-specific message with id 0x5556.
E.g. for a Dell DW5570:
[/dev/cdc-wdm1] Successfully retrieved current firmware:
Model: MC8805
Boot version: SWI9X15C_01.08.16.02 r15159 carmd-fwbuild1 2013/05/16 17:41:33
AMSS version: SWI9X15C_01.08.16.02 r15159 carmd-fwbuild1 2013/05/16 17:41:33
SKU ID: 1101798
Package ID: 1101798_9902617_SWI9X15C_01.08.16.02_00_Dell_001.005_000
Carrier ID: 12
Config version: unknown
And for a MC7455:
[/dev/cdc-wdm1] Successfully retrieved current firmware:
Model: MC7455
Boot version: SWI9X30C_02.14.03.00
AMSS version: SWI9X30C_02.14.03.00
SKU ID: 1102476
Package ID: unknown
Carrier ID: 202
Config version: 000.008_000
|
|
We want to support non-standard messages that may be encoded with
different TLVs depending on how the vendor implemented them.
Anyway, right now this is really just to support the correct translation
of TLVs and message contents in the get_printable() methods.
The support is only included for QMI request/responses, and not for QMI
indications. This is because the library knows in which moment the
requests are created (and can apply the same rules to the matched
response when it is received). For the indications, though, there is no
such context configurable yet.
|
|
Also, define a new QmiDmsHpDeviceMode enumeration with the modes found
out of the HPlt4120.
Note this command is flagged as 'HP' because it only applies to HP
devices, at least only to the HPlt4120.
|
|
Note that this list isn't really complete as we don't have e.g. the new
QMI commands supported in the 1.16 release. We should fix that soon.
Anyway, we at least avoid the following warning:
make[5]: Entering directory 'docs/reference/libqmi-glib'
DOC Building HTML
DOC Fixing cross-references
html/libqmi-glib-Version-and-feature-checks.html:168: warning: no link for: 'api-index-1.16' -> (1.16).
|
|
This command is the one used by Sierra modems to get into Boot & Hold
mode, and very likely has a set of TLVs that we don't know about. For
now, just an empty message.
|
|
|
|
Added calls for configure hp4120 LTE modem
|
|
Based on a patch from Aliaksandr Barouski <alex.borovsky@gmail.com>
https://bugs.freedesktop.org/show_bug.cgi?id=96465
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
We provide a compatibility symbol to try to provide a better backwards
compatibility.
|
|
Commit 7ca279e9a42 introduced a couple of method renames that we now try to
recover in order to provide a better backwards API compatibility.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Userspace is in charge of defining the data format to be used in the WWAN net
interface, both in the device itself (e.g. through CTL or WDA requests) and also
in the kernel (e.g. through /sys/class/net/<WWAN>/qmi/raw_ip sysfs files).
These new API methods allow to query and modify the data format expected by the
kernel.
|
|
|
|
|