By default Broadcom switches do not enable any Forward Error Correction on ports.
To enable Forward Error Correction use the client_drivshell tool.
There are multiple algorithms supported:
- Base-R, defined in IEEE 802.3, clause 74.
- Reed-Solomon (RS) for 100G ports, defined in IEEE 802.3, clause 91.
- Reed-Solomon (RS) for 25G ports, defined in IEEE 802.3, clause 108.
The configuration uses the clause numbers to reference the different modes.
E.g., to enable RS for 100G on the first port, simply run:
client_drivshell phy control 1 cl91=true
To check the current configuration, call it without setting any modes:
client_drivshell phy control 1 Current PHY control settings of ce0 -> Preemphasis = 0x14410a DriverCurrent = 0xffffffff DFE ENable = True LP DFE ENable = True BR DFE ENable = False LinkTraining Enable = False Interface = 0x3e CL74 = False CL91 = True CL108 = False
This shows that the port has the FEC mode clause 91 or Reed-Solomon for 100G ports enabled.
FEC mode none is configured as all FEC modes being disabled. So to disable forward error correction, set the currently enabled mode to false.
E.g. if the current FEC mode on port 1 is RS over 100G, call:
client_drivshell phy control 1 cl91=false
Switch port configuration can be persisted across restarts. In order to enable RS over 100G for the ports 1 and 2 one would run
client_drivshell phy control 1 cl91=true client_drivshell phy control 2 cl91=true
To make the commands persist one would add the following lines to the file /etc/ofdpa/rc.soc
phy control 1 cl91=true phy control 2 cl91=true exit
Note the absence of client_drivshell and the single exit statement at the end.
Forward Error Correction is a property of physical ports, while bond interfaces are logical ports. So any FEC configuration needs to be set for the individual bond members.