diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c index 89807e32a898..0ce68e8a45cc 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c @@ -870,16 +870,6 @@ static int i40e_set_link_ksettings(struct net_device *netdev, /* save autoneg out of ksettings */ autoneg = copy_ks.base.autoneg; - memset(&safe_ks, 0, sizeof(safe_ks)); - /* Get link modes supported by hardware and check against modes - * requested by the user. Return an error if unsupported mode was set. - */ - i40e_phy_type_to_ethtool(pf, &safe_ks); - if (!bitmap_subset(copy_ks.link_modes.advertising, - safe_ks.link_modes.supported, - __ETHTOOL_LINK_MODE_MASK_NBITS)) - return -EINVAL; - /* get our own copy of the bits to check against */ memset(&safe_ks, 0, sizeof(struct ethtool_link_ksettings)); safe_ks.base.cmd = copy_ks.base.cmd; @@ -887,6 +877,14 @@ static int i40e_set_link_ksettings(struct net_device *netdev, copy_ks.base.link_mode_masks_nwords; i40e_get_link_ksettings(netdev, &safe_ks); + /* Get link modes supported by hardware and check against modes + * requested by the user. Return an error if unsupported mode was set. + */ + if (!bitmap_subset(copy_ks.link_modes.advertising, + safe_ks.link_modes.supported, + __ETHTOOL_LINK_MODE_MASK_NBITS)) + return -EINVAL; + /* set autoneg back to what it currently is */ copy_ks.base.autoneg = safe_ks.base.autoneg;