openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

commit 931918abf7ae507bd60f1fa5d116c391b745f862
parent 60a117d16805bea3d3c69106ad703d3d9afc454c
Author: Broadcom SDK Release <sdk.releases@broadcom.com>
Date:   Wed, 10 Apr 2019 10:34:45 -0700

SDK-175441: MAC address programming fixed for IFP_ACTIONS view of egr NH.

Devices: 56980_A0
Module: L3

Symptom:
MAC_ADDRESS field is programmed incorrectly in the IFP_ACTIONS view of
the EGR_L3_NEXT_HOP

Diffstat:
Msdk-6.5.16/src/bcm/esw/firebolt/l3.c | 17+++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/sdk-6.5.16/src/bcm/esw/firebolt/l3.c b/sdk-6.5.16/src/bcm/esw/firebolt/l3.c @@ -14265,8 +14265,10 @@ bcm_xgs3_l3_egress_create(int unit, uint32 flags, bcm_l3_egress_t *egr, soc_mem_field32_set(unit, EGR_L3_NEXT_HOPm, &egr_nh, IFP_ACTIONS__L3_UC_SA_DISABLEf, ((nh_info.flags & BCM_L3_KEEP_SRCMAC)!=0)); - soc_mem_field32_set(unit, EGR_L3_NEXT_HOPm, &egr_nh, - L3__L3_UC_SA_DISABLEf, 0); + if (!SOC_IS_TOMAHAWK3(unit)) { + soc_mem_field32_set(unit, EGR_L3_NEXT_HOPm, &egr_nh, + L3__L3_UC_SA_DISABLEf, 0); + } } if (egr->vntag_action == bcmVnTagActionChange) { @@ -31734,7 +31736,13 @@ _bcm_fb_nh_add(int unit, int idx, void *buf, void *info) 2); } #endif /* BCM_TRIUMPH_SUPPORT */ - +#if defined(BCM_TOMAHAWK3_SUPPORT) + if (soc_feature(unit, soc_feature_nh_for_ifp_actions) && + SOC_IS_TOMAHAWK3(unit) && + (nh_entry->flags2 & BCM_L3_FLAGS2_FIELD_ONLY)) { + entry_type = 2; + } +#endif #ifdef BCM_TRIDENT3_SUPPORT if (SOC_IS_TRIDENT3X(unit)) { if (nh_entry->flags2 & BCM_L3_FLAGS2_FCOE_ONLY) { @@ -32003,7 +32011,8 @@ _bcm_fb_nh_add(int unit, int idx, void *buf, void *info) /* Set next hop mac address. */ soc_mem_mac_addr_set(unit, mem, &eg_entry, mac_addr_field, nh_entry->mac_addr); - } else if (entry_type == 6) { + } else if ((entry_type == 6) || + ((SOC_IS_TOMAHAWK3(unit)) && (entry_type == 2))) { if (soc_mem_field_valid(unit, mem, IFP_ACTIONS__MAC_ADDRESSf)) { soc_mem_mac_addr_set(unit, mem, &eg_entry, IFP_ACTIONS__MAC_ADDRESSf,