Merge 22cba6c627d222cbf9b0630dce3c6a8053c3c011 on remote branch

Change-Id: Ic188fcc5f1ce35ab5f8b6fef536b90495b1e5ef7
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index f17eb03..a36fa4a 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -134,6 +134,10 @@
 	is_ipv6_frag_firewall_flt_rule_installed = false;
 	ipv6_frag_firewall_flt_rule_hdl = 0;
 
+	icmpv6_exception_hdl = 0;
+	tcp_fin_hdl = 0;
+	tcp_rst_hdl = 0;
+
 	mtu_v4 = DEFAULT_MTU_SIZE;
 	mtu_v4_set = false;
 	mtu_v6 = DEFAULT_MTU_SIZE;
@@ -7580,6 +7584,13 @@
 	uint8_t mux_id;
 	ipa_ioc_add_flt_rule *pFilteringTable = NULL;
 
+	/* Return if rules are there */
+	if (mhi_dl_v4_frag_hdl)
+	{
+		IPACMERR("frag rule have not been deleted. Don't install again\n");
+		return IPACM_FAILURE;
+	}
+
 	mux_id = ext_prop->ext[0].mux_id;
 	/* contruct filter rules to pcie modem */
 	struct ipa_flt_rule_add flt_rule_entry;
@@ -7721,6 +7732,13 @@
 	uint8_t mux_id;
 	ipa_ioc_add_flt_rule *pFilteringTable = NULL;
 
+	/* Return if rules are there */
+	if (icmpv6_exception_hdl)
+	{
+		IPACMERR("icmpv6 rule have not been deleted. Don't install again\n");
+		return IPACM_FAILURE;
+	}
+
 	mux_id = ext_prop->ext[0].mux_id;
 	/* contruct filter rules to pcie modem */
 	struct ipa_flt_rule_add flt_rule_entry;
@@ -7858,6 +7876,13 @@
 	uint8_t mux_id;
 	ipa_ioc_add_flt_rule *pFilteringTable = NULL;
 
+	/* Return if rules are there */
+	if (tcp_fin_hdl || tcp_rst_hdl)
+	{
+		IPACMERR("tcp RST/FIN rules have not been deleted. Don't install again\n");
+		return IPACM_FAILURE;
+	}
+
 	mux_id = ext_prop->ext[0].mux_id;
 	/* contruct filter rules to pcie modem */
 	struct ipa_flt_rule_add flt_rule_entry;
diff --git a/ipacm/src/ipacm.rc b/ipacm/src/ipacm.rc
index c1c876b..6b3bf98 100644
--- a/ipacm/src/ipacm.rc
+++ b/ipacm/src/ipacm.rc
@@ -30,5 +30,5 @@
     user radio
     group radio inet
 
-on post-fs
+on post-fs-data
     start vendor.ipacm
diff --git a/ipacm_vendor_product.mk b/ipacm_vendor_product.mk
index f225a30..969d537 100644
--- a/ipacm_vendor_product.mk
+++ b/ipacm_vendor_product.mk
@@ -1,9 +1,11 @@
 TARGET_DISABLE_IPACM := false
 
+ifneq ($(TARGET_BOARD_SUFFIX),_au)
 #IPACM_DATA
 IPACM_DATA += IPACM_cfg.xml
 IPACM_DATA += ipacm
 IPACM_DATA += ipacm.rc
+endif
 
 ifeq ($(TARGET_USES_QMAA),true)
 ifneq ($(TARGET_USES_QMAA_OVERRIDE_DATA),true)
@@ -12,6 +14,7 @@
 endif #TARGET_USES_QMAA
 
 BOARD_IPA_LOW_RAM_EXCP_LIST := bengal
+BOARD_IPA_LOW_RAM_EXCP_LIST += monaco
 
 ifeq ($(TARGET_HAS_LOW_RAM),true)
 ifneq ($(call is-board-platform-in-list,$(BOARD_IPA_LOW_RAM_EXCP_LIST)),true)
@@ -25,6 +28,9 @@
 BOARD_PLATFORM_LIST += msm8917
 BOARD_PLATFORM_LIST += qm215
 BOARD_PLATFORM_LIST += msm8937
+ifeq ($(TARGET_BOARD_SUFFIX),_au)
+BOARD_PLATFORM_LIST += msmnile
+endif
 BOARD_IPAv3_LIST := msm8998
 BOARD_IPAv3_LIST += sdm845
 BOARD_IPAv3_LIST += sdm710