Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
wwan qcdm port is not a serial port, calling config_fd on it
will always fail, i.e.:
ModemManager[124587]: <debug> [1619584182.125262] [wwan0p1QCDM/probe] probing QCDM...
ModemManager[124587]: <debug> [1619584182.125398] [wwan0p1QCDM/qcdm] opening serial port...
ModemManager[124587]: <debug> [1619584182.151759] [wwan0p1QCDM/qcdm] failed to configure serial device
ModemManager[124587]: <warn> [1619584182.151836] [wwan0p1QCDM/qcdm] failed to open serial device
ModemManager[124587]: <warn> [1619584182.170152] [plugin-manager] task 1,wwan0p1QCDM: error when checking support with plugin 'generic': (wwan/wwan0p1QCDM) Failed to open QCDM port: Failed to open QCDM port: -2
|
|
|
|
FIREHOSE ports are used for firmware updates which are done
independently from ModemManager, so we should ignore those ports.
A similar change was originally made by Loic Poulain here:
https://gitlab.freedesktop.org/loicpoulain/ModemManager/-/commit/32b0eb79cdbb37afe33abb72fd948be3cbaf6a2d
|
|
Recent changes in the WWAN framework in the kernel changed the WWAN
port names from e.g. "wwan0p1AT" and "wwan0p2QMI" to "wwan0at0" and
"wwan0qmi0" [1, 2]. This means that the udev rules no longer match
since AT/QMI are now lower-case and no longer at the end of the name.
However, recently additionally a "type" sysfs attribute was added
for all WWAN ports [3], which makes it much more reliable to match
the WWAN port names without relying on their exact device name.
Add some additional udev rules to apply the port hints based on the
"type" sysfs attributes. This fixes the port enumeration on newer
Linux kernels that include the aforementioned commits.
Note that we still need to keep the old udev rules for now since
Linux 5.13 does not have the "type" attribute yet.
[1]: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=392c26f7f133b9f09e5f58db1ce6ef4b3b4df49f
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=f458709ff40b0d992fec496952f79c7820dd3fde
[3]: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=b3e22e10fdda8e7be3830289a4a63ae8b88d450c
|
|
Explicitly ignore the "wwan_dev" device as it is not associated with
separate ports (which is what MM needs), but with the whole device
instead.
See https://lists.freedesktop.org/archives/modemmanager-devel/2021-May/008629.html
|
|
This reverts commit 6ffe84a122b9a79a8f0951af5ee5075f16726bdd.
|
|
This message is too specific, and there are a lot of cases where it
wouldn't apply.
E.g. when a MBIM module is stuck in low power mode due to some other
reason (like hardware rfkill), this message would pop up to the users
and completely confuse them.
|
|
|
|
QLWURCs are not ignored and causes calls to be rejected in some cases
|
|
Having a switch() for the MBIM services when processing indications
forces us to update it on every new MBIM service added to libmbim,
because we build with -Wswitch-enum by default.
This warning type is extremely useful, and we should not stop using
it, so let's simplify a bit the indication handling code and skip
using a switch().
There are right now only 4 different service indications expected, so
it shouldn't be a big deal.
|
|
After fwupd upgrade with mbim-qdu method, MM sometimes generate plugin failed with the regenerated MHI driver.
This patch increases the mbim_device_open_full timeout from 30 seconds to 45 seconds to prevent such issue.
Signed-off-by: Jarvis Jiang <jarvis.w.jiang@gmail.com>
|
|
Reported at https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1371
|
|
Implement connection status reloading for MBIM based bearers.
Based on a patch by Dylan Van Assche <me@dylanvanassche.be>
|
|
The original load_connection_status() method would return an
UNSUPPORTED error if connection monitoring wasn't required (which is
the default in most QMI modems).
The new reload_connection_status() method requires the check to always
be done unconditionally.
We take most of the original logic in the load_connection_status() for
the new reload_connection_status(), and we add the UNSUPPORTED error
logic exclusively in the new load_connection_status().
|
|
Some of the AT-based connection methods don't have any way to query
connection status, or we don't have a proper implementation for those
yet. Ignore the reload operation in all those.
|
|
The load_() method is used for connection monitoring; while the
reload_() method is used to sync connection status after a
suspend/resume operation. The same method can be used for both things
in the Cinterion plugin.
|
|
The load_() method is used for connection monitoring; while the
reload_() method is used to sync connection status after a
suspend/resume operation. The same method can be used for both things
in the Sierra plugin.
|
|
The load_() method is used for connection monitoring; while the
reload_() method is used to sync connection status after a
suspend/resume operation. The same method can be used for both things
in the Novatel LTE plugin.
|
|
The load_() method is used for connection monitoring; while the
reload_() method is used to sync connection status after a
suspend/resume operation. The same method can be used for both things
in the case of AT+CGACT? based modems.
|
|
There is no input cancellable in the method, so the GTask will never
get cancelled from the outside.
|
|
Do not launch N checks for N bearers and ignore their result. Instead,
go one by one, and report errors one by one.
|
|
Just triggering a connection status reload won't change the actual
bearer object state.
We change the signature of the reload_connection_status_finish()
method so that it returns the actual reloaded bearer connection
status, and so both the load_ and reload_ methods can be implemented
with exactly the same method, something that was not possible before.
Once we get the new connection status reloaded, we apply it in the
bearer object only if it's DISCONNECTED (and it wasn't DISCONNECTED
before). This should cover the true real case we're interested in, and
nothing else (i.e. we won't overcomplicate the logic attempting to
handle disconnected->connected transitions detected in the sync()
operation).
|
|
If we called the class reload_connection_status() method, we should
call the class reload_connection_status_finish() as well.
|
|
|
|
Refresh connection status on resume to confirm
that the connection bearers are still valid.
|
|
There is no input cancellable in the method, so the GTask will never
get cancelled from the outside.
|
|
when mm_iface_modem_refresh_signal() is called, we'll restart the
signal quality refresh logic already, there is no need to request
an enforced start.
The enforced start was also modifying ctx->enabled unconditionally,
which is really not ok. This logic would be enabled only when we're
registered, and that logic is fine, no need to change that.
|
|
We made sure that the after resume synchronization was only started on
modems that had been enabled (and so unlocked). If we detect a locked
SIM card during the sync operation, it's either because the SIM card
was swapped, or because the modem was fully shutdown during the
suspension (and so the SIM requires SIM-PIN again).
Either way, we cannot sync the state cleanly at this point, we must
trigger a full modem reprobe in order to move back the modem state to
Locked.
|
|
|
|
|
|
Refresh signal strength and access technologies,
check for SIM swaps, and check if the SIM is locked.
The modem may have switched to a different
access technologies or have a different signal strength
when resuming. Moreover, the user may swap or remove
the SIM when suspended.
|
|
|
|
When calling an async method ona given type, the convention is to use
the same type in the corresponding ready() method, so that we can use
it without additional casts on the finish().
|
|
There is no input cancellable in the method, so the GTask will never
get cancelled from the outside.
|
|
It doesn't give us any valuable information, so just remove it.
|
|
|
|
|
|
On resume, refresh the EPS bearers and 3GPP registration
as the registration and bearers may expired during suspend.
|
|
There is no input cancellable in the method, so the GTask will never
get cancelled from the outside.
|
|
|
|
On resume, fetch the current network time as
the network time may be changed when suspended.
|
|
The synchronization after resume should only be needed on enabled
modems, as otherwise there is really no chance that the state of the
modem may have changed during suspend.
E.g. if a modem is failed because it doesn't have a SIM card, or if
the SIM-PIN is locked, or if the modem has never been enabled, there
is no point in attempting to synchronize the runtime state of the
modem.
|
|
There is no input cancellable in the method, so the GTask will never
get cancelled from the outside.
|
|
|
|
|