diff mbox series

[v3,32/33] qmi:gprs: Don't fail on unsupported INDICATION_REGISTER

Message ID 20240620145139.1135899-32-denkenz@gmail.com (mailing list archive)
State Accepted
Commit c1f4a11f1c9cc050b34e95bfc00760e6b8d4653a
Headers show
Series [v3,01/33] qmi: Remove qmi_free() | expand

Commit Message

Denis Kenzior June 20, 2024, 2:51 p.m. UTC
Some modems (like Sierra MC7710) seemingly do not support
INDICATION_REGISTER request on WDS.  Do not fail gprs atom registration
if so.  Only indications of interest are currently used only for
informational output to syslog.

ofonod[1120532]: drivers/qmimodem/gprs.c:set_event_report_cb()
ofonod[1120532]: drivers/qmimodem/lte.c:modify_profile_cb()
ofonod[1120532]: drivers/qmimodem/gprs.c:indication_register_cb()
ofonod[1120532]: indication_register_cb: 71
ofonod[1120532]: src/gprs.c:gprs_remove() atom: 0x504000022a90
ofonod[1120532]: drivers/qmimodem/gprs.c:qmi_gprs_remove()
---
 drivers/qmimodem/gprs.c | 8 ++++++--
 drivers/qmimodem/qmi.h  | 4 ++++
 2 files changed, 10 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/drivers/qmimodem/gprs.c b/drivers/qmimodem/gprs.c
index da7ad63c49cb..547b32059da4 100644
--- a/drivers/qmimodem/gprs.c
+++ b/drivers/qmimodem/gprs.c
@@ -279,8 +279,12 @@  static void indication_register_cb(struct qmi_result *result, void *user_data)
 	DBG("");
 
 	if (qmi_result_set_error(result, &error)) {
-		ofono_error("indication_register_cb: %hd", error);
-		goto error;
+		ofono_error("%s: %s(%hd)", __func__,
+				qmi_result_get_error(result), error);
+
+		/* Some modems do not support indications, ignore */
+		if (error != QMI_ERROR_INVALID_QMI_COMMAND)
+			goto error;
 	}
 
 	/*
diff --git a/drivers/qmimodem/qmi.h b/drivers/qmimodem/qmi.h
index 966f99f114fe..db20280f9aa3 100644
--- a/drivers/qmimodem/qmi.h
+++ b/drivers/qmimodem/qmi.h
@@ -50,6 +50,10 @@  enum qmi_data_endpoint_type {
 	QMI_DATA_ENDPOINT_TYPE_BAM_DMUX  = 0x05,
 };
 
+enum qmi_error {
+	QMI_ERROR_INVALID_QMI_COMMAND				= 71,
+};
+
 typedef void (*qmi_destroy_func_t)(void *user_data);
 
 struct qmi_service;