diff options
author | Mohammed Javid <mjavid@codeaurora.org> | 2018-07-16 13:50:12 +0530 |
---|---|---|
committer | Mohammed Javid <mjavid@codeaurora.org> | 2018-08-10 21:25:27 +0530 |
commit | 9171636762cf5574f919772164180fe34dcc7d80 (patch) | |
tree | 4ecb290633f572bc468433b9e49eb43241ab8da3 /ipacm/src/IPACM_Wlan.cpp | |
parent | 442dad7d4dae8e340b05f63f53ec4dadf1624bfd (diff) | |
download | ipacfg-mgr-9171636762cf5574f919772164180fe34dcc7d80.tar.gz |
ipacm: Handle WLAN FW rejuvenate events
Handle WLAN FW SSR event for FW rejuvenate
scenario.
Change-Id: Ieceaf20a05dd645e56e3fb3b87ffd7cb97453cb0
Diffstat (limited to 'ipacm/src/IPACM_Wlan.cpp')
-rw-r--r-- | ipacm/src/IPACM_Wlan.cpp | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp index ef1fb1d..b787bad 100644 --- a/ipacm/src/IPACM_Wlan.cpp +++ b/ipacm/src/IPACM_Wlan.cpp @@ -49,7 +49,9 @@ Skylar Chang #include <IPACM_Lan.h> #include <IPACM_IfaceManager.h> #include <IPACM_ConntrackListener.h> - +#ifdef FEATURE_IPACM_HAL +#include "IPACM_OffloadManager.h" +#endif /* static member to store the number of total wifi clients within all APs*/ int IPACM_Wlan::total_num_wifi_clients = 0; @@ -149,6 +151,9 @@ void IPACM_Wlan::event_callback(ipa_cm_event_id event, void *param) int wlan_index; ipacm_ext_prop* ext_prop; ipacm_event_iface_up_tehter* data_wan_tether; +#ifdef FEATURE_IPACM_HAL + IPACM_OffloadManager* OffloadMng; +#endif switch (event) { @@ -941,6 +946,28 @@ void IPACM_Wlan::event_callback(ipa_cm_event_id event, void *param) IPACM_Iface::ipacmcfg->DelNatIfaces(dev_name); // delete NAT-iface } break; + case IPA_WLAN_FWR_SSR_BEFORE_SHUTDOWN_NOTICE: + { + IPACMDBG_H("Received IPA_WLAN_FWR_SSR_BEFORE_SHUTDOWN_NOTICE.\n"); + + /* internal push add_downstream event in cache */ + OffloadMng = IPACM_OffloadManager::GetInstance(); + if (OffloadMng == NULL) { + IPACMERR("failed to get IPACM_OffloadManager instance !\n"); + } else { + IPACMDBG_H("Update iface %s add_downstream cache events\n", dev_name); + if(ip_type == IPA_IP_v4 || ip_type == IPA_IP_MAX) + { + OffloadMng->push_framework_event(dev_name, prefix[IPA_IP_v4]); + } + else if(ip_type == IPA_IP_v6 || ip_type == IPA_IP_MAX) + { + OffloadMng->push_framework_event(dev_name, prefix[IPA_IP_v6]); + } + } + IPACM_Iface::ipacmcfg->DelNatIfaces(dev_name); // delete NAT-iface + } + break; #endif default: break; |