diff options
author | Alexey Polyudov <apolyudov@google.com> | 2017-12-06 16:00:33 -0800 |
---|---|---|
committer | Alexey Polyudov <apolyudov@google.com> | 2017-12-06 16:00:33 -0800 |
commit | a4345cc9b6905cfbaf21392895ee72634f8ad13d (patch) | |
tree | fcdf301025c23da8d7af7dc7a3dcb0442d91e8db | |
parent | 05c87a9f114639b958503442cb25b10d02458e80 (diff) | |
parent | 5b63593df9ca4f4c97e533794cdfc743779e91e8 (diff) | |
download | ipacfg-mgr-a4345cc9b6905cfbaf21392895ee72634f8ad13d.tar.gz |
Merge remote-tracking branch 'goog/qcom/release/LA.UM.6.3.R1.004032.1' into HEAD
Change-Id: I89e03796bdc4cbdd75bfe8dd06048d6f15a98ab9
-rw-r--r-- | ipacm/inc/IPACM_Defs.h | 5 | ||||
-rw-r--r-- | ipacm/src/IPACM_IfaceManager.cpp | 4 | ||||
-rw-r--r-- | ipacm/src/IPACM_Main.cpp | 5 | ||||
-rw-r--r-- | ipacm/src/IPACM_OffloadManager.cpp | 20 | ||||
-rw-r--r-- | ipacm/src/IPACM_Wan.cpp | 11 | ||||
-rw-r--r-- | ipacm/src/IPACM_Wlan.cpp | 9 |
6 files changed, 46 insertions, 8 deletions
diff --git a/ipacm/inc/IPACM_Defs.h b/ipacm/inc/IPACM_Defs.h index 2031fc5..149c03a 100644 --- a/ipacm/inc/IPACM_Defs.h +++ b/ipacm/inc/IPACM_Defs.h @@ -173,7 +173,7 @@ typedef enum IPA_HANDLE_WAN_UP, /* ipacm_event_iface_up */ IPA_HANDLE_WAN_DOWN, /* ipacm_event_iface_up */ - IPA_HANDLE_WAN_UP_V6, /* NULL */ + IPA_HANDLE_WAN_UP_V6, /* ipacm_event_iface_up */ IPA_HANDLE_WAN_DOWN_V6, /* NULL */ IPA_HANDLE_WAN_UP_TETHER, /* ipacm_event_iface_up_tehter */ IPA_HANDLE_WAN_DOWN_TETHER, /* ipacm_event_iface_up_tehter */ @@ -186,7 +186,7 @@ typedef enum IPA_ETH_BRIDGE_CLIENT_ADD, /* ipacm_event_eth_bridge */ IPA_ETH_BRIDGE_CLIENT_DEL, /* ipacm_event_eth_bridge*/ IPA_ETH_BRIDGE_WLAN_SCC_MCC_SWITCH, /* ipacm_event_eth_bridge*/ - IPA_LAN_DELETE_SELF, /* ipacm_event_data_fid */ + IPA_SSR_NOTICE, /* NULL*/ #ifdef FEATURE_L2TP IPA_ADD_VLAN_IFACE, /* ipa_ioc_vlan_iface_info */ IPA_DEL_VLAN_IFACE, /* ipa_ioc_vlan_iface_info */ @@ -195,6 +195,7 @@ typedef enum IPA_HANDLE_VLAN_CLIENT_INFO, /* ipacm_event_data_all */ IPA_HANDLE_VLAN_IFACE_INFO, /* ipacm_event_data_all */ #endif + IPA_LAN_DELETE_SELF, /* ipacm_event_data_fid */ IPACM_EVENT_MAX } ipa_cm_event_id; diff --git a/ipacm/src/IPACM_IfaceManager.cpp b/ipacm/src/IPACM_IfaceManager.cpp index 17f546d..85033a3 100644 --- a/ipacm/src/IPACM_IfaceManager.cpp +++ b/ipacm/src/IPACM_IfaceManager.cpp @@ -383,6 +383,7 @@ int IPACM_IfaceManager::create_iface_instance(ipacm_ifacemgr_data *param) #ifdef FEATURE_IPACM_HAL IPACM_EvtDispatcher::registr(IPA_DOWNSTREAM_ADD, wl); IPACM_EvtDispatcher::registr(IPA_DOWNSTREAM_DEL, wl); + IPACM_EvtDispatcher::registr(IPA_SSR_NOTICE, wl); #endif #else IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP, wl); @@ -449,6 +450,9 @@ int IPACM_IfaceManager::create_iface_instance(ipacm_ifacemgr_data *param) #ifndef FEATURE_IPA_ANDROID IPACM_EvtDispatcher::registr(IPA_WLAN_SWITCH_TO_SCC, w); IPACM_EvtDispatcher::registr(IPA_WLAN_SWITCH_TO_MCC, w); +#ifdef FEATURE_IPACM_HAL + IPACM_EvtDispatcher::registr(IPA_SSR_NOTICE, w); +#endif #endif } else diff --git a/ipacm/src/IPACM_Main.cpp b/ipacm/src/IPACM_Main.cpp index 1f92bfa..55a3fd5 100644 --- a/ipacm/src/IPACM_Main.cpp +++ b/ipacm/src/IPACM_Main.cpp @@ -713,7 +713,10 @@ void* ipa_driver_msg_notifier(void *param) IPACMERR("calling OffloadMng->elrInstance->onOffloadStopped \n"); OffloadMng->elrInstance->onOffloadStopped(IpaEventRelay::ERROR); } - continue; + /* WA to clean up wlan instances during SSR */ + evt_data.event = IPA_SSR_NOTICE; + evt_data.evt_data = NULL; + break; case IPA_SSR_AFTER_POWERUP: IPACMDBG_H("Received IPA_SSR_AFTER_POWERUP\n"); OffloadMng = IPACM_OffloadManager::GetInstance(); diff --git a/ipacm/src/IPACM_OffloadManager.cpp b/ipacm/src/IPACM_OffloadManager.cpp index 4b85c6e..b13460a 100644 --- a/ipacm/src/IPACM_OffloadManager.cpp +++ b/ipacm/src/IPACM_OffloadManager.cpp @@ -445,8 +445,14 @@ RET IPACM_OffloadManager::setUpstream(const char *upstream_name, const Prefix& g if (upstream_v6_up == false) { IPACMDBG_H("IPV6 gateway: %08x:%08x:%08x:%08x \n", gw_addr_v6.v6Addr[0], gw_addr_v6.v6Addr[1], gw_addr_v6.v6Addr[2], gw_addr_v6.v6Addr[3]); - post_route_evt(IPA_IP_v6, index, IPA_WAN_UPSTREAM_ROUTE_ADD_EVENT, gw_addr_v6); - upstream_v6_up = true; + /* check v6-address valid or not */ + if((gw_addr_v6.v6Addr[0] == 0) && (gw_addr_v6.v6Addr[1] ==0) && (gw_addr_v6.v6Addr[2] == 0) && (gw_addr_v6.v6Addr[3] == 0)) + { + IPACMDBG_H("Invliad ipv6-address, ignored v6-setupstream\n"); + } else { + post_route_evt(IPA_IP_v6, index, IPA_WAN_UPSTREAM_ROUTE_ADD_EVENT, gw_addr_v6); + upstream_v6_up = true; + } } else { IPACMDBG_H("already setupstream iface(%s) ipv6 previously\n", upstream_name); } @@ -480,8 +486,14 @@ RET IPACM_OffloadManager::setUpstream(const char *upstream_name, const Prefix& g if (upstream_v6_up == false) { IPACMDBG_H("IPV6 gateway: %08x:%08x:%08x:%08x \n", gw_addr_v6.v6Addr[0], gw_addr_v6.v6Addr[1], gw_addr_v6.v6Addr[2], gw_addr_v6.v6Addr[3]); - post_route_evt(IPA_IP_v6, index, IPA_WAN_UPSTREAM_ROUTE_ADD_EVENT, gw_addr_v6); - upstream_v6_up = true; + /* check v6-address valid or not */ + if((gw_addr_v6.v6Addr[0] == 0) && (gw_addr_v6.v6Addr[1] ==0) && (gw_addr_v6.v6Addr[2] == 0) && (gw_addr_v6.v6Addr[3] == 0)) + { + IPACMDBG_H("Invliad ipv6-address, ignored v6-setupstream\n"); + } else { + post_route_evt(IPA_IP_v6, index, IPA_WAN_UPSTREAM_ROUTE_ADD_EVENT, gw_addr_v6); + upstream_v6_up = true; + } } else { IPACMDBG_H("already setupstream iface(%s) ipv6 previously\n", upstream_name); result = SUCCESS_DUPLICATE_CONFIG; diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp index 6d57c39..cf16c71 100644 --- a/ipacm/src/IPACM_Wan.cpp +++ b/ipacm/src/IPACM_Wan.cpp @@ -1254,7 +1254,16 @@ void IPACM_Wan::event_callback(ipa_cm_event_id event, void *param) } } break; - +#ifdef FEATURE_IPACM_HAL + /* WA for WLAN to clean up NAT instance during SSR */ + case IPA_SSR_NOTICE: //sky + IPACMDBG_H("Received IPA_SSR_NOTICE event.\n"); + if(m_is_sta_mode == WLAN_WAN) + { + IPACM_Iface::ipacmcfg->DelNatIfaces(dev_name); // delete NAT-iface + } + break; +#endif default: break; } diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp index 14fe0b7..ec93233 100644 --- a/ipacm/src/IPACM_Wlan.cpp +++ b/ipacm/src/IPACM_Wlan.cpp @@ -910,6 +910,15 @@ void IPACM_Wlan::event_callback(ipa_cm_event_id event, void *param) } } break; +#ifdef FEATURE_IPACM_HAL + /* WA for WLAN to clean up NAT instance during SSR */ + case IPA_SSR_NOTICE: + { + IPACMDBG_H("Received IPA_SSR_NOTICE event.\n"); + IPACM_Iface::ipacmcfg->DelNatIfaces(dev_name); // delete NAT-iface + } + break; +#endif default: break; } |