aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@chromium.org>2023-11-16 11:04:57 +0000
committerAleksander Morgado <aleksandermj@chromium.org>2024-02-15 21:01:52 +0000
commitb0add8c03b8c2e4588730a494f9abc190c349ba3 (patch)
tree52706f688182415e99f094bd71f508aac7d376a1 /src
parent1befca4573885129dae8436b3a0a9c3002712d1a (diff)
broadband-modem-mbim: request IP configuration indications
The modem object doesn't process the IP configuration updates reported by the modem, but the MBIM bearer object may do so if waiting for async SLAAC updates.
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem-mbim.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c
index 91931914..2a1f8e6e 100644
--- a/src/mm-broadband-modem-mbim.c
+++ b/src/mm-broadband-modem-mbim.c
@@ -96,6 +96,7 @@ typedef enum {
PROCESS_NOTIFICATION_FLAG_LTE_ATTACH_INFO = 1 << 8,
PROCESS_NOTIFICATION_FLAG_PROVISIONED_CONTEXTS = 1 << 9,
PROCESS_NOTIFICATION_FLAG_SLOT_INFO_STATUS = 1 << 10,
+ PROCESS_NOTIFICATION_FLAG_IP_CONFIGURATION = 1 << 11,
} ProcessNotificationFlag;
enum {
@@ -5537,6 +5538,8 @@ basic_connect_notification (MMBroadbandModemMbim *self,
case MBIM_CID_BASIC_CONNECT_PROVISIONED_CONTEXTS:
if (self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_PROVISIONED_CONTEXTS)
basic_connect_notification_provisioned_contexts (self, device, notification);
+ case MBIM_CID_BASIC_CONNECT_IP_CONFIGURATION:
+ /* Ignored at modem level, only managed by bearer if waiting for async SLAAC results */
default:
/* Ignore */
break;
@@ -5931,7 +5934,8 @@ common_setup_cleanup_unsolicited_events_sync (MMBroadbandModemMbim *self,
mm_obj_dbg (self, "supported notifications: signal (%s), registration (%s), sms (%s), "
"connect (%s), subscriber (%s), packet (%s), pco (%s), ussd (%s), "
- "lte attach info (%s), provisioned contexts (%s), slot_info_status (%s)",
+ "lte attach info (%s), provisioned contexts (%s), slot info status (%s), "
+ "ip configuration (%s)",
self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY ? "yes" : "no",
self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES ? "yes" : "no",
self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_SMS_READ ? "yes" : "no",
@@ -5942,7 +5946,8 @@ common_setup_cleanup_unsolicited_events_sync (MMBroadbandModemMbim *self,
self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_USSD ? "yes" : "no",
self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_LTE_ATTACH_INFO ? "yes" : "no",
self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_PROVISIONED_CONTEXTS ? "yes" : "no",
- self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_SLOT_INFO_STATUS ? "yes" : "no");
+ self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_SLOT_INFO_STATUS ? "yes" : "no",
+ self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_IP_CONFIGURATION ? "yes" : "no");
if (setup) {
/* Don't re-enable it if already there */
@@ -6048,6 +6053,7 @@ cleanup_unsolicited_events_3gpp (MMIfaceModem3gpp *_self,
self->priv->setup_flags &= ~PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
self->priv->setup_flags &= ~PROCESS_NOTIFICATION_FLAG_CONNECT;
self->priv->setup_flags &= ~PROCESS_NOTIFICATION_FLAG_PACKET_SERVICE;
+ self->priv->setup_flags &= ~PROCESS_NOTIFICATION_FLAG_IP_CONFIGURATION;
if (self->priv->is_pco_supported)
self->priv->setup_flags &= ~PROCESS_NOTIFICATION_FLAG_PCO;
if (self->priv->is_lte_attach_info_supported)
@@ -6072,6 +6078,7 @@ setup_unsolicited_events_3gpp (MMIfaceModem3gpp *_self,
self->priv->setup_flags |= PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
self->priv->setup_flags |= PROCESS_NOTIFICATION_FLAG_CONNECT;
self->priv->setup_flags |= PROCESS_NOTIFICATION_FLAG_PACKET_SERVICE;
+ self->priv->setup_flags |= PROCESS_NOTIFICATION_FLAG_IP_CONFIGURATION;
if (self->priv->is_pco_supported)
self->priv->setup_flags |= PROCESS_NOTIFICATION_FLAG_PCO;
if (self->priv->is_lte_attach_info_supported)
@@ -6154,7 +6161,8 @@ common_enable_disable_unsolicited_events (MMBroadbandModemMbim *self,
mm_obj_dbg (self, "enabled notifications: signal (%s), registration (%s), sms (%s), "
"connect (%s), subscriber (%s), packet (%s), pco (%s), ussd (%s), "
- "lte attach info (%s), provisioned contexts (%s), slot_info_status (%s)",
+ "lte attach info (%s), provisioned contexts (%s), slot info status (%s), "
+ "ip configuration (%s)",
self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY ? "yes" : "no",
self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES ? "yes" : "no",
self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SMS_READ ? "yes" : "no",
@@ -6165,7 +6173,8 @@ common_enable_disable_unsolicited_events (MMBroadbandModemMbim *self,
self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_USSD ? "yes" : "no",
self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_LTE_ATTACH_INFO ? "yes" : "no",
self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_PROVISIONED_CONTEXTS ? "yes" : "no",
- self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SLOT_INFO_STATUS ? "yes" : "no");
+ self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SLOT_INFO_STATUS ? "yes" : "no",
+ self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_IP_CONFIGURATION ? "yes" : "no");
entries = g_new0 (MbimEventEntry *, 5);
@@ -6175,11 +6184,12 @@ common_enable_disable_unsolicited_events (MMBroadbandModemMbim *self,
self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_CONNECT ||
self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SUBSCRIBER_INFO ||
self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_PACKET_SERVICE ||
- self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_PROVISIONED_CONTEXTS) {
+ self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_PROVISIONED_CONTEXTS ||
+ self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_IP_CONFIGURATION) {
entries[n_entries] = g_new (MbimEventEntry, 1);
memcpy (&(entries[n_entries]->device_service_id), MBIM_UUID_BASIC_CONNECT, sizeof (MbimUuid));
entries[n_entries]->cids_count = 0;
- entries[n_entries]->cids = g_new0 (guint32, 6);
+ entries[n_entries]->cids = g_new0 (guint32, 7);
if (self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY)
entries[n_entries]->cids[entries[n_entries]->cids_count++] = MBIM_CID_BASIC_CONNECT_SIGNAL_STATE;
if (self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES)
@@ -6192,6 +6202,8 @@ common_enable_disable_unsolicited_events (MMBroadbandModemMbim *self,
entries[n_entries]->cids[entries[n_entries]->cids_count++] = MBIM_CID_BASIC_CONNECT_PACKET_SERVICE;
if (self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_PROVISIONED_CONTEXTS)
entries[n_entries]->cids[entries[n_entries]->cids_count++] = MBIM_CID_BASIC_CONNECT_PROVISIONED_CONTEXTS;
+ if (self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_IP_CONFIGURATION)
+ entries[n_entries]->cids[entries[n_entries]->cids_count++] = MBIM_CID_BASIC_CONNECT_IP_CONFIGURATION;
n_entries++;
}
@@ -6594,6 +6606,7 @@ modem_3gpp_disable_unsolicited_events (MMIfaceModem3gpp *_self,
self->priv->enable_flags &= ~PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
self->priv->enable_flags &= ~PROCESS_NOTIFICATION_FLAG_CONNECT;
self->priv->enable_flags &= ~PROCESS_NOTIFICATION_FLAG_PACKET_SERVICE;
+ self->priv->enable_flags &= ~PROCESS_NOTIFICATION_FLAG_IP_CONFIGURATION;
if (self->priv->is_pco_supported)
self->priv->enable_flags &= ~PROCESS_NOTIFICATION_FLAG_PCO;
if (self->priv->is_lte_attach_info_supported)
@@ -6615,6 +6628,7 @@ modem_3gpp_enable_unsolicited_events (MMIfaceModem3gpp *_self,
self->priv->enable_flags |= PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
self->priv->enable_flags |= PROCESS_NOTIFICATION_FLAG_CONNECT;
self->priv->enable_flags |= PROCESS_NOTIFICATION_FLAG_PACKET_SERVICE;
+ self->priv->enable_flags |= PROCESS_NOTIFICATION_FLAG_IP_CONFIGURATION;
if (self->priv->is_pco_supported)
self->priv->enable_flags |= PROCESS_NOTIFICATION_FLAG_PCO;
if (self->priv->is_lte_attach_info_supported)