summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@chromium.org>2023-03-30 10:54:08 +0000
committerAleksander Morgado <aleksandermj@chromium.org>2023-05-03 12:27:20 +0000
commit6b05e268e0c95acb093cef0e747bc2fd37093878 (patch)
tree1cb2e39057e005bf575f0ba73888c1087f2493f6
parent45406e78e2c7ad7515f6b173d0759af6d89266a8 (diff)
downloadModemManager-6b05e268e0c95acb093cef0e747bc2fd37093878.tar.gz
broadband-modem-mbim: report packet service state updates
Use the Packet Service messages to report the state of PS domain, instead of guessing.
-rw-r--r--src/mm-broadband-modem-mbim.c37
-rw-r--r--src/mm-modem-helpers-mbim.c18
-rw-r--r--src/mm-modem-helpers-mbim.h2
3 files changed, 47 insertions, 10 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c
index 8b61f1d2d..6d0e6a147 100644
--- a/src/mm-broadband-modem-mbim.c
+++ b/src/mm-broadband-modem-mbim.c
@@ -4628,7 +4628,7 @@ update_access_technologies (MMBroadbandModemMbim *self)
}
/*****************************************************************************/
-/* Registration info updates */
+/* Packet service updates */
static void update_registration_info (MMBroadbandModemMbim *self,
gboolean scheduled,
@@ -4638,6 +4638,31 @@ static void update_registration_info (MMBroadbandModemMbim *self,
gchar *operator_name_take);
static void
+update_packet_service_info (MMBroadbandModemMbim *self,
+ MbimPacketServiceState packet_service_state)
+{
+ MMModem3gppPacketServiceState state;
+
+ if (packet_service_state == self->priv->packet_service_state)
+ return;
+
+ self->priv->packet_service_state = packet_service_state;
+ state = mm_modem_3gpp_packet_service_state_from_mbim_packet_service_state (packet_service_state);
+ mm_iface_modem_3gpp_update_packet_service_state (MM_IFACE_MODEM_3GPP (self), state);
+
+ /* PS reg state depends on the packet service state */
+ update_registration_info (self,
+ FALSE,
+ self->priv->reg_state,
+ self->priv->available_data_classes,
+ g_strdup (self->priv->current_operator_id),
+ g_strdup (self->priv->current_operator_name));
+}
+
+/*****************************************************************************/
+/* Registration info updates */
+
+static void
enabling_state_changed (MMBroadbandModemMbim *self)
{
MMModemState state;
@@ -5127,15 +5152,7 @@ basic_connect_notification_packet_service (MMBroadbandModemMbim *self,
}
update_access_technologies (self);
- if (self->priv->packet_service_state != packet_service_state) {
- self->priv->packet_service_state = packet_service_state;
- update_registration_info (self,
- FALSE,
- self->priv->reg_state,
- self->priv->available_data_classes,
- g_strdup (self->priv->current_operator_id),
- g_strdup (self->priv->current_operator_name));
- }
+ update_packet_service_info (self, packet_service_state);
self->priv->packet_service_uplink_speed = uplink_speed;
self->priv->packet_service_downlink_speed = downlink_speed;
diff --git a/src/mm-modem-helpers-mbim.c b/src/mm-modem-helpers-mbim.c
index 7714387d7..636acb9c1 100644
--- a/src/mm-modem-helpers-mbim.c
+++ b/src/mm-modem-helpers-mbim.c
@@ -129,6 +129,24 @@ mm_modem_3gpp_registration_state_from_mbim_register_state (MbimRegisterState sta
/*****************************************************************************/
+MMModem3gppPacketServiceState
+mm_modem_3gpp_packet_service_state_from_mbim_packet_service_state (MbimPacketServiceState state)
+{
+ switch (state) {
+ case MBIM_PACKET_SERVICE_STATE_ATTACHED:
+ return MM_MODEM_3GPP_PACKET_SERVICE_STATE_ATTACHED;
+ case MBIM_PACKET_SERVICE_STATE_ATTACHING:
+ case MBIM_PACKET_SERVICE_STATE_DETACHING:
+ case MBIM_PACKET_SERVICE_STATE_DETACHED:
+ return MM_MODEM_3GPP_PACKET_SERVICE_STATE_DETACHED;
+ case MBIM_PACKET_SERVICE_STATE_UNKNOWN:
+ default:
+ return MM_MODEM_3GPP_PACKET_SERVICE_STATE_UNKNOWN;
+ }
+}
+
+/*****************************************************************************/
+
MMModemMode
mm_modem_mode_from_mbim_data_class (MbimDataClass data_class,
const gchar *caps_custom_data_class)
diff --git a/src/mm-modem-helpers-mbim.h b/src/mm-modem-helpers-mbim.h
index 95501a600..89c1f7524 100644
--- a/src/mm-modem-helpers-mbim.h
+++ b/src/mm-modem-helpers-mbim.h
@@ -35,6 +35,8 @@ MMModemLock mm_modem_lock_from_mbim_pin_type (MbimPinType pin_type);
MMModem3gppRegistrationState mm_modem_3gpp_registration_state_from_mbim_register_state (MbimRegisterState state);
+MMModem3gppPacketServiceState mm_modem_3gpp_packet_service_state_from_mbim_packet_service_state (MbimPacketServiceState state);
+
MbimDataClass mm_mbim_data_class_from_mbim_data_class_v3_and_subclass (MbimDataClassV3 data_class_v3,
MbimDataSubclass data_subclass);