summaryrefslogtreecommitdiff
path: root/ipacm
diff options
context:
space:
mode:
authorShihuan Liu <chiaweic@codeaurora.org>2017-10-05 17:54:39 -0700
committerShihuan Liu <chiaweic@codeaurora.org>2017-10-23 11:01:57 -0700
commit14a965364d796d702f4f45ffd7093d88640870ec (patch)
treee71ebdbcfd33e23b4e0a67dedcc3a6306742576c /ipacm
parent062ad1c13776b8ff37502c74882bb99b22a185d6 (diff)
downloadipacfg-mgr-14a965364d796d702f4f45ffd7093d88640870ec.tar.gz
IPACM: change DL routing rules back to hashable
Change DL routing rules back to hashable routing rules under IPA v4. Acked-by: Shihuan Liu <shihuanl@qti.qualcomm.com> Change-Id: Iadadc7493bf19d03d2c573d3eee495b76a58ff70
Diffstat (limited to 'ipacm')
-rw-r--r--ipacm/inc/IPACM_Config.h3
-rw-r--r--ipacm/src/IPACM_Config.cpp18
-rw-r--r--ipacm/src/IPACM_Lan.cpp9
-rw-r--r--ipacm/src/IPACM_Wlan.cpp9
4 files changed, 33 insertions, 6 deletions
diff --git a/ipacm/inc/IPACM_Config.h b/ipacm/inc/IPACM_Config.h
index 1aeeec5..926ed5e 100644
--- a/ipacm/inc/IPACM_Config.h
+++ b/ipacm/inc/IPACM_Config.h
@@ -252,6 +252,8 @@ public:
int DelExtProp(ipa_ip_type ip_type);
+ enum ipa_hw_type GetIPAVer();
+
int Init(void);
inline bool isPrivateSubnet(uint32_t ip_addr)
@@ -347,6 +349,7 @@ public:
static const char *DEVICE_NAME_ODU;
private:
+ enum ipa_hw_type ver;
static IPACM_Config *pInstance;
static const char *DEVICE_NAME;
IPACM_Config(void);
diff --git a/ipacm/src/IPACM_Config.cpp b/ipacm/src/IPACM_Config.cpp
index d3fa58d..7e747f0 100644
--- a/ipacm/src/IPACM_Config.cpp
+++ b/ipacm/src/IPACM_Config.cpp
@@ -157,6 +157,7 @@ IPACM_Config::IPACM_Config()
memset(flt_rule_count_v4, 0, IPA_CLIENT_MAX*sizeof(int));
memset(flt_rule_count_v6, 0, IPA_CLIENT_MAX*sizeof(int));
memset(bridge_mac, 0, IPA_MAC_ADDR_SIZE*sizeof(uint8_t));
+ ver = IPA_HW_None;
IPACMDBG_H(" create IPACM_Config constructor\n");
return;
@@ -847,3 +848,20 @@ const char* IPACM_Config::getEventName(ipa_cm_event_id event_id)
return ipacm_event_name[event_id];
}
+
+enum ipa_hw_type IPACM_Config::GetIPAVer()
+{
+ int ret;
+
+ if(ver != IPA_HW_None)
+ return ver;
+
+ ret = ioctl(m_fd, IPA_IOC_GET_HW_VERSION, &ver);
+ if(ret != 0)
+ {
+ IPACMERR("Failed to get IPA version with error %d.\n", ret);
+ return IPA_HW_None;
+ }
+ IPACMDBG_H("IPA version is %d.\n", ver);
+ return ver;
+}
diff --git a/ipacm/src/IPACM_Lan.cpp b/ipacm/src/IPACM_Lan.cpp
index 7acb668..d574616 100644
--- a/ipacm/src/IPACM_Lan.cpp
+++ b/ipacm/src/IPACM_Lan.cpp
@@ -2212,9 +2212,12 @@ int IPACM_Lan::handle_eth_client_route_rule(uint8_t *mac_addr, ipa_ip_type iptyp
rt_rule_entry->rule.hdr_hdl = get_client_memptr(eth_client, eth_index)->hdr_hdl_v4;
rt_rule_entry->rule.attrib.u.v4.dst_addr = get_client_memptr(eth_client, eth_index)->v4_addr;
rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
-#ifdef FEATURE_IPA_V3
- rt_rule_entry->rule.hashable = false;
-#endif
+
+ if(IPACM_Iface::ipacmcfg->GetIPAVer() >= IPA_HW_v4_0)
+ {
+ rt_rule_entry->rule.hashable = true;
+ }
+
if (false == m_routing.AddRoutingRule(rt_rule))
{
IPACMERR("Routing rule addition failed!\n");
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp
index a594fe5..14fe0b7 100644
--- a/ipacm/src/IPACM_Wlan.cpp
+++ b/ipacm/src/IPACM_Wlan.cpp
@@ -1436,9 +1436,12 @@ int IPACM_Wlan::handle_wlan_client_route_rule(uint8_t *mac_addr, ipa_ip_type ipt
rt_rule_entry->rule.hdr_hdl = get_client_memptr(wlan_client, wlan_index)->hdr_hdl_v4;
rt_rule_entry->rule.attrib.u.v4.dst_addr = get_client_memptr(wlan_client, wlan_index)->v4_addr;
rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
-#ifdef FEATURE_IPA_V3
- rt_rule_entry->rule.hashable = false;
-#endif
+
+ if(IPACM_Iface::ipacmcfg->GetIPAVer() >= IPA_HW_v4_0)
+ {
+ rt_rule_entry->rule.hashable = true;
+ }
+
if (false == m_routing.AddRoutingRule(rt_rule))
{
IPACMERR("Routing rule addition failed!\n");