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

Commit 2a1b9716 authored by Subash Abhinov Kasiviswanathan's avatar Subash Abhinov Kasiviswanathan
Browse files

rmnet_ctl: re-arrange ipa registration



Re-arrange ipa registration sequence to handle cases where rmnet_ctl
is being initialized before ipa is ready.

Change-Id: Ic8416ad8f96f818e32f1320e997287ebfe755d03
Acked-by: default avatarWeiyi Chen <weiyic@qti.qualcomm.com>
Signed-off-by: default avatarSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
parent 9a791f3d
Loading
Loading
Loading
Loading
+14 −15
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ struct rmnet_ctl_ipa_dev {
};

static struct rmnet_ctl_ipa_dev ctl_ipa_dev;
static bool rmnet_ctl_ipa_registered;

static int rmnet_ctl_send_ipa(struct rmnet_ctl_dev *dev, struct sk_buff *skb)
{
@@ -78,33 +79,31 @@ static void rmnet_ctl_ipa_ready(void *user_data)
			rmnet_ctl_dl_callback,
			&ctl_ipa_dev);

	pr_info("%s: %d\n", __func__, rc);
	if (rc)
		pr_err("%s: %d\n", __func__, rc);
	else
		rmnet_ctl_ipa_registered = true;
}

static int __init rmnet_ctl_init(void)
{
	int rc;

	rc = ipa_register_rmnet_ctl_cb(
			rmnet_ctl_probe,
			&ctl_ipa_dev,
			rmnet_ctl_remove,
			&ctl_ipa_dev,
			rmnet_ctl_dl_callback,
			&ctl_ipa_dev);

	if (rc == -EAGAIN)
		rc = ipa_register_ipa_ready_cb(
			rmnet_ctl_ipa_ready, NULL);

	pr_info("%s: %d\n", __func__, rc);
	rc = ipa_register_ipa_ready_cb(rmnet_ctl_ipa_ready, NULL);
	if (rc == -EEXIST)
		rmnet_ctl_ipa_ready(NULL);
	else if (rc)
		pr_err("%s: %d\n", __func__, rc);

	return 0;
}

static void __exit rmnet_ctl_exit(void)
{
	if (rmnet_ctl_ipa_registered) {
		ipa_unregister_rmnet_ctl_cb();
		rmnet_ctl_ipa_registered = false;
	}
}

module_init(rmnet_ctl_init)