diff options
author | Shihuan Liu <chiaweic@codeaurora.org> | 2017-10-05 17:54:39 -0700 |
---|---|---|
committer | Shihuan Liu <chiaweic@codeaurora.org> | 2017-10-23 11:01:57 -0700 |
commit | 14a965364d796d702f4f45ffd7093d88640870ec (patch) | |
tree | e71ebdbcfd33e23b4e0a67dedcc3a6306742576c /ipacm | |
parent | 062ad1c13776b8ff37502c74882bb99b22a185d6 (diff) | |
download | ipacfg-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.h | 3 | ||||
-rw-r--r-- | ipacm/src/IPACM_Config.cpp | 18 | ||||
-rw-r--r-- | ipacm/src/IPACM_Lan.cpp | 9 | ||||
-rw-r--r-- | ipacm/src/IPACM_Wlan.cpp | 9 |
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"); |