sdm660-common: Update data-ipa-cfg-mgr from LA.UM.8.2.r1-06600-sdm660.0
Change-Id: I0bb33f221bef6caac28b87d61201df8996f9a356
This commit is contained in:
parent
e7f3124172
commit
ec070c751e
12 changed files with 110 additions and 83 deletions
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
/* External Includes */
|
/* External Includes */
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <cutils/log.h>
|
#include <log/log.h>
|
||||||
|
|
||||||
/* HIDL Includes */
|
/* HIDL Includes */
|
||||||
#include <android/hardware/tetheroffload/control/1.0/ITetheringOffloadCallback.h>
|
#include <android/hardware/tetheroffload/control/1.0/ITetheringOffloadCallback.h>
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
#include <linux/netfilter/nfnetlink_compat.h>
|
#include <linux/netfilter/nfnetlink_compat.h>
|
||||||
|
|
||||||
/* External Includes */
|
/* External Includes */
|
||||||
#include <cutils/log.h>
|
#include <log/log.h>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
@ -86,7 +86,7 @@ HAL::HAL(IOffloadManager* mgr) : mLogs("HAL Function Calls", 50) {
|
||||||
mCbCt = nullptr;
|
mCbCt = nullptr;
|
||||||
} /* HAL */
|
} /* HAL */
|
||||||
|
|
||||||
void HAL::registerAsSystemService(const char* name) {
|
void HAL::registerAsSystemService(const char* name __unused) {
|
||||||
status_t ret = 0;
|
status_t ret = 0;
|
||||||
|
|
||||||
ret = IOffloadControl::registerAsService();
|
ret = IOffloadControl::registerAsService();
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
*/
|
*/
|
||||||
#define LOG_TAG "IPAHALService/IpaEventRelay"
|
#define LOG_TAG "IPAHALService/IpaEventRelay"
|
||||||
/* External Includes */
|
/* External Includes */
|
||||||
#include <cutils/log.h>
|
#include <log/log.h>
|
||||||
|
|
||||||
/* HIDL Includes */
|
/* HIDL Includes */
|
||||||
#include <android/hardware/tetheroffload/control/1.0/ITetheringOffloadCallback.h>
|
#include <android/hardware/tetheroffload/control/1.0/ITetheringOffloadCallback.h>
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#define LOG_TAG "IPAHALService/dump"
|
#define LOG_TAG "IPAHALService/dump"
|
||||||
|
|
||||||
/* External Includes */
|
/* External Includes */
|
||||||
#include <cutils/log.h>
|
#include <log/log.h>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
|
@ -48,6 +48,7 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include <linux/rmnet_ipa_fd_ioctl.h>
|
#include <linux/rmnet_ipa_fd_ioctl.h>
|
||||||
|
|
||||||
#define IPA_PCIE_MODEM_RULE_ID_START 69
|
#define IPA_PCIE_MODEM_RULE_ID_START 69
|
||||||
|
#define IPA_PCIE_MODEM_RULE_ID_MAX 1000
|
||||||
|
|
||||||
class IPACM_Filtering
|
class IPACM_Filtering
|
||||||
{
|
{
|
||||||
|
@ -80,6 +81,7 @@ private:
|
||||||
int fd; /* File descriptor of the IPA device node /dev/ipa */
|
int fd; /* File descriptor of the IPA device node /dev/ipa */
|
||||||
int total_num_offload_rules;
|
int total_num_offload_rules;
|
||||||
int pcie_modem_rule_id;
|
int pcie_modem_rule_id;
|
||||||
|
bool pcie_modem_rule_id_in_use[IPA_PCIE_MODEM_RULE_ID_MAX];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //IPACM_FILTERING_H
|
#endif //IPACM_FILTERING_H
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright (c) 2013-2019, The Linux Foundation. All rights reserved.
|
Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are
|
modification, are permitted provided that the following conditions are
|
||||||
|
@ -53,7 +53,7 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define IPA_V2_NUM_DEFAULT_WAN_FILTER_RULE_IPV4 2
|
#define IPA_V2_NUM_DEFAULT_WAN_FILTER_RULE_IPV4 2
|
||||||
|
|
||||||
#ifdef FEATURE_IPA_ANDROID
|
#ifdef FEATURE_IPA_ANDROID
|
||||||
#define IPA_V2_NUM_DEFAULT_WAN_FILTER_RULE_IPV6 7
|
#define IPA_V2_NUM_DEFAULT_WAN_FILTER_RULE_IPV6 4
|
||||||
#define IPA_V2_NUM_TCP_WAN_FILTER_RULE_IPV6 3
|
#define IPA_V2_NUM_TCP_WAN_FILTER_RULE_IPV6 3
|
||||||
#define IPA_V2_NUM_MULTICAST_WAN_FILTER_RULE_IPV6 3
|
#define IPA_V2_NUM_MULTICAST_WAN_FILTER_RULE_IPV6 3
|
||||||
#define IPA_V2_NUM_FRAG_WAN_FILTER_RULE_IPV6 1
|
#define IPA_V2_NUM_FRAG_WAN_FILTER_RULE_IPV6 1
|
||||||
|
|
|
@ -6,9 +6,15 @@ ifneq ($(TARGET_USES_QMAA_OVERRIDE_DATA),true)
|
||||||
endif #TARGET_USES_QMAA_OVERRIDE_DATA
|
endif #TARGET_USES_QMAA_OVERRIDE_DATA
|
||||||
endif #TARGET_USES_QMAA
|
endif #TARGET_USES_QMAA
|
||||||
|
|
||||||
|
BOARD_IPA_LOW_RAM_EXCP_LIST := bengal
|
||||||
|
|
||||||
|
ifeq ($(TARGET_HAS_LOW_RAM),true)
|
||||||
|
ifneq ($(call is-board-platform-in-list,$(BOARD_IPA_LOW_RAM_EXCP_LIST)),true)
|
||||||
|
TARGET_DISABLE_IPACM := true
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(TARGET_DISABLE_IPACM),true)
|
ifneq ($(TARGET_DISABLE_IPACM),true)
|
||||||
ifneq ($(TARGET_HAS_LOW_RAM),true)
|
|
||||||
BOARD_PLATFORM_LIST := msm8909
|
BOARD_PLATFORM_LIST := msm8909
|
||||||
BOARD_PLATFORM_LIST += msm8916
|
BOARD_PLATFORM_LIST += msm8916
|
||||||
BOARD_PLATFORM_LIST += msm8917
|
BOARD_PLATFORM_LIST += msm8917
|
||||||
|
@ -151,4 +157,3 @@ endif # $(TARGET_ARCH)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
|
@ -59,6 +59,7 @@ IPACM_Filtering::IPACM_Filtering()
|
||||||
}
|
}
|
||||||
total_num_offload_rules = 0;
|
total_num_offload_rules = 0;
|
||||||
pcie_modem_rule_id = 0;
|
pcie_modem_rule_id = 0;
|
||||||
|
memset(pcie_modem_rule_id_in_use, 0, sizeof(pcie_modem_rule_id_in_use));
|
||||||
}
|
}
|
||||||
|
|
||||||
IPACM_Filtering::~IPACM_Filtering()
|
IPACM_Filtering::~IPACM_Filtering()
|
||||||
|
@ -702,7 +703,7 @@ bool IPACM_Filtering::AddWanDLFilteringRule(struct ipa_ioc_add_flt_rule const *r
|
||||||
bool IPACM_Filtering::AddOffloadFilteringRule(struct ipa_ioc_add_flt_rule *flt_rule_tbl, uint8_t mux_id, uint8_t default_path)
|
bool IPACM_Filtering::AddOffloadFilteringRule(struct ipa_ioc_add_flt_rule *flt_rule_tbl, uint8_t mux_id, uint8_t default_path)
|
||||||
{
|
{
|
||||||
#ifdef WAN_IOCTL_ADD_OFFLOAD_CONNECTION
|
#ifdef WAN_IOCTL_ADD_OFFLOAD_CONNECTION
|
||||||
int ret = 0, cnt, pos = 0;
|
int ret = 0, cnt, pos = 0, i;
|
||||||
ipa_add_offload_connection_req_msg_v01 qmi_add_msg;
|
ipa_add_offload_connection_req_msg_v01 qmi_add_msg;
|
||||||
int fd_wwan_ioctl = open(WWAN_QMI_IOCTL_DEVICE_NAME, O_RDWR);
|
int fd_wwan_ioctl = open(WWAN_QMI_IOCTL_DEVICE_NAME, O_RDWR);
|
||||||
if(fd_wwan_ioctl < 0)
|
if(fd_wwan_ioctl < 0)
|
||||||
|
@ -799,7 +800,23 @@ bool IPACM_Filtering::AddOffloadFilteringRule(struct ipa_ioc_add_flt_rule *flt_r
|
||||||
sizeof(struct ipa_filter_rule_type_v01));
|
sizeof(struct ipa_filter_rule_type_v01));
|
||||||
IPACMDBG_H("mux-id %d, hashable %d\n", qmi_add_msg.filter_spec_ex2_list[pos].mux_id, qmi_add_msg.filter_spec_ex2_list[pos].is_rule_hashable);
|
IPACMDBG_H("mux-id %d, hashable %d\n", qmi_add_msg.filter_spec_ex2_list[pos].mux_id, qmi_add_msg.filter_spec_ex2_list[pos].is_rule_hashable);
|
||||||
pos++;
|
pos++;
|
||||||
pcie_modem_rule_id = (pcie_modem_rule_id + 1)%100;
|
pcie_modem_rule_id_in_use[pcie_modem_rule_id] = true;
|
||||||
|
for(i = 0; i < IPA_PCIE_MODEM_RULE_ID_MAX; i++)
|
||||||
|
{
|
||||||
|
pcie_modem_rule_id = (pcie_modem_rule_id + 1)%IPA_PCIE_MODEM_RULE_ID_MAX;
|
||||||
|
if(!pcie_modem_rule_id_in_use[pcie_modem_rule_id])
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i == IPA_PCIE_MODEM_RULE_ID_MAX)
|
||||||
|
{
|
||||||
|
IPACMERR("all handles are in use, max = %d\n", i);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IPACMDBG("next free pcie_modem_rule_id: %d\n", pcie_modem_rule_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -884,6 +901,12 @@ bool IPACM_Filtering::DelOffloadFilteringRule(struct ipa_ioc_del_flt_rule const
|
||||||
/* passing rule-id to wan-driver */
|
/* passing rule-id to wan-driver */
|
||||||
qmi_del_msg.filter_handle_list[pos].filter_spec_identifier = flt_rule_tbl->hdl[cnt].hdl;
|
qmi_del_msg.filter_handle_list[pos].filter_spec_identifier = flt_rule_tbl->hdl[cnt].hdl;
|
||||||
pos++;
|
pos++;
|
||||||
|
|
||||||
|
/* set in use to false for future rule additions (need to subtract offset and mod max index) */
|
||||||
|
pcie_modem_rule_id_in_use[(IPA_PCIE_MODEM_RULE_ID_MAX + flt_rule_tbl->hdl[cnt].hdl - IPA_PCIE_MODEM_RULE_ID_START)
|
||||||
|
% IPA_PCIE_MODEM_RULE_ID_MAX] = false;
|
||||||
|
IPACMDBG("freeing pcie_modem_rule_id: %d\n", (IPA_PCIE_MODEM_RULE_ID_MAX + flt_rule_tbl->hdl[cnt].hdl -IPA_PCIE_MODEM_RULE_ID_START)
|
||||||
|
% IPA_PCIE_MODEM_RULE_ID_MAX);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -975,9 +998,6 @@ bool IPACM_Filtering::ModifyFilteringRule(struct ipa_ioc_mdfy_flt_rule* ruleTabl
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ioctl(fd, IPA_IOC_MDFY_FLT_RULE, ruleTable);
|
ret = ioctl(fd, IPA_IOC_MDFY_FLT_RULE, ruleTable);
|
||||||
if (ret != 0)
|
|
||||||
{
|
|
||||||
IPACMERR("Failed modifying filtering rule %pK\n", ruleTable);
|
|
||||||
|
|
||||||
for (i = 0; i < ruleTable->num_rules; i++)
|
for (i = 0; i < ruleTable->num_rules; i++)
|
||||||
{
|
{
|
||||||
|
@ -986,6 +1006,10 @@ bool IPACM_Filtering::ModifyFilteringRule(struct ipa_ioc_mdfy_flt_rule* ruleTabl
|
||||||
IPACMERR("Modifying filter rule %d failed\n", i);
|
IPACMERR("Modifying filter rule %d failed\n", i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
IPACMERR("Failed modifying filtering rule IOCTL for %pK\n", ruleTable);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4195,9 +4195,14 @@ int IPACM_Lan::handle_private_subnet_android(ipa_ip_type iptype)
|
||||||
mtu[i] = IPACM_Wan::queryMTU(ipa_if_num, IPA_IP_v4);
|
mtu[i] = IPACM_Wan::queryMTU(ipa_if_num, IPA_IP_v4);
|
||||||
|
|
||||||
if (mtu[i] > 0)
|
if (mtu[i] > 0)
|
||||||
|
{
|
||||||
mtu_rule_cnt++;
|
mtu_rule_cnt++;
|
||||||
|
IPACMDBG_H("MTU[%d] is %d\n", i, mtu[i]);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
IPACMDBG_H("MTU is zero\n");
|
{
|
||||||
|
IPACMERR("MTU is 0");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
IPACMDBG_H("total %d MTU rules are needed\n", mtu_rule_cnt);
|
IPACMDBG_H("total %d MTU rules are needed\n", mtu_rule_cnt);
|
||||||
|
|
||||||
|
@ -4227,16 +4232,16 @@ int IPACM_Lan::handle_private_subnet_android(ipa_ip_type iptype)
|
||||||
|
|
||||||
flt_rule.rule.retain_hdr = 1;
|
flt_rule.rule.retain_hdr = 1;
|
||||||
flt_rule.rule.to_uc = 0;
|
flt_rule.rule.to_uc = 0;
|
||||||
flt_rule.rule.action = IPA_PASS_TO_ROUTING;
|
|
||||||
flt_rule.rule.eq_attrib_type = 0;
|
|
||||||
flt_rule.rule.rt_tbl_hdl = IPACM_Iface::ipacmcfg->rt_tbl_default_v4.hdl;
|
|
||||||
IPACMDBG_H("Private filter rule use table: %s\n",IPACM_Iface::ipacmcfg->rt_tbl_default_v4.name);
|
IPACMDBG_H("Private filter rule use table: %s\n",IPACM_Iface::ipacmcfg->rt_tbl_default_v4.name);
|
||||||
|
|
||||||
for (i = 0; i < (IPACM_Iface::ipacmcfg->ipa_num_private_subnet); i++)
|
for (i = 0; i < (IPACM_Iface::ipacmcfg->ipa_num_private_subnet); i++)
|
||||||
{
|
{
|
||||||
/* add private subnet rule for ipv4 */
|
/* add private subnet rule for ipv4 */
|
||||||
|
/* these 3 properties below will be reset during construct_mtu_rule */
|
||||||
flt_rule.rule.action = IPA_PASS_TO_ROUTING;
|
flt_rule.rule.action = IPA_PASS_TO_ROUTING;
|
||||||
flt_rule.rule.eq_attrib_type = 0;
|
flt_rule.rule.eq_attrib_type = 0;
|
||||||
|
flt_rule.rule.rt_tbl_hdl = IPACM_Iface::ipacmcfg->rt_tbl_default_v4.hdl;
|
||||||
|
|
||||||
flt_rule.rule_hdl = private_fl_rule_hdl[i];
|
flt_rule.rule_hdl = private_fl_rule_hdl[i];
|
||||||
memcpy(&flt_rule.rule.attrib, &rx_prop->rx[0].attrib, sizeof(flt_rule.rule.attrib));
|
memcpy(&flt_rule.rule.attrib, &rx_prop->rx[0].attrib, sizeof(flt_rule.rule.attrib));
|
||||||
flt_rule.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
|
flt_rule.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
|
||||||
|
@ -4254,7 +4259,9 @@ int IPACM_Lan::handle_private_subnet_android(ipa_ip_type iptype)
|
||||||
flt_rule.rule.attrib.u.v4.src_addr = IPACM_Iface::ipacmcfg->private_subnet_table[i].subnet_addr;
|
flt_rule.rule.attrib.u.v4.src_addr = IPACM_Iface::ipacmcfg->private_subnet_table[i].subnet_addr;
|
||||||
flt_rule.rule.attrib.attrib_mask |= IPA_FLT_SRC_ADDR;
|
flt_rule.rule.attrib.attrib_mask |= IPA_FLT_SRC_ADDR;
|
||||||
if (construct_mtu_rule(&flt_rule.rule, IPA_IP_v4, mtu[i]))
|
if (construct_mtu_rule(&flt_rule.rule, IPA_IP_v4, mtu[i]))
|
||||||
|
{
|
||||||
IPACMERR("Failed to modify MTU filtering rule.\n");
|
IPACMERR("Failed to modify MTU filtering rule.\n");
|
||||||
|
}
|
||||||
memcpy(&(pFilteringTable->rules[mtu_rule_idx + i]), &flt_rule, sizeof(struct ipa_flt_rule_mdfy));
|
memcpy(&(pFilteringTable->rules[mtu_rule_idx + i]), &flt_rule, sizeof(struct ipa_flt_rule_mdfy));
|
||||||
IPACMDBG_H("Adding MTU rule for private subnet 0x%x.\n", flt_rule.rule.attrib.u.v4.src_addr);
|
IPACMDBG_H("Adding MTU rule for private subnet 0x%x.\n", flt_rule.rule.attrib.u.v4.src_addr);
|
||||||
}
|
}
|
||||||
|
@ -4292,7 +4299,14 @@ int IPACM_Lan::install_ipv6_prefix_flt_rule(uint32_t* prefix)
|
||||||
|
|
||||||
uint16_t mtu = IPACM_Wan::queryMTU(ipa_if_num, IPA_IP_v6);
|
uint16_t mtu = IPACM_Wan::queryMTU(ipa_if_num, IPA_IP_v6);
|
||||||
if (mtu > 0)
|
if (mtu > 0)
|
||||||
|
{
|
||||||
|
IPACMDBG_H("MTU is %d\n", mtu);
|
||||||
rule_cnt ++;
|
rule_cnt ++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IPACMERR("MTU is 0");
|
||||||
|
}
|
||||||
|
|
||||||
if(rx_prop != NULL)
|
if(rx_prop != NULL)
|
||||||
{
|
{
|
||||||
|
@ -6023,6 +6037,7 @@ int IPACM_Lan::add_l2tp_flt_rule(ipa_ip_type iptype, uint8_t *dst_mac, uint32_t
|
||||||
if(m_routing.GetRoutingTable(&rt_tbl) == false)
|
if(m_routing.GetRoutingTable(&rt_tbl) == false)
|
||||||
{
|
{
|
||||||
IPACMERR("Failed to get routing table.\n");
|
IPACMERR("Failed to get routing table.\n");
|
||||||
|
free(pFilteringTable);
|
||||||
return IPACM_FAILURE;
|
return IPACM_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -453,6 +453,7 @@ void* ipa_driver_msg_notifier(void *param)
|
||||||
if (data_ex == NULL)
|
if (data_ex == NULL)
|
||||||
{
|
{
|
||||||
IPACMERR("unable to allocate memory for event data\n");
|
IPACMERR("unable to allocate memory for event data\n");
|
||||||
|
free(event_ex);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
data_ex->num_of_attribs = event_ex->num_of_attribs;
|
data_ex->num_of_attribs = event_ex->num_of_attribs;
|
||||||
|
|
|
@ -709,6 +709,7 @@ static int ipa_nl_decode_nlmsg
|
||||||
if(ret_val != IPACM_SUCCESS)
|
if(ret_val != IPACM_SUCCESS)
|
||||||
{
|
{
|
||||||
IPACMERR("Error while getting interface name\n");
|
IPACMERR("Error while getting interface name\n");
|
||||||
|
free(data_fid);
|
||||||
return IPACM_FAILURE;
|
return IPACM_FAILURE;
|
||||||
}
|
}
|
||||||
IPACMDBG_H("Got a usb link_up event (Interface %s, %d) \n", dev_name, msg_ptr->nl_link_info.metainfo.ifi_index);
|
IPACMDBG_H("Got a usb link_up event (Interface %s, %d) \n", dev_name, msg_ptr->nl_link_info.metainfo.ifi_index);
|
||||||
|
|
|
@ -5166,17 +5166,6 @@ int IPACM_Wan::handle_down_evt()
|
||||||
handle_route_del_evt(IPA_IP_v4);
|
handle_route_del_evt(IPA_IP_v4);
|
||||||
IPACMDBG_H("Delete default v4 routing rules\n");
|
IPACMDBG_H("Delete default v4 routing rules\n");
|
||||||
|
|
||||||
if(m_is_sta_mode == Q6_MHI_WAN)
|
|
||||||
{
|
|
||||||
/* Delete default v4 RT rule */
|
|
||||||
IPACMDBG_H("Delete default v4 routing rules\n");
|
|
||||||
if (m_routing.DeleteRoutingHdl(dft_rt_rule_hdl[0], IPA_IP_v4) == false)
|
|
||||||
{
|
|
||||||
IPACMERR("Routing v6-lan-RT rule deletion failed!\n");
|
|
||||||
res = IPACM_FAILURE;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef FEATURE_IPA_ANDROID
|
#ifdef FEATURE_IPA_ANDROID
|
||||||
/* posting wan_down_tether for lan clients */
|
/* posting wan_down_tether for lan clients */
|
||||||
|
@ -5208,18 +5197,6 @@ int IPACM_Wan::handle_down_evt()
|
||||||
handle_route_del_evt(IPA_IP_v6);
|
handle_route_del_evt(IPA_IP_v6);
|
||||||
IPACMDBG_H("Delete default v6 routing rules\n");
|
IPACMDBG_H("Delete default v6 routing rules\n");
|
||||||
|
|
||||||
if(m_is_sta_mode == Q6_MHI_WAN)
|
|
||||||
{
|
|
||||||
/* Delete default v6 RT rule */
|
|
||||||
IPACMDBG_H("Delete default v6 routing rules\n");
|
|
||||||
if (m_routing.DeleteRoutingHdl(dft_rt_rule_hdl[1], IPA_IP_v6) == false)
|
|
||||||
{
|
|
||||||
IPACMERR("Routing v6-wan-RT rule deletion failed!\n");
|
|
||||||
res = IPACM_FAILURE;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef FEATURE_IPA_ANDROID
|
#ifdef FEATURE_IPA_ANDROID
|
||||||
/* posting wan_down_tether for lan clients */
|
/* posting wan_down_tether for lan clients */
|
||||||
#ifdef FEATURE_IPACM_HAL
|
#ifdef FEATURE_IPACM_HAL
|
||||||
|
@ -5241,10 +5218,8 @@ int IPACM_Wan::handle_down_evt()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_is_sta_mode != Q6_MHI_WAN)
|
|
||||||
{
|
|
||||||
/* Delete default v4 RT rule */
|
/* Delete default v4 RT rule */
|
||||||
if (ip_type != IPA_IP_v6)
|
if (ip_type != IPA_IP_v6 && wan_v4_addr_set)
|
||||||
{
|
{
|
||||||
/* no need delete v4 RSC routing rules */
|
/* no need delete v4 RSC routing rules */
|
||||||
IPACMDBG_H("Delete default v4 routing rules\n");
|
IPACMDBG_H("Delete default v4 routing rules\n");
|
||||||
|
@ -5272,6 +5247,22 @@ int IPACM_Wan::handle_down_evt()
|
||||||
}
|
}
|
||||||
IPACMDBG_H("finished delete default v6 RT rules\n ");
|
IPACMDBG_H("finished delete default v6 RT rules\n ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* check software routing fl rule hdl */
|
||||||
|
if (softwarerouting_act == true)
|
||||||
|
{
|
||||||
|
if(m_is_sta_mode == Q6_MHI_WAN)
|
||||||
|
{
|
||||||
|
handle_software_routing_disable(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
handle_software_routing_disable(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m_is_sta_mode != Q6_MHI_WAN)
|
||||||
|
{
|
||||||
/* clean wan-client header, routing rules */
|
/* clean wan-client header, routing rules */
|
||||||
IPACMDBG_H("left %d wan clients need to be deleted \n ", num_wan_client);
|
IPACMDBG_H("left %d wan clients need to be deleted \n ", num_wan_client);
|
||||||
for (i = 0; i < num_wan_client; i++)
|
for (i = 0; i < num_wan_client; i++)
|
||||||
|
@ -5320,18 +5311,6 @@ int IPACM_Wan::handle_down_evt()
|
||||||
/* free the edm clients cache */
|
/* free the edm clients cache */
|
||||||
IPACMDBG_H("Free wan clients cache\n");
|
IPACMDBG_H("Free wan clients cache\n");
|
||||||
|
|
||||||
/* check software routing fl rule hdl */
|
|
||||||
if (softwarerouting_act == true)
|
|
||||||
{
|
|
||||||
if(m_is_sta_mode == Q6_MHI_WAN)
|
|
||||||
{
|
|
||||||
handle_software_routing_disable(true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
handle_software_routing_disable(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* free dft ipv4 filter rule handlers if any */
|
/* free dft ipv4 filter rule handlers if any */
|
||||||
if (ip_type != IPA_IP_v6 && rx_prop != NULL)
|
if (ip_type != IPA_IP_v6 && rx_prop != NULL)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue