summaryrefslogtreecommitdiff
path: root/ipacm/src/IPACM_Wlan.cpp
diff options
context:
space:
mode:
authorMohammed Javid <mjavid@codeaurora.org>2018-07-16 13:50:12 +0530
committerMohammed Javid <mjavid@codeaurora.org>2018-08-10 21:25:27 +0530
commit9171636762cf5574f919772164180fe34dcc7d80 (patch)
tree4ecb290633f572bc468433b9e49eb43241ab8da3 /ipacm/src/IPACM_Wlan.cpp
parent442dad7d4dae8e340b05f63f53ec4dadf1624bfd (diff)
downloadipacfg-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.cpp29
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;