Kaynağa Gözat

msm: ipa: Fix cyclic dependency between ipa_net and ipa modules

ipa_net module calls into rmnet_ipa driver and ipa driver tries
to access ipa_net_initialized variable. This creates a cyclic
dependency between the modules. Make a change to move
ipa_net_initliazed flag to rmnet_ipa driver.

Change-Id: I47eae899329144445b40bb9b2d8e95ec7e6ca145
Signed-off-by: Chaitanya Pratapa <[email protected]>
Michael Adisumarta 4 yıl önce
ebeveyn
işleme
baa4879411

+ 0 - 5
drivers/platform/msm/ipa/ipa_v3/ipa_net.c

@@ -22,15 +22,10 @@
 #include "ipa_i.h"
 #include "ipa_qmi_service.h"
 
-bool ipa_net_initialized = false;
-
 static int __init ipa_late_init(void)
 {
 	int rc = 0;
 
-	/* We are here, thus the subsys_initcall is finished */
-	ipa_net_initialized = true;
-
 	IPADBG("IPA late init\n");
 
 	rc = ipa3_wwan_platform_driver_register();

+ 6 - 0
drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c

@@ -177,6 +177,7 @@ struct rmnet_ipa3_context {
 
 static struct rmnet_ipa3_context *rmnet_ipa3_ctx;
 static struct ipa3_rmnet_plat_drv_res ipa3_rmnet_res;
+bool ipa_net_initialized = false;
 
 /**
  * ipa3_setup_a7_qmap_hdr() - Setup default a7 qmap hdr
@@ -4886,8 +4887,12 @@ int ipa3_wwan_platform_driver_register(void)
 	if (rc)
 		IPAWANERR_RL("rmnet_ipa driver register fail rc=%d\n", rc);
 
+	/* We are here, network stack initialization is finished */
+	ipa_net_initialized = true;
+
 	return rc;
 }
+EXPORT_SYMBOL(ipa3_wwan_platform_driver_register);
 
 int ipa3_wwan_init(void)
 {
@@ -5003,6 +5008,7 @@ void ipa3_wwan_cleanup(void)
 	kfree(rmnet_ipa3_ctx);
 	rmnet_ipa3_ctx = NULL;
 }
+EXPORT_SYMBOL(ipa3_wwan_cleanup);
 
 static void ipa3_wwan_msg_free_cb(void *buff, u32 len, u32 type)
 {