Enable the local cache mac address 95/60695/1
authorDeepak S <deepak.s@linux.intel.com>
Tue, 7 Aug 2018 03:20:01 +0000 (08:50 +0530)
committerDeepak S <deepak.s@linux.intel.com>
Tue, 7 Aug 2018 03:21:37 +0000 (08:51 +0530)
Change-Id: If7d72f6ab3db68bc093c42d60d125fe86f8fbda7
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
common/VIL/l2l3_stack/lib_arp.c

index 9ea57d7..90bcc06 100644 (file)
@@ -294,12 +294,20 @@ struct arp_entry_data *get_dest_mac_addr_ipv4(const uint32_t nhip,
                                 uint32_t phy_port, struct ether_addr *hw_addr)
 {
        struct arp_entry_data *ret_arp_data = NULL;
+       struct ether_addr *x;
        uint8_t index;
 
        /* as part of optimization we store mac address in cache
         * & thus can be sent without having to retrieve
         */
        if (likely(arp_cache_dest_mac_present(phy_port))) {
+               x = get_local_cache_hw_addr(phy_port, nhip);
+               if (unlikely(!x)) {
+                       printf("local copy of address not stored\n");
+                       return NULL;
+               }
+
+               ether_addr_copy(x, hw_addr);
                return &arp_entry_data_default;
        }
 
@@ -2488,7 +2496,7 @@ struct ether_addr *get_local_cache_hw_addr(uint8_t out_port, uint32_t nhip)
         limit = p_arp_data->arp_local_cache[out_port].num_nhip;
         for (i=0; i < limit; i++) {
                 tmp = p_arp_data->arp_local_cache[out_port].nhip[i];
-                if (tmp == nhip) {
+                if (likely(tmp == nhip)) {
                        x = &p_arp_data->arp_local_cache[out_port].link_hw_laddr[i];
                         return x;
                }