diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2023-05-24 08:38:15 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksandermj@chromium.org> | 2023-05-25 08:19:37 +0000 |
commit | 3424c1768893a21f5a968d56a002bc28960b78e4 (patch) | |
tree | 9dc7d4d112f6551894bddec8fc5112109769d019 | |
parent | b7d94a4daa584efe3c9bcf5b5be9d4cd39cd8d6f (diff) |
broadband-modem-mbim: run explicit packet service query
When running the 3GPP registration checks (e.g. after reaching enabled
state, or when synchronizing state after a quick suspend/resume), we
also update the current packet service state explicitly, without
needing to fully rely on the indications.
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index fbf54a89..58eba40e 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -6369,11 +6369,37 @@ modem_3gpp_run_registration_checks_finish (MMIfaceModem3gpp *self, } static void +packet_service_query_ready (MbimDevice *device, + GAsyncResult *res, + GTask *task) +{ + MMBroadbandModemMbim *self; + g_autoptr(MbimMessage) response = NULL; + g_autoptr(GError) error = NULL; + + self = g_task_get_source_object (task); + + response = mbim_device_command_finish (device, res, &error); + if (response && + (mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &error) || + g_error_matches (error, MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_FAILURE))) { + g_autoptr(GError) inner_error = NULL; + + if (!common_process_packet_service (self, device, response, NULL, NULL, &inner_error)) + mm_obj_warn (self, "%s", inner_error->message); + } + + g_task_return_boolean (task, TRUE); + g_object_unref (task); +} + +static void register_state_query_ready (MbimDevice *device, GAsyncResult *res, GTask *task) { g_autoptr(MbimMessage) response = NULL; + g_autoptr(MbimMessage) message = NULL; MMBroadbandModemMbim *self; GError *error = NULL; MbimRegisterState register_state; @@ -6438,8 +6464,14 @@ register_state_query_ready (MbimDevice *device, provider_id, provider_name); - g_task_return_boolean (task, TRUE); - g_object_unref (task); + /* Now queue packet service state update */ + message = mbim_message_packet_service_query_new (NULL); + mbim_device_command (device, + message, + 10, + NULL, + (GAsyncReadyCallback)packet_service_query_ready, + task); } static void |