|
@@ -870,23 +870,21 @@ static int i40e_set_link_ksettings(struct net_device *netdev,
|
|
/* save autoneg out of ksettings */
|
|
/* save autoneg out of ksettings */
|
|
autoneg = copy_ks.base.autoneg;
|
|
autoneg = copy_ks.base.autoneg;
|
|
|
|
|
|
- memset(&safe_ks, 0, sizeof(safe_ks));
|
|
|
|
|
|
+ /* 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;
|
|
|
|
+ safe_ks.base.link_mode_masks_nwords =
|
|
|
|
+ copy_ks.base.link_mode_masks_nwords;
|
|
|
|
+ i40e_get_link_ksettings(netdev, &safe_ks);
|
|
|
|
+
|
|
/* Get link modes supported by hardware and check against modes
|
|
/* Get link modes supported by hardware and check against modes
|
|
* requested by the user. Return an error if unsupported mode was set.
|
|
* 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,
|
|
if (!bitmap_subset(copy_ks.link_modes.advertising,
|
|
safe_ks.link_modes.supported,
|
|
safe_ks.link_modes.supported,
|
|
__ETHTOOL_LINK_MODE_MASK_NBITS))
|
|
__ETHTOOL_LINK_MODE_MASK_NBITS))
|
|
return -EINVAL;
|
|
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;
|
|
|
|
- safe_ks.base.link_mode_masks_nwords =
|
|
|
|
- copy_ks.base.link_mode_masks_nwords;
|
|
|
|
- i40e_get_link_ksettings(netdev, &safe_ks);
|
|
|
|
-
|
|
|
|
/* set autoneg back to what it currently is */
|
|
/* set autoneg back to what it currently is */
|
|
copy_ks.base.autoneg = safe_ks.base.autoneg;
|
|
copy_ks.base.autoneg = safe_ks.base.autoneg;
|
|
|
|
|