Qualcomm suggests to use mux id values >= 0x81: though this does not
seem a strict mandatory rule, there are scenarios in which the usage of
a specifix mux id is required otherwise various kind of issues could
happen (e.g. call failure, limited throughput...).
A new ID_MM_INITIAL_QMAP_MUX_ID udev tag allows setting the first initial
mux id value to be used when creating the multiplexed data connection.
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
Latest libqmi adds QMI_NAS_RADIO_INTERFACE_NO_CHANGE which will
cause failures when building with -Wall if NO_CHANGE isn't handled
in switch() statements. So we add that. But then of course you can't
build with older libqmi because it doesn't have NO_CHANGE.
So just bump the requirement.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
On SDM845 (OP6T) modem always starts with engine lock 'all'.
It doesn't allow to read assistance server settings at the beginning.
QMI call 'Get Predicted Orbits Data Source' (0x0036) fails with general
failure. As a result it's not possible to inject assistance data using
'mmcli -m any --location-inject-assistance-data=<file>'.
Commit 90843b7a0d ("shared-qmi: Lock and unlock GPS engine when
starting and stopping") unlocks engine on GNSS start, that allows
geolocation to work on SDM845, but it locks engine back on GNSS stop.
As a result after GNSS stop it's not possible to inject XTRA data again.
On EG25-G engine lock settings is stored in NV storage and is preserved after
modem restart. By default engine lock is 'none'. But currently on GNSS
stop this value is changed to 'all', that blocks location engine.
If previous ModemManager version is installed after
stopping geolocation and locking the engine, geolocation will not
work, since the engine is still locked and modem restart will not help.
This commit unlocks engine on modem start so all following operations
with an engine succeed. Engine isn't locked back.
Tested on SDM845 (OP6T) and Quectel EG25-G.
Fixes: 90843b7a0d ("shared-qmi: Lock and unlock GPS engine when starting and stopping")
Signed-off-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
Since c2e3a8c10e, the generic plugin was
not able to attach to virtual ports, because they have no associated
driver, and the probe fails with "port filtered as couldn't retrieve
driver". It seems that this driver check was accidentially introduced
and is not really necessary, as there isn't a special "XMMRPC driver"
to blacklist.
Signed-off-by: Sonya Sireneva <sleirsgoevy@gmail.com>
In merge request !1405, when handling subscriber_ready_status_ready()
fails, it exits early and allows preload retry without resetting
`self->priv->preload_cancellable`. When the preload_subscriber_info() runs
again, it fails at g_assert check and causes a crash.
Before !1405, `self->priv->preload_cancellable` is reset within
application_list_query_ready().
Signed-off-by: Rukun Mao <rmao@google.com>
mhi_wwan_mbim ends up being detected as mhi-pci-generic, so we need to
look for that in addition to cdc_wwan when doing MBIM data port stuff.
Otherwise devices (various Foxconn X55/X72, Cinterion MV3x, Quectel
EM1xx, Telit FN990) that expose the IP_HW0_MBIM MHI channel won't
correctly clean up data ports on startup, and may not correctly
handle bearer multiplexing.
mhi_net is only used for QMI devices with rmnet so it shouldn't
be involved in the MBIM data path at all.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
Cleaning up multiple active multiplexed bearers causes an assert in
mm_iface_modem_count_bearers since the max number of active bearers
is not properly determined.
Rework the management of the flags in order to better match their
intents, considering that MULTIPLEXED is a subset of ACTIVE/CONNECTED.
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
Before the change, preload is attempted once regardless of its
results. When the first attempt fails, it got stuck and can not get valid
SIM info.
Signed-off-by: Rukun Mao <rmao@google.com>
The device would eventually be automatically probed. Add hints anyway,
as not to waste time with the generic probe.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Function mm_parse_suple_address returns TRUE on valid input data
regardless of its type (URL or IP). As a result
qmi_message_loc_set_server_input_set_ipv4 was always called on valid
data. If URL was provided, then 0.0.0.0 ip address was sent to the
modem instead of provided URL.
Fixes: 6e84f3d459 ("iface-modem-location: validate SUPL server address")
Signed-off-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>