bearer-qmi: add udev device tag ID_MM_QMI_PCO_DISABLED to disable PCO

Some modems like the Qualcomm-based Cellient MPL200 and SimTech
SIM7100E will crash some time after requesting operator reserved PCO.
The new udev tag ID_MM_QMI_PCO_DISABLED disables the PCO settings
request when set, indirectly disabling PCO.

Signed-off-by: Stig M. Baugstø <1129097-stigma@users.noreply.gitlab.freedesktop.org>
This commit is contained in:
Stig M. Baugstø
2024-10-24 15:21:02 +02:00
parent ea9438ab98
commit 78508b7dce
+14 -5
View File
@@ -1103,10 +1103,12 @@ get_current_settings_ready (QmiClientWds *client,
static void
get_current_settings (GTask *task, QmiClientWds *client)
{
ConnectContext *ctx;
QmiMessageWdsGetCurrentSettingsInput *input;
QmiWdsRequestedSettings requested;
MMBearerQmi *self;
ConnectContext *ctx;
QmiMessageWdsGetCurrentSettingsInput *input;
QmiWdsRequestedSettings requested;
self = g_task_get_source_object (task);
ctx = g_task_get_task_data (task);
g_assert (ctx->running_ipv4 || ctx->running_ipv6);
@@ -1116,8 +1118,15 @@ get_current_settings (GTask *task, QmiClientWds *client)
QMI_WDS_REQUESTED_SETTINGS_GATEWAY_INFO |
QMI_WDS_REQUESTED_SETTINGS_MTU |
QMI_WDS_REQUESTED_SETTINGS_DOMAIN_NAME_LIST |
QMI_WDS_REQUESTED_SETTINGS_IP_FAMILY |
QMI_WDS_REQUESTED_SETTINGS_OPERATOR_RESERVED_PCO;
QMI_WDS_REQUESTED_SETTINGS_IP_FAMILY;
/* Modems like Qualcomm MPL200 and SimTech SIM7100E eventually crash when enabling PCO.
* Avoid crashing by skip registering for PCO */
if (!mm_kernel_device_get_global_property_as_boolean (mm_port_peek_kernel_device (MM_PORT (ctx->qmi)),
"ID_MM_QMI_PCO_DISABLED")) {
mm_obj_dbg (self, "Requesting QMI WDS Operator Reserved PCO");
requested |= QMI_WDS_REQUESTED_SETTINGS_OPERATOR_RESERVED_PCO;
}
input = qmi_message_wds_get_current_settings_input_new ();
qmi_message_wds_get_current_settings_input_set_requested_settings (input, requested, NULL);