aboutsummaryrefslogtreecommitdiff
path: root/data-ipa-cfg-mgr/ipacm/src/IPACM_Main.cpp
diff options
context:
space:
mode:
authorBruno Martins <bgcngm@gmail.com>2018-09-07 17:34:01 +0100
committerDavide Garberi <dade.garberi@gmail.com>2018-09-13 15:22:10 +0200
commit9b3b1b12a25947f1d09e445e96cb66e5190275ac (patch)
tree03b1e1fa70f82097e81f4a271645dee3391767d7 /data-ipa-cfg-mgr/ipacm/src/IPACM_Main.cpp
parent0bde58e2bc8440f4d98f0d383dad26f450ad8fd8 (diff)
msm8996-common: Update IPACM for P release
* Tag: LA.UM.7.5.r1-02200-8x96.0 Change-Id: Id7f0760c0dd1e5476db88d6089d0084eae127a49 Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Diffstat (limited to 'data-ipa-cfg-mgr/ipacm/src/IPACM_Main.cpp')
-rw-r--r--data-ipa-cfg-mgr/ipacm/src/IPACM_Main.cpp45
1 files changed, 43 insertions, 2 deletions
diff --git a/data-ipa-cfg-mgr/ipacm/src/IPACM_Main.cpp b/data-ipa-cfg-mgr/ipacm/src/IPACM_Main.cpp
index 76f805c..036c061 100644
--- a/data-ipa-cfg-mgr/ipacm/src/IPACM_Main.cpp
+++ b/data-ipa-cfg-mgr/ipacm/src/IPACM_Main.cpp
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
+Copyright (c) 2013-2018, The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
@@ -109,6 +109,12 @@ int ipa_get_if_index(char *if_name, int *if_index);
IPACM_Neighbor *neigh;
IPACM_IfaceManager *ifacemgr;
+#ifdef FEATURE_IPACM_RESTART
+int ipa_reset();
+/* support ipacm restart */
+int ipa_query_wlan_client();
+#endif
+
#ifdef FEATURE_IPACM_HAL
IPACM_OffloadManager* OffloadMng;
HAL *hal;
@@ -233,7 +239,9 @@ void* ipa_driver_msg_notifier(void *param)
struct ipa_wlan_msg_ex *event_ex= NULL;
struct ipa_get_data_stats_resp_msg_v01 event_data_stats;
struct ipa_get_apn_data_stats_resp_msg_v01 event_network_stats;
+#ifdef FEATURE_IPACM_HAL
IPACM_OffloadManager* OffloadMng;
+#endif
ipacm_cmd_q_data evt_data;
ipacm_event_data_mac *data = NULL;
@@ -727,6 +735,13 @@ void* ipa_driver_msg_notifier(void *param)
OffloadMng->elrInstance->onOffloadSupportAvailable();
}
continue;
+#ifdef IPA_WLAN_FW_SSR_EVENT_MAX
+ case WLAN_FWR_SSR_BEFORE_SHUTDOWN:
+ IPACMDBG_H("Received WLAN_FWR_SSR_BEFORE_SHUTDOWN\n");
+ evt_data.event = IPA_WLAN_FWR_SSR_BEFORE_SHUTDOWN_NOTICE;
+ evt_data.evt_data = NULL;
+ break;
+#endif
#endif
#ifdef FEATURE_L2TP
case ADD_VLAN_IFACE:
@@ -845,9 +860,13 @@ int main(int argc, char **argv)
(void)argc;
(void)argv;
+#ifdef FEATURE_IPACM_RESTART
+ IPACMDBG_H("RESET IPA-HW rules\n");
+ ipa_reset();
+#endif
+
neigh = new IPACM_Neighbor();
ifacemgr = new IPACM_IfaceManager();
-
#ifdef FEATURE_IPACM_HAL
OffloadMng = IPACM_OffloadManager::GetInstance();
hal = HAL::makeIPAHAL(1, OffloadMng);
@@ -1049,3 +1068,25 @@ int ipa_get_if_index
close(fd);
return IPACM_SUCCESS;
}
+
+#ifdef FEATURE_IPACM_RESTART
+int ipa_reset()
+{
+ int fd = -1;
+
+ if ((fd = open(IPA_DEVICE_NAME, O_RDWR)) < 0) {
+ IPACMERR("Failed opening %s.\n", IPA_DEVICE_NAME);
+ return IPACM_FAILURE;
+ }
+
+ if (ioctl(fd, IPA_IOC_CLEANUP) < 0) {
+ IPACMERR("IOCTL IPA_IOC_CLEANUP call failed: %s \n", strerror(errno));
+ close(fd);
+ return IPACM_FAILURE;
+ }
+
+ IPACMDBG_H("send IPA_IOC_CLEANUP \n");
+ close(fd);
+ return IPACM_SUCCESS;
+}
+#endif