From 0b35af460f2ebb480fa1cdc46c69956be117cfa7 Mon Sep 17 00:00:00 2001
From: Deepak S <deepak.s@linux.intel.com>
Date: Tue, 5 Jun 2018 19:44:01 +0530
Subject: TempFix: vCGNAPT/vACL ipv4 perf issue

Change-Id: I924fcac7a65c0d221d5d422f419deb9c0f864172
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
---
 VNFs/vACL/pipeline/pipeline_acl_be.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

(limited to 'VNFs/vACL')

diff --git a/VNFs/vACL/pipeline/pipeline_acl_be.c b/VNFs/vACL/pipeline/pipeline_acl_be.c
index d4b92109..5da2e36f 100644
--- a/VNFs/vACL/pipeline/pipeline_acl_be.c
+++ b/VNFs/vACL/pipeline/pipeline_acl_be.c
@@ -777,7 +777,13 @@ pkt_work_acl_key(struct rte_pipeline *p,
             uint32_t packet_length = rte_pktmbuf_pkt_len(pkt);
 
             uint32_t dest_if = INVALID_DESTIF;
+            uint32_t dst_phy_port = INVALID_DESTIF;
             uint32_t src_phy_port = pkt->port;
+            if(is_phy_port_privte(src_phy_port))
+              dst_phy_port = prv_to_pub_map[src_phy_port];
+            else
+              dst_phy_port = pub_to_prv_map[src_phy_port];
+
 
             if(is_gateway()){
 
@@ -794,7 +800,7 @@ pkt_work_acl_key(struct rte_pipeline *p,
                 uint32_t nhip = 0;
                 uint32_t dst_ip_addr = rte_bswap32(ipv4hdr->dst_addr);
 
-                gw_get_nh_port_ipv4(dst_ip_addr, &dest_if, &nhip);
+                gw_get_route_nh_port_ipv4(dst_ip_addr, &dest_if, &nhip, dst_phy_port);
 
                 ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if, &dst_mac);
 
@@ -1475,6 +1481,11 @@ pkt_work_acl_ipv4_key(struct rte_pipeline *p,
 
             uint32_t dest_if = INVALID_DESTIF;
             uint32_t src_phy_port = pkt->port;
+            uint32_t dst_phy_port = INVALID_DESTIF;
+            if(is_phy_port_privte(src_phy_port))
+              dst_phy_port = prv_to_pub_map[src_phy_port];
+            else
+              dst_phy_port = pub_to_prv_map[src_phy_port];
 
             if(is_gateway()){
 
@@ -1493,7 +1504,7 @@ pkt_work_acl_ipv4_key(struct rte_pipeline *p,
                 uint32_t src_phy_port = pkt->port;
                 uint32_t dst_ip_addr = rte_bswap32(ipv4hdr->dst_addr);
 
-                gw_get_nh_port_ipv4(dst_ip_addr, &dest_if, &nhip);
+                gw_get_route_nh_port_ipv4(dst_ip_addr, &dest_if, &nhip, dst_phy_port);
 
                 ret_arp_data = get_dest_mac_addr_ipv4(nhip, dest_if, &dst_mac);
 
-- 
cgit