mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-04-21 00:40:46 +02:00
wwan/ofono: merge branch 'peat-psuwit:for-upstream/mr773-plus'
https://bugs.launchpad.net/bugs/1565717 https://bugs.launchpad.net/bugs/1579098 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/771 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/773 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1392
This commit is contained in:
commit
7f22835328
3 changed files with 594 additions and 145 deletions
|
|
@ -273,6 +273,15 @@ modem_state_cb(NMModem *modem, int new_state_i, int old_state_i, gpointer user_d
|
|||
/* Called when the ModemManager modem enabled state is changed externally
|
||||
* to NetworkManager (eg something using MM's D-Bus API directly).
|
||||
*/
|
||||
|
||||
if (!NM_MODEM_GET_CLASS(priv->modem)->set_mm_enabled) {
|
||||
/* We cannot re-enable this modem, thus device becomes unavailable. */
|
||||
nm_device_state_changed(device,
|
||||
NM_DEVICE_STATE_UNAVAILABLE,
|
||||
NM_DEVICE_STATE_REASON_USER_REQUESTED);
|
||||
return;
|
||||
}
|
||||
|
||||
if (nm_device_is_activating(device) || dev_state == NM_DEVICE_STATE_ACTIVATED) {
|
||||
/* user-initiated action, hence DISCONNECTED not FAILED */
|
||||
nm_device_state_changed(device,
|
||||
|
|
@ -435,6 +444,13 @@ check_connection_available(NMDevice *device,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
if (!NM_MODEM_GET_CLASS(priv->modem)->set_mm_enabled && state <= NM_MODEM_STATE_DISABLING) {
|
||||
nm_utils_error_set_literal(error,
|
||||
NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
|
||||
"modem is disabled and NM cannot enable it");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (state == NM_MODEM_STATE_LOCKED) {
|
||||
if (!nm_connection_get_setting_gsm(connection)) {
|
||||
nm_utils_error_set_literal(error,
|
||||
|
|
@ -599,6 +615,11 @@ set_enabled(NMDevice *device, gboolean enabled)
|
|||
|
||||
if (enabled == FALSE) {
|
||||
nm_device_state_changed(device, NM_DEVICE_STATE_UNAVAILABLE, NM_DEVICE_STATE_REASON_NONE);
|
||||
} else {
|
||||
/* It's possible that the modem is enabled outside of NM. Need to recheck. */
|
||||
nm_device_queue_recheck_available(device,
|
||||
NM_DEVICE_STATE_REASON_MODEM_AVAILABLE,
|
||||
NM_DEVICE_STATE_REASON_MODEM_FAILED);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -617,6 +638,9 @@ is_available(NMDevice *device, NMDeviceCheckDevAvailableFlags flags)
|
|||
if (modem_state <= NM_MODEM_STATE_INITIALIZING)
|
||||
return FALSE;
|
||||
|
||||
if (!NM_MODEM_GET_CLASS(priv->modem)->set_mm_enabled && modem_state <= NM_MODEM_STATE_DISABLING)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -353,6 +353,12 @@ nm_modem_set_mm_enabled(NMModem *self, gboolean enabled)
|
|||
NMModemPrivate *priv = NM_MODEM_GET_PRIVATE(self);
|
||||
NMModemState prev_state = priv->state;
|
||||
|
||||
/* Not all modem classes support set_mm_enabled */
|
||||
if (!NM_MODEM_GET_CLASS(self)->set_mm_enabled) {
|
||||
_LOGD("cannot enable modem: not implemented");
|
||||
return;
|
||||
}
|
||||
|
||||
if (enabled && priv->state >= NM_MODEM_STATE_ENABLING) {
|
||||
_LOGD("cannot enable modem: already enabled");
|
||||
return;
|
||||
|
|
@ -375,9 +381,7 @@ nm_modem_set_mm_enabled(NMModem *self, gboolean enabled)
|
|||
return;
|
||||
}
|
||||
|
||||
/* Not all modem classes support set_mm_enabled */
|
||||
if (NM_MODEM_GET_CLASS(self)->set_mm_enabled)
|
||||
NM_MODEM_GET_CLASS(self)->set_mm_enabled(self, enabled);
|
||||
NM_MODEM_GET_CLASS(self)->set_mm_enabled(self, enabled);
|
||||
|
||||
/* Pre-empt the state change signal */
|
||||
nm_modem_set_state(self,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue