diff mbox series

[17/23] qmi: netreg: Drop use of qmi_service_create_shared

Message ID 20240607224746.903769-17-denkenz@gmail.com (mailing list archive)
State Superseded
Headers show
Series [01/23] gobi: Remove phonebook and stk atom creation | expand

Commit Message

Denis Kenzior June 7, 2024, 10:47 p.m. UTC
While here, drop all indication registration id members.  Explicitly
unregistering from an indication is not required.  All indication
registrations will be automatically dropped when the service handle
is freed using qmi_service_free()
---
 drivers/qmimodem/network-registration.c | 86 +++++--------------------
 plugins/gobi.c                          |  3 +-
 2 files changed, 17 insertions(+), 72 deletions(-)
diff mbox series

Patch

diff --git a/drivers/qmimodem/network-registration.c b/drivers/qmimodem/network-registration.c
index 78957a677d2d..c0c9338d1c23 100644
--- a/drivers/qmimodem/network-registration.c
+++ b/drivers/qmimodem/network-registration.c
@@ -31,10 +31,6 @@  struct netreg_data {
 	int lac;
 	int cellid;
 	bool is_roaming;
-	uint16_t event_indication_id;
-	uint16_t signal_info_indication_id;
-	uint16_t system_info_indication_id;
-	uint16_t serving_system_indication_id;
 };
 
 enum roaming_status {
@@ -587,23 +583,16 @@  static void register_indications_cb(struct qmi_result *result,
 
 	ofono_netreg_register(netreg);
 
-	data->event_indication_id =
-		qmi_service_register(data->nas, QMI_NAS_EVENT_REPORT,
+	qmi_service_register(data->nas, QMI_NAS_EVENT_REPORT,
 					event_notify, netreg, NULL);
 
-	data->serving_system_indication_id =
-		qmi_service_register(data->nas,
-					QMI_NAS_SERVING_SYSTEM_INDICATION,
+	qmi_service_register(data->nas, QMI_NAS_SERVING_SYSTEM_INDICATION,
 					ss_info_notify, netreg, NULL);
 
-	data->system_info_indication_id =
-		qmi_service_register(data->nas,
-					QMI_NAS_SYSTEM_INFO_INDICATION,
+	qmi_service_register(data->nas, QMI_NAS_SYSTEM_INFO_INDICATION,
 					system_info_notify, netreg, NULL);
 
-	data->signal_info_indication_id =
-		qmi_service_register(data->nas,
-					QMI_NAS_SIGNAL_INFO_INDICATION,
+	qmi_service_register(data->nas, QMI_NAS_SIGNAL_INFO_INDICATION,
 					signal_info_notify, netreg, NULL);
 }
 
@@ -636,10 +625,10 @@  error:
 	ofono_netreg_remove(netreg);
 }
 
-static void create_nas_cb(struct qmi_service *service, void *user_data)
+static int qmi_netreg_probe(struct ofono_netreg *netreg,
+				unsigned int vendor, void *user_data)
 {
-	struct ofono_netreg *netreg = user_data;
-	struct netreg_data *data = ofono_netreg_get_data(netreg);
+	struct qmi_service *nas = user_data;
 	struct qmi_param *param;
 	static const uint8_t PARAM_REPORT_SIGNAL_STRENGTH = 0x10;
 	static const uint8_t PARAM_REPORT_RF_INFO = 0x11;
@@ -650,46 +639,28 @@  static void create_nas_cb(struct qmi_service *service, void *user_data)
 	} __attribute__((__packed__)) ss = { .report = 0x01,
 			.count = 5, .dbm[0] = -55, .dbm[1] = -65,
 			.dbm[2] = -75, .dbm[3] = -85, .dbm[4] = -95 };
+	struct netreg_data *data;
 
 	DBG("");
 
-	if (!service) {
-		ofono_error("Failed to request NAS service");
-		goto error;
-	}
-
-	data->nas = service;
-
 	param = qmi_param_new();
-
 	qmi_param_append(param, PARAM_REPORT_SIGNAL_STRENGTH, sizeof(ss), &ss);
 	qmi_param_append_uint8(param, PARAM_REPORT_RF_INFO, 0x01);
 
-	if (qmi_service_send(data->nas, QMI_NAS_SET_EVENT_REPORT, param,
-					set_event_report_cb, netreg, NULL) > 0)
-		return;
-
-	qmi_param_free(param);
-error:
-	ofono_netreg_remove(netreg);
-}
-
-static int qmi_netreg_probe(struct ofono_netreg *netreg,
-				unsigned int vendor, void *user_data)
-{
-	struct qmi_device *device = user_data;
-	struct netreg_data *data;
-
-	DBG("");
+	if (!qmi_service_send(nas, QMI_NAS_SET_EVENT_REPORT, param,
+					set_event_report_cb, netreg, NULL)) {
+		qmi_param_free(param);
+		qmi_service_free(nas);
+		return -EIO;
+	}
 
 	data = l_new(struct netreg_data, 1);
-
+	data->nas = nas;
 	data->operator.name[0] = '\0';
 	data->operator.mcc[0] = '\0';
 	data->operator.mnc[0] = '\0';
 	data->operator.status = -1;
 	data->operator.tech = -1;
-
 	data->current_rat = QMI_NAS_NETWORK_RAT_NO_CHANGE;
 	data->is_roaming = false;
 	data->lac = -1;
@@ -697,9 +668,6 @@  static int qmi_netreg_probe(struct ofono_netreg *netreg,
 
 	ofono_netreg_set_data(netreg, data);
 
-	qmi_service_create_shared(device, QMI_SERVICE_NAS,
-					create_nas_cb, netreg, NULL);
-
 	return 0;
 }
 
@@ -711,31 +679,7 @@  static void qmi_netreg_remove(struct ofono_netreg *netreg)
 
 	ofono_netreg_set_data(netreg, NULL);
 
-	if (data->event_indication_id) {
-		qmi_service_unregister(data->nas, data->event_indication_id);
-		data->event_indication_id = 0;
-	}
-
-	if (data->serving_system_indication_id) {
-		qmi_service_unregister(data->nas,
-					data->serving_system_indication_id);
-		data->serving_system_indication_id = 0;
-	}
-
-	if (data->system_info_indication_id) {
-		qmi_service_unregister(data->nas,
-					data->system_info_indication_id);
-		data->system_info_indication_id = 0;
-	}
-
-	if (data->signal_info_indication_id) {
-		qmi_service_unregister(data->nas,
-					data->signal_info_indication_id);
-		data->signal_info_indication_id = 0;
-	}
-
 	qmi_service_free(data->nas);
-
 	l_free(data);
 }
 
diff --git a/plugins/gobi.c b/plugins/gobi.c
index ce43213a86a1..9c0ea4f6bbcc 100644
--- a/plugins/gobi.c
+++ b/plugins/gobi.c
@@ -840,7 +840,8 @@  static void gobi_post_online(struct ofono_modem *modem)
 	DBG("%p", modem);
 
 	if (data->features & GOBI_NAS) {
-		ofono_netreg_create(modem, 0, "qmimodem", data->device);
+		ofono_netreg_create(modem, 0, "qmimodem",
+						qmi_service_clone(data->nas));
 		ofono_netmon_create(modem, 0, "qmimodem", data->device);
 	}