aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2022-01-31 22:42:48 +0100
committerAleksander Morgado <aleksander@aleksander.es>2022-01-31 22:48:57 +0100
commit9c08e54fb9d2f0b9341c2c98291551d8c9917c78 (patch)
tree4bd01c0b57072bb34e7d7622c17407fb5c40acec
parentc7ff014e07ee5bfcfa4ba7e235c1c234ad77245a (diff)
shared-qmi: filter out modes not currently available
Do not build the mask of "all" modes based only on the supported radio interfaces, also filter out those modes that would not be available based on the current capabilities enabled.
-rw-r--r--src/mm-shared-qmi.c8
-rw-r--r--src/tests/test-modem-helpers-qmi.c2
2 files changed, 9 insertions, 1 deletions
diff --git a/src/mm-shared-qmi.c b/src/mm-shared-qmi.c
index e0d62dc5..1447a7ce 100644
--- a/src/mm-shared-qmi.c
+++ b/src/mm-shared-qmi.c
@@ -1703,6 +1703,14 @@ mm_shared_qmi_load_supported_modes (MMIfaceModem *self,
for (i = 0; i < priv->supported_radio_interfaces->len; i++)
ctx.all |= mm_modem_mode_from_qmi_radio_interface (g_array_index (priv->supported_radio_interfaces, QmiDmsRadioInterface, i), self);
+ /* Filter out those unsupported by the current capabilities */
+ if (!(priv->current_capabilities & (MM_MODEM_CAPABILITY_GSM_UMTS | MM_MODEM_CAPABILITY_CDMA_EVDO)))
+ ctx.all &= ~(MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
+ else if (!(priv->current_capabilities & MM_MODEM_CAPABILITY_LTE))
+ ctx.all &= ~MM_MODEM_MODE_4G;
+ else if (!(priv->current_capabilities & MM_MODEM_CAPABILITY_5GNR))
+ ctx.all &= ~MM_MODEM_MODE_5G;
+
ctx.nas_ssp_supported = (priv->feature_nas_ssp == FEATURE_SUPPORTED);
ctx.nas_tp_supported = (priv->feature_nas_tp == FEATURE_SUPPORTED);
ctx.current_capabilities = priv->current_capabilities;
diff --git a/src/tests/test-modem-helpers-qmi.c b/src/tests/test-modem-helpers-qmi.c
index 781f9d4f..f49e1e89 100644
--- a/src/tests/test-modem-helpers-qmi.c
+++ b/src/tests/test-modem-helpers-qmi.c
@@ -262,7 +262,7 @@ test_supported_modes_uml290_lte (void)
};
ctx.multimode = TRUE;
- ctx.all = MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G;
+ ctx.all = MM_MODEM_MODE_4G;
ctx.nas_ssp_supported = TRUE;
ctx.nas_tp_supported = FALSE;
ctx.current_capabilities = MM_MODEM_CAPABILITY_LTE;