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.
This commit is contained in:
Aleksander Morgado
2021-12-16 11:45:13 +01:00
parent 2bfa6863c4
commit f9487cf3d1
3 changed files with 27 additions and 2 deletions

View File

@@ -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;

View File

@@ -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

View File

@@ -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 */