diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2024-09-13 12:49:39 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksandermj@chromium.org> | 2024-09-30 11:07:11 +0000 |
commit | dfc0f8ebfd6a4a698af6cf784ba749ecdcb05e7e (patch) | |
tree | 1cb3fffcf7ffec61746b6c89275cc554351b7449 /src/mm-base-modem.h | |
parent | 0aef4c422f5f686741f8943f479ff8d43b751f3d (diff) |
base-modem: override disable operations done before modem object removal
If we are going to inhibit the modem or fully reprobe it after a SIM
switch event, we should forbid further operations done with the modem
object.
This logic can be tested by queing different operations one after the
other, and then adding a last device inhibition ("override" operation)
that should trigger the early abort of all non-running operations,
e.g.:
mmcli -m a -e &
sleep 0.2
mmcli -m a --3gpp-set-initial-eps-bearer-settings="apn=internet,ip-type=ipv4v6,force=true" &
sleep 0.2
mmcli -m a -d &
sleep 0.2
mmcli -m a -e &
sleep 0.2
mmcli -m a --set-power-state-low &
sleep 0.2
mmcli -m a -e &
sleep 0.2
mmcli -m a --inhibit
This previous sequence produces MM logs as follows:
<dbg> [1726567756.430308] [modem0] [operation 22] default - enable: scheduled
<dbg> [1726567756.430806] [modem0] [operation 22] default - enable: lock acquired
<dbg> [1726567756.623746] [modem0] [operation 23] default - set-initial-eps-bearer-settings: scheduled
<dbg> [1726567756.751743] [modem0] [operation 22] default - enable: lock released
<dbg> [1726567756.752027] [modem0] [operation 23] default - set-initial-eps-bearer-settings: lock acquired
<dbg> [1726567756.823739] [modem0] [operation 24] default - disable: scheduled
<dbg> [1726567757.049581] [modem0] [operation 25] default - enable: scheduled
<dbg> [1726567757.250165] [modem0] [operation 26] default - set-power-state: scheduled
<dbg> [1726567757.450518] [modem0] [operation 27] default - enable: scheduled
<dbg> [1726567757.676362] [modem0] [operation 28] override - disabling: override requested - no new operations will be allowed
<dbg> [1726567757.678792] [modem0] [operation 24] default - disable: aborted early
<dbg> [1726567757.679866] [modem0] [operation 25] default - enable: aborted early
<dbg> [1726567757.680157] [modem0] [operation 26] default - set-power-state: aborted early
<dbg> [1726567757.680496] [modem0] [operation 27] default - enable: aborted early
<dbg> [1726567759.695780] [modem0] [operation 23] default - set-initial-eps-bearer-settings: lock released
<dbg> [1726567759.695935] [modem0] [operation 28] override - disabling: lock acquired
<dbg> [1726567759.872196] [modem0] [operation 28] override - disabling: lock released
Diffstat (limited to 'src/mm-base-modem.h')
-rw-r--r-- | src/mm-base-modem.h | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/mm-base-modem.h b/src/mm-base-modem.h index a02bdf4c..aab195ac 100644 --- a/src/mm-base-modem.h +++ b/src/mm-base-modem.h @@ -230,6 +230,7 @@ gboolean mm_base_modem_authorize_finish (MMBaseModem *self, /* Operation lock support */ typedef enum { /*< underscore_name=mm_base_modem_operation_priority >*/ + MM_BASE_MODEM_OPERATION_PRIORITY_UNKNOWN, /* Default operations are scheduled at the end of the list of pending * operations */ MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT, @@ -285,13 +286,14 @@ gboolean mm_base_modem_enable_finish (MMBaseModem *self, GAsyncResult *res, GError **error); -void mm_base_modem_disable (MMBaseModem *self, - MMBaseModemOperationLock operation_lock, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean mm_base_modem_disable_finish (MMBaseModem *self, - GAsyncResult *res, - GError **error); +void mm_base_modem_disable (MMBaseModem *self, + MMBaseModemOperationLock operation_lock, + MMBaseModemOperationPriority priority, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_base_modem_disable_finish (MMBaseModem *self, + GAsyncResult *res, + GError **error); #if defined WITH_SUSPEND_RESUME void mm_base_modem_sync (MMBaseModem *self, |