summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-10-17 18:48:10 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-10-19 08:27:23 +0000
commitaf7d488325c788814e27fbd1c5c6cadfeb04663e (patch)
tree9381aac93017f805eb3854e0db72a079b6b2d672
parent0fbcf8ddc1a6630798148c082bc4fdef53849af4 (diff)
broadband-modem-mbim: fix MM_MODEM_MODE_ANY handling in set current modes
-rw-r--r--src/mm-broadband-modem-mbim.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c
index c3582b28..2d3e6d63 100644
--- a/src/mm-broadband-modem-mbim.c
+++ b/src/mm-broadband-modem-mbim.c
@@ -1223,14 +1223,15 @@ shared_qmi_set_current_modes_ready (MMIfaceModem *self,
#endif
static void
-modem_set_current_modes (MMIfaceModem *self,
+modem_set_current_modes (MMIfaceModem *_self,
MMModemMode allowed,
MMModemMode preferred,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GTask *task;
- MbimDevice *device;
+ MMBroadbandModemMbim *self = MM_BROADBAND_MODEM_MBIM (_self);
+ GTask *task;
+ MbimDevice *device;
if (!peek_device (self, &device, callback, user_data))
return;
@@ -1238,8 +1239,8 @@ modem_set_current_modes (MMIfaceModem *self,
task = g_task_new (self, NULL, callback, user_data);
#if defined WITH_QMI && QMI_MBIM_QMUX_SUPPORTED
- if (MM_BROADBAND_MODEM_MBIM (self)->priv->qmi_capability_and_mode_switching) {
- mm_shared_qmi_set_current_modes (self,
+ if (self->priv->qmi_capability_and_mode_switching) {
+ mm_shared_qmi_set_current_modes (MM_IFACE_MODEM (self),
allowed,
preferred,
(GAsyncReadyCallback)shared_qmi_set_current_modes_ready,
@@ -1252,9 +1253,13 @@ modem_set_current_modes (MMIfaceModem *self,
g_autoptr(MbimMessage) message = NULL;
MbimDataClass data_class;
+ /* Limit ANY to the currently supported modes */
+ if (allowed == MM_MODEM_MODE_ANY)
+ allowed = mm_modem_mode_from_mbim_data_class (self->priv->caps_data_class);
+
data_class = mm_mbim_data_class_from_modem_mode (allowed,
- mm_iface_modem_is_3gpp (self),
- mm_iface_modem_is_cdma (self));
+ mm_iface_modem_is_3gpp (_self),
+ mm_iface_modem_is_cdma (_self));
g_task_set_task_data (task, GUINT_TO_POINTER (data_class), NULL);
message = mbim_message_register_state_set_new (
NULL,