Commit Graph

5733 Commits

Author SHA1 Message Date
Ben Chan
641e1b8a43 broadband-modem-qmi: add a temporary assure_qmi_client() helper
ensure_qmi_client() uses g_simple_async_report_take_gerror_in_idle(),
which can't be mixed with GTask. To allow migrating remaining
MMBroadbandModemQmi code to use GTask in a series of smaller patches,
this patch adds a temporary assure_qmi_client() helper, which mimics
ensure_qmi_client() but uses g_task_report_new_error(). Once all the
MMBroadbandModemQmi code is migrated to use GTask, we will drop the old
ensure_qmi_client() and renames assure_qmi_client() back to
ensure_qmi_client().
2018-06-02 17:56:59 +02:00
Aleksander Morgado
0e770b13f8 base-modem: setup a maximum number of timeouts also for USB modems
We have a maximum number of timeouts that could be enabled for TTY
modems, e.g. to detect whether the modem is available in the RS232
port or has been unplugged. This was required because RS232 modems
aren't notified via udev, so there was no other way to check presence
of the modem.

But, the same kind of checks may be used in order to detect failed
broken modems. If we have a modem that gets into an unstable state
where no AT port command goes through and all get timed out, we can
definitely flag the modem as invalid and get rid of it. If we don't do
this, we would end up leaving the modem exposed and available for
users of the API, but in a non-working state.

    ....
    <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (registered -> connecting)
    <debug> Launching 3GPP connection attempt with APN 'telefonica.es'
    <debug> Looking for best CID...
    <debug> (ttyACM2) device open count is 2 (open)
    <debug> (ttyACM2): --> 'AT+CGDCONT?<CR>'
    <debug> Unexpected +CGDCONT? error: 'Serial command timed out'
    <warn>  (tty/ttyACM2) at port timed out 9 consecutive times
    <debug> Using empty CID 1 with PDP type 'ipv4'
    <debug> (ttyACM2) device open count is 3 (open)
    <debug> (ttyACM2) device open count is 2 (close)
    <debug> (ttyACM2): --> 'AT+CGDCONT=1,"IP","telefonica.es"<CR>'
    <warn>  Couldn't initialize PDP context with our APN: 'Serial command timed out'
    <debug> Couldn't connect bearer '/org/freedesktop/ModemManager1/Bearer/0': 'Serial command timed out'
    <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connecting -> registered)
    <debug> Couldn't connect bearer: 'Serial command timed out'
    <debug> (ttyACM2) device open count is 1 (close)
    <error> (tty/ttyACM2) at port timed out 10 consecutive times, marking modem '/org/freedesktop/ModemManager1/Modem/0' as invalid
    <debug> Removing from DBus bearer at '/org/freedesktop/ModemManager1/Bearer/0'
    <debug> [device /sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.5] unexported modem from path '/org/freedesktop/ModemManager1/Modem/0'
    <debug> Periodic signal checks disabled
    <debug> (ttyACM2) device open count is 0 (close)
    <debug> (ttyACM2) closing serial port...
    <debug> (ttyACM2) serial port closed
    <debug> (ttyACM2) forced to close port
    <debug> Modem (u-blox) '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.5' completely disposed
2018-06-02 17:54:54 +02:00
Aleksander Morgado
b4748ba674 build: post release version bump to 1.9.0 2018-06-02 17:46:48 +02:00
Aleksander Morgado
c187c5fef5 release: bump version to 1.8.0 2018-06-02 17:33:53 +02:00
Aleksander Morgado
01a5d8a294 NEWS: update for 1.8 2018-06-02 17:33:53 +02:00
Aleksander Morgado
c07382a486 udev: add tags also on bind action
When a new USB device is hotplugged, e.g. a USB<->RS232 converter that
exposes a single ttyUSB0, these udev events happen:

  add  /devices/pci0000:00/0000:00:14.0/usb2/2-1 (usb/usb-device)
  add  /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0 (usb/usb-interface)
  add  /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/ttyUSB0 (usb-serial)
  add  /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/ttyUSB0/tty/ttyUSB0 (tty)
  bind /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/ttyUSB0 (usb-serial)
  bind /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0 (usb/usb-interface)
  bind /devices/pci0000:00/0000:00:14.0/usb2/2-1 (usb/usb-device)

