IPACM: fix modem assert issue after eMBMS goes down
Fix the issue of wrong filtering action which causes
modem assert/crah by resetting embms_is_on to be false
after eMBMS goes down
Change-Id: If09a8f1cfbfaca25b86d5cd8d61b1b4e1fc7e7d3
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index 2d806ab..c9f84e8 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -3871,12 +3871,6 @@
IPACMDBG_H(" wan handle_down_evt \n");
- /* no iface address up, directly close iface*/
- if (ip_type == IPACM_IP_NULL)
- {
- goto fail;
- }
-
/* free ODU filter rule handlers */
if(IPACM_Iface::ipacmcfg->iface_table[ipa_if_num].if_cat == EMBMS_IF)
{
@@ -3894,6 +3888,12 @@
goto fail;
}
+ /* no iface address up, directly close iface*/
+ if (ip_type == IPACM_IP_NULL)
+ {
+ goto fail;
+ }
+
if(ip_type == IPA_IP_v4)
{
num_ipv4_modem_pdn--;
@@ -4228,6 +4228,7 @@
IPACMERR("Error Locate ipa_flt_rule_add memory...\n");
return IPACM_FAILURE;
}
+ memset(pFilteringTable_v4, 0, len);
pFilteringTable_v4->commit = 1;
pFilteringTable_v4->ep = rx_prop->rx[0].src_pipe;
pFilteringTable_v4->global = false;
@@ -4250,6 +4251,7 @@
free(pFilteringTable_v4);
return IPACM_FAILURE;
}
+ memset(pFilteringTable_v6, 0, len);
pFilteringTable_v6->commit = 1;
pFilteringTable_v6->ep = rx_prop->rx[0].src_pipe;
pFilteringTable_v6->global = false;
@@ -4270,6 +4272,7 @@
IPACMERR("Error Locate ipa_flt_rule_add memory...\n");
return IPACM_FAILURE;
}
+ memset(pFilteringTable_v4, 0, len);
pFilteringTable_v4->commit = 1;
pFilteringTable_v4->ep = rx_prop->rx[0].src_pipe;
pFilteringTable_v4->global = false;
@@ -4286,6 +4289,7 @@
free(pFilteringTable_v4);
return IPACM_FAILURE;
}
+ memset(pFilteringTable_v6, 0, len);
pFilteringTable_v6->commit = 1;
pFilteringTable_v6->ep = rx_prop->rx[0].src_pipe;
pFilteringTable_v6->global = false;