aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-12-16 11:45:13 +0100
committerAleksander Morgado <aleksander@aleksander.es>2021-12-26 10:12:33 +0100
commitf9487cf3d1c4a42bd143a2fab9672170c6bc6ce6 (patch)
treec62f038f07dcf95fbde010c4c8a11adc3901fdaf /src
parent2bfa6863c40cf5794ea36720796dec9911ff9668 (diff)
core: new '--test-mbimex-profile-management' option
The profile management APIs implemented by Microsoft in the MBIM extensions provide certain features that are not available via other means (e.g. ip type, access type preference, roaming allowance...). Unfortunately, these APIs require the current list of profiles installed in the modem to be a bit special; e.g. with one profile max for each context/APN type. If this does not happen, the operations will fail, or they will update contexts that should not be updated. So, we disable for now the MBIM extension profile management support; the logic is there, but not used by default.
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem-mbim.c8
-rw-r--r--src/mm-context.c18
-rw-r--r--src/mm-context.h3
3 files changed, 27 insertions, 2 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c
index a5e11e68..c401c7d1 100644
--- a/src/mm-broadband-modem-mbim.c
+++ b/src/mm-broadband-modem-mbim.c
@@ -28,6 +28,7 @@
#include "mm-sms-mbim.h"
#include "ModemManager.h"
+#include "mm-context.h"
#include "mm-log-object.h"
#include "mm-errors-types.h"
#include "mm-error-helpers.h"
@@ -2634,8 +2635,11 @@ query_device_services_ready (MbimDevice *device,
mm_obj_dbg (self, "5GNR registration settings are supported");
self->priv->is_nr5g_registration_settings_supported = TRUE;
} else if (device_services[i]->cids[j] == MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_PROVISIONED_CONTEXTS) {
- mm_obj_dbg (self, "Profile management extension is supported");
- self->priv->is_profile_management_ext_supported = TRUE;
+ if (mm_context_get_test_mbimex_profile_management ()) {
+ mm_obj_dbg (self, "Profile management extension is supported");
+ self->priv->is_profile_management_ext_supported = TRUE;
+ } else
+ mm_obj_dbg (self, "Profile management extension is supported but not allowed");
}
}
continue;
diff --git a/src/mm-context.c b/src/mm-context.c
index e86c57da..ee9b372c 100644
--- a/src/mm-context.c
+++ b/src/mm-context.c
@@ -227,6 +227,9 @@ static gboolean test_quick_suspend_resume;
static gboolean test_no_qrtr;
#endif
static gboolean test_multiplex_requested;
+#if defined WITH_MBIM
+static gboolean test_mbimex_profile_management;
+#endif
static const GOptionEntry test_entries[] = {
{
@@ -275,6 +278,13 @@ static const GOptionEntry test_entries[] = {
"Default to request multiplex support if no explicitly given",
NULL
},
+#if defined WITH_MBIM
+ {
+ "test-mbimex-profile-management", 0, 0, G_OPTION_ARG_NONE, &test_mbimex_profile_management,
+ "Default to use profile management MBIM extensions",
+ NULL
+ },
+#endif
{ NULL }
};
@@ -345,6 +355,14 @@ mm_context_get_test_multiplex_requested (void)
return test_multiplex_requested;
}
+#if defined WITH_MBIM
+gboolean
+mm_context_get_test_mbimex_profile_management (void)
+{
+ return test_mbimex_profile_management;
+}
+#endif
+
/*****************************************************************************/
static void
diff --git a/src/mm-context.h b/src/mm-context.h
index fefd574e..2a69e11c 100644
--- a/src/mm-context.h
+++ b/src/mm-context.h
@@ -57,5 +57,8 @@ gboolean mm_context_get_test_quick_suspend_resume (void);
gboolean mm_context_get_test_no_qrtr (void);
#endif
gboolean mm_context_get_test_multiplex_requested (void);
+#if defined WITH_MBIM
+gboolean mm_context_get_test_mbimex_profile_management (void);
+#endif
#endif /* MM_CONTEXT_H */