diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-12-16 11:45:13 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-12-26 10:12:33 +0100 |
commit | f9487cf3d1c4a42bd143a2fab9672170c6bc6ce6 (patch) | |
tree | c62f038f07dcf95fbde010c4c8a11adc3901fdaf | |
parent | 2bfa6863c40cf5794ea36720796dec9911ff9668 (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.
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 8 | ||||
-rw-r--r-- | src/mm-context.c | 18 | ||||
-rw-r--r-- | src/mm-context.h | 3 |
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 */ |