diff options
| author | Mohammed Javid <mjavid@codeaurora.org> | 2018-05-31 17:12:36 +0530 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-06-26 01:43:17 -0700 |
| commit | 21e24539c3ccfa37dd43423dbe4843b64153400f (patch) | |
| tree | 277ae7627d1e25231136b4376f605a3aa6be3103 | |
| parent | e725ea643992936e1f69089fd908d91e031b31aa (diff) | |
ipacm: For HAL feature, post wan_down event with 0 tether iface
Currently when WAN comes up, value of
IPACM_Wan::ipa_if_num_tether_v4_total is incremented. But
it is decremented in both case when WAN or LAN iface goes
down. So if WAN is up but LAN tether iface goes down and
comes up, value of IPACM_Wan::ipa_if_num_tether_v4_total
is 0. In result later UL flt rules will not be deleted when
wan goes down. In case of HAL post wan_down event with 0
if_num_tether and add condition to delete tether iface only
if HAL feature is not defined.
Change-Id: I3289cd89e2fd4de135ef44f402345644477e37b0
| -rw-r--r-- | ipacm/src/IPACM_Lan.cpp | 2 | ||||
| -rw-r--r-- | ipacm/src/IPACM_Wan.cpp | 21 | ||||
| -rw-r--r-- | ipacm/src/IPACM_Wlan.cpp | 2 |
3 files changed, 24 insertions, 1 deletions
diff --git a/ipacm/src/IPACM_Lan.cpp b/ipacm/src/IPACM_Lan.cpp index 289044a..eb863f7 100644 --- a/ipacm/src/IPACM_Lan.cpp +++ b/ipacm/src/IPACM_Lan.cpp @@ -2916,9 +2916,11 @@ int IPACM_Lan::handle_down_evt() IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode); handle_wan_down(IPACM_Wan::backhaul_is_sta_mode); #ifdef FEATURE_IPA_ANDROID +#ifndef FEATURE_IPACM_HAL /* Clean-up tethered-iface list */ IPACM_Wan::delete_tether_iface(IPA_IP_v4, ipa_if_num); #endif +#endif } if (IPACM_Wan::isWanUP_V6(ipa_if_num) && rx_prop != NULL) diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp index a131b23..f0fd119 100644 --- a/ipacm/src/IPACM_Wan.cpp +++ b/ipacm/src/IPACM_Wan.cpp @@ -1747,6 +1747,7 @@ int IPACM_Wan::post_wan_up_tether_evt(ipa_ip_type iptype, int ipa_if_num_tether) if (iptype == IPA_IP_v4) { evt_data.event = IPA_HANDLE_WAN_UP_TETHER; +#ifndef FEATURE_IPACM_HAL /* Add support tether ifaces to its array*/ IPACM_Wan::ipa_if_num_tether_v4[IPACM_Wan::ipa_if_num_tether_v4_total] = ipa_if_num_tether; IPACMDBG_H("adding tether iface(%s) ipa_if_num_tether_v4_total(%d) on wan_iface(%s)\n", @@ -1754,11 +1755,13 @@ int IPACM_Wan::post_wan_up_tether_evt(ipa_ip_type iptype, int ipa_if_num_tether) IPACM_Wan::ipa_if_num_tether_v4_total, IPACM_Iface::ipacmcfg->iface_table[ipa_if_num].iface_name); IPACM_Wan::ipa_if_num_tether_v4_total++; +#endif } else { evt_data.event = IPA_HANDLE_WAN_UP_V6_TETHER; memcpy(wanup_data->ipv6_prefix, ipv6_prefix, sizeof(wanup_data->ipv6_prefix)); +#ifndef FEATURE_IPACM_HAL /* Add support tether ifaces to its array*/ IPACM_Wan::ipa_if_num_tether_v6[IPACM_Wan::ipa_if_num_tether_v6_total] = ipa_if_num_tether; IPACMDBG_H("adding tether iface(%s) ipa_if_num_tether_v6_total(%d) on wan_iface(%s)\n", @@ -1766,6 +1769,7 @@ int IPACM_Wan::post_wan_up_tether_evt(ipa_ip_type iptype, int ipa_if_num_tether) IPACM_Wan::ipa_if_num_tether_v6_total, IPACM_Iface::ipacmcfg->iface_table[ipa_if_num].iface_name); IPACM_Wan::ipa_if_num_tether_v6_total++; +#endif } evt_data.evt_data = (void *)wanup_data; IPACM_EvtDispatcher::PostEvt(&evt_data); @@ -1804,22 +1808,26 @@ int IPACM_Wan::post_wan_down_tether_evt(ipa_ip_type iptype, int ipa_if_num_tethe if (iptype == IPA_IP_v4) { +#ifndef FEATURE_IPACM_HAL if(delete_tether_iface(iptype, ipa_if_num_tether)) { IPACMDBG_H("Not finding the tethered client on ipv4.\n"); free(wandown_data); return IPACM_SUCCESS; } +#endif evt_data.event = IPA_HANDLE_WAN_DOWN_TETHER; } else { +#ifndef FEATURE_IPACM_HAL if(delete_tether_iface(iptype, ipa_if_num_tether)) { IPACMDBG_H("Not finding the tethered client on ipv6.\n"); free(wandown_data); return IPACM_SUCCESS; } +#endif evt_data.event = IPA_HANDLE_WAN_DOWN_V6_TETHER; } evt_data.evt_data = (void *)wandown_data; @@ -4713,8 +4721,11 @@ fail: int IPACM_Wan::handle_down_evt_ex() { int res = IPACM_SUCCESS; - uint32_t i, tether_total; + uint32_t i; +#ifndef FEATURE_IPACM_HAL + uint32_t tether_total; int ipa_if_num_tether_tmp[IPA_MAX_IFACE_ENTRIES]; +#endif IPACMDBG_H(" wan handle_down_evt \n"); @@ -4759,6 +4770,9 @@ int IPACM_Wan::handle_down_evt_ex() handle_route_del_evt_ex(IPA_IP_v4); #ifdef FEATURE_IPA_ANDROID /* posting wan_down_tether for all lan clients */ +#ifdef FEATURE_IPACM_HAL + post_wan_down_tether_evt(IPA_IP_v4, 0); +#else for (i=0; i < IPACM_Wan::ipa_if_num_tether_v4_total; i++) { ipa_if_num_tether_tmp[i] = IPACM_Wan::ipa_if_num_tether_v4[i]; @@ -4771,6 +4785,7 @@ int IPACM_Wan::handle_down_evt_ex() i, IPACM_Iface::ipacmcfg->iface_table[ipa_if_num_tether_tmp[i]].iface_name); } #endif +#endif if(IPACM_Wan::wan_up_v6) { IPACMDBG_H("modem v6-call still up(%s), not reset\n", IPACM_Wan::wan_up_dev_name); @@ -4811,6 +4826,9 @@ int IPACM_Wan::handle_down_evt_ex() handle_route_del_evt_ex(IPA_IP_v6); #ifdef FEATURE_IPA_ANDROID /* posting wan_down_tether for all lan clients */ +#ifdef FEATURE_IPACM_HAL + post_wan_down_tether_evt(IPA_IP_v6, 0); +#else for (i=0; i < IPACM_Wan::ipa_if_num_tether_v6_total; i++) { ipa_if_num_tether_tmp[i] = IPACM_Wan::ipa_if_num_tether_v6[i]; @@ -4823,6 +4841,7 @@ int IPACM_Wan::handle_down_evt_ex() i, IPACM_Iface::ipacmcfg->iface_table[ipa_if_num_tether_tmp[i]].iface_name); } #endif +#endif if(IPACM_Wan::wan_up) { IPACMDBG_H("modem v4-call still up(%s), not reset\n", IPACM_Wan::wan_up_dev_name); diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp index 4925e1c..9f17b28 100644 --- a/ipacm/src/IPACM_Wlan.cpp +++ b/ipacm/src/IPACM_Wlan.cpp @@ -1755,9 +1755,11 @@ int IPACM_Wlan::handle_down_evt() IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode); IPACM_Lan::handle_wan_down(IPACM_Wan::backhaul_is_sta_mode); #ifdef FEATURE_IPA_ANDROID +#ifndef FEATURE_IPACM_HAL /* Clean-up tethered-iface list */ IPACM_Wan::delete_tether_iface(IPA_IP_v4, ipa_if_num); #endif +#endif } if (IPACM_Wan::isWanUP_V6(ipa_if_num) && rx_prop != NULL) |