Our udev rules in MM only added tags in the 'add' events, and it looks
like the only ones 'persistent' after this sequence are those of the
last event happening on the specific path.

This meant that all TTY subsystem rules (e.g. ID_MM_CANDIDATE) would
be stored for later check (e.g. if ModemManager is started after these
rules have been applied), which was ok. "udevadm info -p ..." would
show these tags correctly always.

But this also meant that the 'bind' udev event happening for the USB
device didn't get any of our device-specific tags, and so we would be
missing them (e.g. ID_MM_DEVICE_MANUAL_SCAN_ONLY) if MM is started
after the last event has happened. "udevadm info -p ..." would
not show these tags.

Modify all our rules to also run at the 'bind' events.

See, for context:
  https://github.com/systemd/systemd/issues/8221
2018-06-02 16:54:37 +02:00
Aleksander Morgado
4bc7d6862d u-blox: wait 20s before probing TOBY-L200 ports
https://bugs.freedesktop.org/show_bug.cgi?id=106623
2018-06-02 16:51:07 +02:00
Aleksander Morgado
6c37488d4e broadband-modem-mbim: minor function renames for SMS read logic
There are two ways to report new received SMS messages:
  * For class 0 (flash) messages, MBIM_CID_SMS_READ are sent. The SMS
  comes in the MBIM indication itself.
  * For non-class 0 (standard) messages, a
  MBIM_CID_SMS_MESSAGE_STORE_STATUS notifications are sent, the SMS is
  stored and must be read with an additional MBIM request specifying
  storage index.

The names of the functions we had implied the opposite, we were
assuming flash/alert messages were reported via
MBIM_CID_SMS_MESSAGE_STORE_STATUS, not via MBIM_CID_SMS_READ.
2018-05-27 11:23:56 +02:00
Aleksander Morgado
fd3a4d8d8b filter: pci and sdio ports under the platform driver filter
Do not automatically probe serial ports under the 'pci' or 'sdio'
platform drivers unless explicitly tagged with
ID_MM_PLATFORM_DRIVER_PROBE.

  $ realpath /sys/class/tty/ttyS0/
  /sys/devices/pci0000:00/0000:00:16.3/tty/ttyS0
  $ basename $(realpath /sys/devices/pci0000:00/0000:00:16.3/subsystem)
  pci
2018-05-27 11:06:00 +02:00
Aleksander Morgado
38f9510a98 iface-modem-time: don't hold a ref while waiting to be registered
The logic implementing the network timezone loading was holding a
strong reference to the modem (inside the GTask) while waiting to
be registered.

This was triggering some possible memory leaks as the modem object
could have been left around even after the modem was disconnected.
E.g. if the modem booted without antennas plugged in, it was never
getting registered, and if we unplugged it right away in that state,
the network timezone logic would have left a modem reference around
without disposing it.

This issue, combined with e.g. other interfaces relying on disposing
its own logic with the last object reference (e.g. Signal interface
sets up its logic in a context bound to the lifetime of the object)
would mean that a lot of different logic blocks were kept running even
after the modem device was unplugged from the system.

We avoid this issue by making sure that no new additional reference is
taken by the logic in charge of updating the network timezone. We just
make the timezone update context be bound to the lifetime of the
object, as other interfaces do.

While doing this, we also remove the logic in charge of "cancelling"
the context, as it isn't needed. If the logic needs to be cancelled,
we would just remove any configured timeout, which is enough.

