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 3589cd69e41f327b0e9047db8d18d2ea1b2b4ae9
parent 0916003146ec1082e9d4a97c8a6d0150af384154
Author: Broadcom SDK Release <sdk.releases@broadcom.com>
Date:   Mon, 27 Jan 2020 14:27:58 -0800

SDK-183541: Suggested WAR for TH3-5475 is to Force PFC XON from MAC to MMU wh...

Devices: 56980_A0,56980_B0
Module: MMU

Symptom:
When traffic is flowing, shutting down the egress port is throwing
WAIT_EBCTM_EMPTY error

Suggested WAR for TH3-5475 is to Force PFC XON from MAC to MMU when
setting MAC.RX_EN to 0 as part of port down sequence

Diffstat:
Msdk-6.5.16/src/bcm/esw/portctrl.c | 17+++++++++++++++++
1 file changed, 17 insertions(+), 0 deletions(-)

diff --git a/sdk-6.5.16/src/bcm/esw/portctrl.c b/sdk-6.5.16/src/bcm/esw/portctrl.c @@ -6696,6 +6696,7 @@ bcmi_esw_portctrl_mac_rx_down(int unit, int nport, bcm_port_t *port) int i; bcm_port_t lport; portctrl_pport_t pport; + portmod_pfc_control_t pfc_control; for (i = 0; i < nport; i++) { lport = port[i]; @@ -6725,6 +6726,22 @@ bcmi_esw_portctrl_mac_rx_down(int unit, int nport, bcm_port_t *port) BCM_IF_ERROR_RETURN (portmod_port_mac_reset_set(unit, pport, 0)); } + + /* WAR for SDK-183541/TH3-5475*/ + if (SOC_IS_TOMAHAWK3(unit)) { + if (soc_feature(unit, soc_feature_priority_flow_control)) { + /* Toggle Force PFC XON */ + BCM_IF_ERROR_RETURN + (portmod_port_pfc_control_get(unit, pport, &pfc_control)); + pfc_control.force_xon = 1; + BCM_IF_ERROR_RETURN + (portmod_port_pfc_control_set(unit, pport, &pfc_control)); + pfc_control.force_xon = 0; + BCM_IF_ERROR_RETURN + (portmod_port_pfc_control_set(unit, pport, &pfc_control)); + } + } + } return BCM_E_NONE; #else /* PORTMOD_SUPPORT */