Enabling Forward Error Correction (FEC) on a port
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.
Disabling Forward Error Correction (FEC)
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
Persistent Forward Error Correction (FEC) configuration
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 (FEC) and bonded interfaces
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.