As part of the changes, the logic has also been improved so that the
network timezone isn't only updated the first time the modem gets
registered. If the modem gets unregistered and re-registered, we would
reload the network timezone information.
2018-05-27 11:01:42 +02:00
Dan Williams
67ecad51e1 filter: add 'nozomi' and 'qcaux' drivers to MM_FILTER_RULE_TTY_DRIVER
nozomi and qcaux only drive modems and thus should be included
in this filter rule.  Allows nozomi/qcaux devices to work
automatically with strict filter mode.
2018-05-24 10:00:10 -05:00
Dan Williams
aecc3e99a0 include: fix up whitespace 2018-05-24 10:00:10 -05:00
Dan Williams
b074a2b4a4 include: add more 3GPP errors
From 3GPP TS 27.007 version 11.6.0 Release 11, sections 9.2.1,
9.2.2.1, 9.2.2.2, and 9.2.2.3.
2018-05-22 12:03:28 -05:00
Matthew Stanger
ac5d068e37 broadband-modem: increase signal_quality_cind() poll CIND timeout
Gemalto's PLS8 may timeout on 3 second CIND query. Debug log shows
5 seconds should suffice.
2018-05-20 08:44:09 +02:00
Ben Chan
051b15cca8 iface-modem-3gpp: ignore initial registration check result when enabling
This patch extends commit c9e85b671 ("iface-modem-3gpp: ignore initial
registration check result when appropriate") to handle the situation
where a registration check update may prematurely transition the modem
to the 'enabled' state while the modem is still being enabled.

The issue is identified by Dan Williams <dcbw@redhat.com>. More details
can be found in https://bugs.freedesktop.org/show_bug.cgi?id=106468
2018-05-18 22:10:34 +02:00
Aleksander Morgado
3e469e7b80 u-blox: don't run quick AT procedure if READY_DELAY not configured
The quick AT probe procedure is only meaningful to avoid waiting the
+READY URC delay. If there is no such delay configured, we shouldn't
run the quick AT probe (as a failure in the AT probe may also
trigger a +READY URC delay).

Just read the udev tag value early and complete the task if the delay
is not configured.
2018-05-08 09:51:19 +02:00
Matthew Starr
1a56b97061 ublox: use ID_MM_UBLOX_PORT_READY_DELAY udev flag as init delay
Added reading the ID_MM_UBLOX_PORT_READY_DELAY udev flag value and using
it as an init delay when a value is set.

The 20 second delay for the TOBY-L4 +READ URC has been reimplemented
using the new ID_MM_UBLOX_PORT_READY_DELAY udev value.
2018-05-08 09:43:15 +02:00
Aleksander Morgado
6be6aa474f filter: fix option1 driver name
This was preventing TTY-only ZTE and Huawei modules from being grabbed
in STRICT mode.

https://bugs.freedesktop.org/show_bug.cgi?id=106253
https://bugs.freedesktop.org/show_bug.cgi?id=106234
2018-05-07 18:27:26 +02:00
Matthew Starr
4895577597 u-blox: ignore non-AT ttyACM interfaces
For the TOBY-R2, LISA-R2, and LARA-R2, the only valid AT ports are
ttyACM0, ttyACM1, and ttyACM2.  All other ttyACM ports cause MM to
wait 20-30 seconds probing the port on startup.

Ignoring the non-AT ttyACM ports allows MM to not wait 20-30 seconds
probing and therefore startup much faster with these modems.
2018-04-30 18:29:39 +02:00
Aleksander Morgado
e17d5a51a2 broadband-bearer: allow matching empty APN when looking for PDP CID
The PDP contexts that are found with an empty APN configured are right
now used as placeholders that can be overwritten with the user
provided APN if no direct match is found.

We want to keep that logic in place, but for the case where we do get
an empty APN requested by the user, we need to perform the full
context match, so that the first PDP context matching the empty APN is
used.

Right now we're overwriting with the empty APN again the last PDP
context found with an empty APN, which doesn't make much sense:

    Apr 27 08:15:21 ModemManager[4251]: <debug> Found '3' PDP contexts
    Apr 27 08:15:21 ModemManager[4251]: <debug>   PDP context [cid=1] [type='ipv4'] [apn='']
    Apr 27 08:15:21 ModemManager[4251]: <debug>   PDP context [cid=2] [type='ipv4'] [apn='broadband']
    Apr 27 08:15:21 ModemManager[4251]: <debug>   PDP context [cid=15] [type='ipv4'] [apn='']
    Apr 27 08:15:21 ModemManager[4251]: <debug> Found PDP context with CID 1 and no APN
    Apr 27 08:15:21 ModemManager[4251]: <debug> Found PDP context with CID 15 and no APN
    Apr 27 08:15:21 ModemManager[4251]: <debug> (ttyUSB3) device open count is 3 (open)
    Apr 27 08:15:21 ModemManager[4251]: <debug> (ttyUSB3) device open count is 2 (close)
    Apr 27 08:15:21 ModemManager[4251]: <debug> (ttyUSB3): --> 'AT+CGDCONT=15,"IP",""<CR>'
    Apr 27 08:15:21 ModemManager[4251]: <debug> (ttyUSB3): <-- '<CR><LF>OK<CR><LF>'
2018-04-30 18:25:49 +02:00
Aleksander Morgado
43d0bd0f91 base-modem: improve broken modem detection logic
If the serial port timeout detection logic is enabled, warn whenever
more than one consecutive command timeout happens, not just when the
limit is reached.
2018-04-30 18:23:39 +02:00
Ben Chan
21c9a239ec broadband-modem-qmi: fix memory leak in dms_set_operating_mode_ready 2018-04-30 09:44:58 +02:00
Ben Chan
f9a0b945bc iface-modem: allow initial signal check after the modem is re-enabled
Commit 708b00ae3 "modem: allow periodic signal check to be disabled"
added a "iface-modem-periodic-signal-check-disabled" property in
MMIfaceModem/MMBroadbandModem to indicate if the periodic signal check
should be disabled. If the property is set to TRUE, the
signal_quality_polling_supported field of SignalCheckContext is set to
FALSE, which is sticky across modem disable/enable operations. However,
that is undesirable as we would like to issue an initial signal check to
refresh the signal quality value after the modem is re-enabled from a
state when the RF may have been previously turned off.
2018-04-25 10:34:35 +02:00
Ben Chan
5e5160c46a broadband-modem-mbim: implement initial signal quality loading
ModemManager currently relies on unsolicited MBIM_CID_SIGNAL_STATE
notifications to obtain signal quality updates, and it doesn't query the
initial signal quality. It's been observed that some MBIM modems issue a
MBIM_CID_SIGNAL_STATE notification only when there is a notable change
in RSSI. The signal quality may remain at 0 for quite some time. It's
more noticeable when simply restarting ModemManager after the modem has
been initialized and enabled once.

We could simply enable periodic signal check on an MBIM modem, but
that's less ideal as it may unnecessarily wake the modem up from USB
selective suspend (unless we use a much longer polling period).

To address the issue, this patch adds the implementation of
load_signal_quality to MMBroadbandModemMbim so that the signal quality
is initially polled via a solicited MBIM_CID_SIGNAL_STATE query. To
avoid the periodic signal check, we set the
MM_IFACE_MODEM_PERIODIC_SIGNAL_CHECK_DISABLED property to TRUE for
MMBroadbandModemMbim.
2018-04-24 18:22:03 +02:00
Ben Chan
708b00ae3b modem: allow periodic signal check to be disabled
ModemManager decides to disable periodic signal check if either
load_signal_quality is not implemented or load_signal_quality returns an
unsupported error. However, in some cases, we want to use
load_signal_quality to query the initial signal quality but rely on
unsolicited signal quality updates from the modem afterwards without
periodically polling for signal quality. To support that, this patch
introduces a property in MMIfaceModem/MMBroadbandModem to indicate if
the periodic signal check should be disabled.
2018-04-24 18:21:58 +02:00
Lubomir Rintel
b39dd2ec05 all: drop unused variables
Keeps build with GCC 8 happy.

mm-base-call.c:758:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
mm-base-call.c:822:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
mm-base-sms.c:908:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
mm-sms-list.c:331:25: warning: variable 'ctx' set but not used [-Wunused-but-set-variable]
mm-iface-modem-messaging.c:1210:21: warning: variable 'storage_ctx' set but not used [-Wunused-but-set-variable]
huawei/mm-plugin-huawei.c:183:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
ublox/mm-plugin-ublox.c:161:24: warning: variable 'response' set but not used [-Wunused-but-set-variable]
ublox/mm-plugin-ublox.c:159:24: warning: variable 'ctx' set but not used [-Wunused-but-set-variable]
icera/mm-modem-helpers-icera.c:218:25: warning: variable 'first_free' set but not used [-Wunused-but-set-variable]
novatel/mm-common-novatel.c:50:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
2018-04-24 18:11:15 +02:00
Iain Lane
5072db3418 m4/compiler_warnings.m4: Let -Werror be disabled
It's annoying for distributors to build with -Werror, since it means
that compiler upgrades can break the build. Let's let them disable it,
but keep it enabled by default.
2018-04-24 18:08:29 +02:00
Aleksander Morgado
7e94928301 ublox: fix 'any' mode building
The 'any' mode refers to the mode which includes most access
technologies and where none of them is preferred.

Fix the logic so that all combinations with one technology preferred
over the others are ignored, instead of the other way around.

Fixes assertion with the 4G-only LARA R204.

    ModemManager[424]: <debug> [-192499452.090358] (ttyACM0): --> 'AT+URAT=?<CR>'
    ModemManager[424]: <debug> [-192499452.092150] (ttyACM0): <-- '<CR><LF>+URAT: (3)<CR><LF><CR><LF>OK<CR><LF>'
    **
    ERROR:ublox/mm-modem-helpers-ublox.c:817:mm_ublox_get_modem_mode_any: assertion failed: (any != MM_MODEM_MODE_NONE)

Reported-by: Matthew Starr <mstarr@hedonline.com>
2018-04-03 15:58:49 +02:00
Aleksander Morgado
c9dee2b960 build: bump version to 1.7.991 (1.8-rc2) 2018-03-27 13:27:27 +02:00
Aleksander Morgado
b451a838a4 docs: add missing reference to mm_modem_3gpp_get_eps_ue_mode_operation() 2018-03-13 13:33:28 +01:00
Aleksander Morgado
bcb0175f62 docs: always rebuild libmm-glib types
So that we don't forget to add new types here manually...
(e.g. MMBearerStats)
2018-03-13 13:29:54 +01:00
Aleksander Morgado
c147dfc267 libmm-glib: use ModemManager prefix to refer to the introspected types 2018-03-13 13:07:10 +01:00
Aleksander Morgado
5dff6ce594 libmm-glib,modem: fix introspection annotation for bearer list 2018-03-13 12:53:37 +01:00
Aleksander Morgado
eb6b4cac8a libmm-glib: add several missing headers 2018-03-13 12:53:18 +01:00
Aleksander Morgado
1481dd58e2 libmm-glib,bearer-properties: minor documentation typo fix 2018-03-13 12:41:47 +01:00
Aleksander Morgado
9535f4c474 libmm-glib,bearer: cleanup stats related mutex and object 2018-03-13 12:25:43 +01:00
Aleksander Morgado
3a7d4b1200 ublox: ignore ttyACM0 in the TOBY-L4
We used ttyACM0 as secondary port until now, just because we had an
extra AT capable TTY around in addition to the main control ttyACM2
port.

Turns out, using this ttyACM0 may actually break the connection setup
in the wwan interface in a bad way (e.g. not allowing DHCP setup).

The suggestion from u-blox and Intel is to fully ignore ttyACM0; and
given that we no longer need any primary/secondary port logic, we just
remove all the associated udev tags.
2018-03-09 18:42:51 +01:00
Aleksander Morgado
c9a78e12b7 po: add Indonesian translation
From: Andika Triwidada <andika@gmail.com>

https://bugs.freedesktop.org/show_bug.cgi?id=105337
2018-03-04 17:00:50 +01:00
Aleksander Morgado
dc678bfef2 base-manager: additional indentation for the block covered by ref/unref 2018-02-23 12:43:22 +01:00
Eric Caruso
402559bb62 mm-base-manager: ref MMDevice before releasing port
Releasing the port on the device looks benign but because it emits
a signal, it could call device_context_port_released and unref the
MMDevice in port_context_unref. This means the MMDevice might be
disposed before we get to the g_object_ref and the subsequent call
to g_hash_table_remove will try to hash a null string, which makes
MM crash.
2018-02-23 12:33:37 +01:00
Eric Caruso
d416ea491d mm-base-manager: remove element from hastable by key, not value
The hashtable is keyed on the UID of the MMDevice, and its hash
function is g_str_hash. We shouldn't be passing a GObject into
g_hash_table_remove because calling g_str_hash on an MMDevice is
wrong.
2018-02-21 12:41:20 +01:00
Alfonso Sánchez-Beato
10cb61f399 broadband-modem-qmi: update EPS registration state for LTE qmi modems
MM was not updating the EPS registration status for qmi modems. This
led to LTE-only modems never having 'registered' status. This was
happening for Quectel EC21-V modem.
2018-02-13 10:07:25 -06:00
Dan Williams
dce0752743 iface-modem-3gpp: don't force auto registration if already registered
In mm_iface_modem_3gpp_register_in_network() when deciding whether to
force automatic registration or not, check whether the modem is already
registered in a network.  Just checking whether we have a valid operator
code is not sufficient, as some modems (ublox Toby R2xx) don't always
return an operator name/code even when registered.
2018-02-08 11:54:32 -06:00
Aleksander Morgado
1817746f51 broadband-modem: fix reloading of detailed signal quality status
We should not cache the AT command response otherwise we will never
re-run the same command again. The cache is needed only for AT test
commands (e.g. AT+CESQ=?).
2018-02-06 14:01:04 +01:00
Aleksander Morgado
357b186134 ublox: ignore +PBREADY URCs
We don't want them to get in the way of our initialization phase:

    /org/freedesktop/ModemManager1/Modem/0 (device id 'c49ed59c4a411e923307330d3e1d82582cbfac37')
     -------------------------
     Hardware | manufacturer: 'u-blox'
              | model: 'unknown'
              | revision: 'TOBY-L4906
              | +PBREADY
              | 40.19_ENG0003'
              | H/W revision: 'unknown'
              | supported: 'gsm-umts, lte'
              | current: 'gsm-umts, lte'
2018-02-06 13:40:21 +01:00
Ben Chan
b0b405858f broadband-modem: remove unused GError field in SetupRegistrationChecksContext 2018-02-06 11:26:33 +01:00
Aleksander Morgado
0f377f943e API: don't depend on GLib in ModemManager headers
We should only depend on GLib on the libmm-glib headers. Otherwise,
packages using just the core headers (e.g. ModemManagerQt) would also
need to build-depend on GLib and we don't want to enforce that.

    cd ~/buildroot/output/build/kde-modemmanager-qt-v5.36.0/src && ~/buildroot/output/host/usr/bin/arm-cortexa9_neon-linux-gnueabihf-g++  .... -fPIC -o CMakeFiles/KF5ModemManagerQt_static.dir/bearer.cpp.o -c ~/buildroot/output/build/kde-modemmanager-qt-v5.36.0/src/bearer.cpp
    In file included from ~/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/ModemManager/ModemManager.h:41:0,
                     from ~/buildroot/output/build/kde-modemmanager-qt-v5.36.0/src/generictypes.h:27,
                     from ~/buildroot/output/build/kde-modemmanager-qt-v5.36.0/src/generictypes.cpp:23:
    ~/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/ModemManager/ModemManager-compat.h:23:18: fatal error: glib.h: No such file or directory
    compilation terminated.
2018-02-05 20:23:49 +01:00
Ben Chan
636c245cd3 bearer-mbim: check if IP session is activated before deactivating it
It may be undesirable to issue a MBIM_CID_CONNECT
(MBIMActivationCommandDeactivate) command to deactivate an IP session
when the session isn't activated. For instance, it's been observed on
Huawei ME936 that it takes more than 30s for the modem to deactivate a
not-yet-activated session. This patch modifies MMBearerMbim to query if
a session is activated before trying to deactivate the session during a
connection attempt.
2018-02-02 09:32:53 -06:00
Ben Chan
785dfd3edd bearer-mbim: increase timeout for deactivating IP session to 60s
Since commit 0c7f3380a ("bearer-mbim: ensure session is disconnected
before trying to connect"), MMBearerMbim always issues a
MBIM_CID_CONNECT (MBIMActivationCommandDeactivate) command before a
MBIM_CID_CONNECT (MBIMActivationCommandActivate) command during a
connection attempt. That is to ensure that an IP session is actually
deactivated before we try to activate a new IP session.

Unfortunately, it's been observed on Huawei ME936 that it takes more
than 30s for the modem to respond to a MBIM_CID_CONNECT
(MBIMActivationCommandDeactivate) command when trying to deactivate a
session that hasn't been activated.

When the signal is weak, it's also possible that a modem takes more than
30s to deactivate an IP session during a disconnection attempt.

This patch increases the timeout for deactivating an IP session from 30s
to 60s in both connection and disconnection attempt.
2018-02-02 09:32:51 -06:00
Ben Chan
3de58d4137 bearer-mbim: remove a unnecessary MbimMessage variable 2018-02-02 09:32:49 -06:00