Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a585df01 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa: Fix to un-registering of SSR notifier object"

parents cd857a1d b4a0857c
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ static bool egress_set, a7_ul_flt_set;
static struct workqueue_struct *ipa_rm_q6_workqueue; /* IPA_RM workqueue*/
static atomic_t is_initialized;
static atomic_t is_ssr;
static void *subsys_notify_handle;

u32 apps_to_ipa_hdl, ipa_to_apps_hdl; /* get handler from ipa */
static struct mutex ipa_to_apps_pipe_handle_guard;
@@ -2012,11 +2013,6 @@ setup_dflt_wan_rt_tables_err:
	ipa_del_a7_qmap_hdr();
setup_a7_qmap_hdr_err:
	ipa_qmi_service_exit();
	ret = subsys_notif_unregister_notifier(SUBSYS_MODEM, &ssr_notifier);
	if (ret)
		IPAWANERR(
		"Error subsys_notif_unregister_notifier system %s, ret=%d\n",
		SUBSYS_MODEM, ret);
	atomic_set(&is_ssr, 0);
	return ret;
}
@@ -2471,24 +2467,30 @@ void ipa_q6_handshake_complete(bool ssr_bootup)

static int __init ipa_wwan_init(void)
{
	void *subsys;

	atomic_set(&is_initialized, 0);
	atomic_set(&is_ssr, 0);

	mutex_init(&ipa_to_apps_pipe_handle_guard);
	ipa_to_apps_hdl = -1;
	/* Register for Modem SSR */
	subsys = subsys_notif_register_notifier(SUBSYS_MODEM, &ssr_notifier);
	if (!IS_ERR(subsys))
	subsys_notify_handle = subsys_notif_register_notifier(SUBSYS_MODEM,
						&ssr_notifier);
	if (!IS_ERR(subsys_notify_handle))
		return platform_driver_register(&rmnet_ipa_driver);
	else
		return (int)PTR_ERR(subsys);
		return (int)PTR_ERR(subsys_notify_handle);
}

static void __exit ipa_wwan_cleanup(void)
{
	int ret;
	mutex_destroy(&ipa_to_apps_pipe_handle_guard);
	ret = subsys_notif_unregister_notifier(subsys_notify_handle,
					&ssr_notifier);
	if (ret)
		IPAWANERR(
		"Error subsys_notif_unregister_notifier system %s, ret=%d\n",
		SUBSYS_MODEM, ret);
	platform_driver_unregister(&rmnet_ipa_driver);
}

+12 −11
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ static bool ipa3_egress_set, ipa3_a7_ul_flt_set;
static struct workqueue_struct *ipa_rm_q6_workqueue; /* IPA_RM workqueue*/
static atomic_t is_initialized;
static atomic_t is_ssr;
static void *ipa3_subsys_notify_handle;

u32 apps_to_ipa3_hdl, ipa3_to_apps_hdl; /* get handler from ipa */
static struct mutex ipa_to_apps_pipe_handle_guard;
@@ -1998,12 +1999,6 @@ setup_dflt_wan_rt_tables_err:
	ipa3_del_a7_qmap_hdr();
setup_a7_qmap_hdr_err:
	ipa3_qmi_service_exit();
	ret = subsys_notif_unregister_notifier(SUBSYS_MODEM,
			&ipa3_ssr_notifier);
	if (ret)
		IPAWANERR(
		"Error subsys_notif_unregister_notifier system %s, ret=%d\n",
		SUBSYS_MODEM, ret);
	atomic_set(&is_ssr, 0);
	return ret;
}
@@ -2448,25 +2443,31 @@ void ipa3_q6_handshake_complete(bool ssr_bootup)

static int __init ipa3_wwan_init(void)
{
	void *subsys;

	atomic_set(&is_initialized, 0);
	atomic_set(&is_ssr, 0);

	mutex_init(&ipa_to_apps_pipe_handle_guard);
	ipa3_to_apps_hdl = -1;
	/* Register for Modem SSR */
	subsys = subsys_notif_register_notifier(SUBSYS_MODEM,
	ipa3_subsys_notify_handle = subsys_notif_register_notifier(
			SUBSYS_MODEM,
			&ipa3_ssr_notifier);
	if (!IS_ERR(subsys))
	if (!IS_ERR(ipa3_subsys_notify_handle))
		return platform_driver_register(&rmnet_ipa_driver);
	else
		return (int)PTR_ERR(subsys);
		return (int)PTR_ERR(ipa3_subsys_notify_handle);
	}

static void __exit ipa3_wwan_cleanup(void)
{
	int ret;
	mutex_destroy(&ipa_to_apps_pipe_handle_guard);
	ret = subsys_notif_unregister_notifier(ipa3_subsys_notify_handle,
					&ipa3_ssr_notifier);
	if (ret)
		IPAWANERR(
		"Error subsys_notif_unregister_notifier system %s, ret=%d\n",
		SUBSYS_MODEM, ret);
	platform_driver_unregister(&rmnet_ipa_driver);
}