aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;