This guide expects you to have a working RPM-based distro with the NVIDIA Firmware Tools installed.

See Install NVIDIA Firmware Tools


  1. Identify your MST device path
$ sudo mst status
MST modules:
------------
    MST PCI module is not loaded
    MST PCI configuration module loaded

MST devices:
------------
/dev/mst/mt4117_pciconf0         - PCI configuration cycles access.
                                   domain:bus:dev.fn=0000:02:01.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1
                                   Chip revision is: 00

The device path is /dev/mst/mt4117_pciconf0.

  1. Check the current values
$ sudo mlxconfig -d /dev/mst/mt4117_pciconf0 query | grep PHY_FEC_OVERRIDE
        PHY_FEC_OVERRIDE_P1                             DEVICE_DEFAULT(0)
        PHY_FEC_OVERRIDE_P2                             DEVICE_DEFAULT(0)
  1. Check the valid values and their meanings
$ sudo mlxconfig -d /dev/mst/mt4117_pciconf0 i | grep -A10 PHY_FEC_OVERRIDE
                    PHY_FEC_OVERRIDE_P1=<DEVICE_DEFAULT|MODE_1|MODE_2|MODE_3|MODE_4>Customizes FEC configuration of the port
                                                            0x0: DEVICE_DEFAULT
                                                            0x1: MODE_1 - disabled DME, disabled FEC for 25G/50G/100G
                                                            0x2: MODE_2 - disabled DME, RS FEC for 25G/50G/100G
                                                            0x3: MODE_3 - disabled DME, FC FEC for 25G/50G or RS FEC for 100G
                                                            0x4: MODE_4 - disable non_dme (enable Auto Negotiation)
                                                            Other values are reserved

RS FEC = CL91 = FE91 = ... (don't quote me on that)

  1. Set the mode
$ sudo mlxconfig -d /dev/mst/mt4117_pciconf0 set PHY_FEC_OVERRIDE_P1=2
  1. Reboot

  2. Verify

$ sudo mst start
$ sudo mlxconfig -d /dev/mst/mt4117_pciconf0 q PHY_FEC_OVERRIDE_P1