i40e: fix the restart auto-negotiation after FEC modified
authorJaroslaw Gawin <jaroslawx.gawin@intel.com>
Tue, 13 Apr 2021 14:19:40 +0000 (14:19 +0000)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 7 May 2021 16:35:49 +0000 (09:35 -0700)
When FEC mode was changed the link didn't know it because
the link was not reset and new parameters were not negotiated.
Set a flag 'I40E_AQ_PHY_ENABLE_ATOMIC_LINK' in 'abilities'
to restart the link and make it run with the new settings.

Fixes: 1d96340196f1 ("i40e: Add support FEC configuration for Fortville 25G")
Signed-off-by: Jaroslaw Gawin <jaroslawx.gawin@intel.com>
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
Tested-by: Dave Switzer <david.switzer@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/i40e/i40e_ethtool.c

index 040a014..5341678 100644 (file)
@@ -1409,7 +1409,8 @@ static int i40e_set_fec_cfg(struct net_device *netdev, u8 fec_cfg)
 
                memset(&config, 0, sizeof(config));
                config.phy_type = abilities.phy_type;
-               config.abilities = abilities.abilities;
+               config.abilities = abilities.abilities |
+                                  I40E_AQ_PHY_ENABLE_ATOMIC_LINK;
                config.phy_type_ext = abilities.phy_type_ext;
                config.link_speed = abilities.link_speed;
                config.eee_capability = abilities.eee_capability;