aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@chromium.org>2022-09-19 10:39:23 +0000
committerAleksander Morgado <aleksander@aleksander.es>2022-09-27 08:28:07 +0000
commit2c66d43bb983948c7f45115a429430b32530516a (patch)
tree72b1fdfc2a628c8f2ed92ddfe5528a341ea8507a
parent1ea5a577e38ebb5393a7b15e59b585acb659cfce (diff)
broadband-modem-qmi: select last used level when enabling SAR
Same as we do in the MBIM protocol implementation.
-rw-r--r--src/mm-broadband-modem-qmi.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index 4040b2a6..f513d0a5 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -8518,7 +8518,15 @@ sar_enable (MMIfaceModemSar *self,
task = g_task_new (self, NULL, callback, user_data);
input = qmi_message_sar_rf_set_state_input_new ();
- level = enable ? QMI_SAR_ENABLE_POWER_INDEX : QMI_SAR_DISABLED_POWER_INDEX;
+ /* When enabling, try to set the last valid known power level used, instead
+ * of defaulting to level 1 */
+ if (enable) {
+ level = mm_iface_modem_sar_get_power_level (self);
+ if (level == QMI_SAR_DISABLED_POWER_INDEX)
+ level = QMI_SAR_ENABLE_POWER_INDEX;
+ } else
+ level = QMI_SAR_DISABLED_POWER_INDEX;
+
qmi_message_sar_rf_set_state_input_set_state (input, level, NULL);
g_task_set_task_data (task, GUINT_TO_POINTER (level), NULL);