bnad_get_link_ksettings(struct net_device *netdev,
                        struct ethtool_link_ksettings *cmd)
 {
-       u32 supported, advertising;
-
-       supported = SUPPORTED_10000baseT_Full;
-       advertising = ADVERTISED_10000baseT_Full;
+       ethtool_link_ksettings_zero_link_mode(cmd, supported);
+       ethtool_link_ksettings_zero_link_mode(cmd, advertising);
+
+       ethtool_link_ksettings_add_link_mode(cmd, supported, 10000baseCR_Full);
+       ethtool_link_ksettings_add_link_mode(cmd, supported, 10000baseSR_Full);
+       ethtool_link_ksettings_add_link_mode(cmd, supported, 10000baseLR_Full);
+       ethtool_link_ksettings_add_link_mode(cmd, advertising, 10000baseCR_Full);
+       ethtool_link_ksettings_add_link_mode(cmd, advertising, 10000baseSR_Full);
+       ethtool_link_ksettings_add_link_mode(cmd, advertising, 10000baseLR_Full);
        cmd->base.autoneg = AUTONEG_DISABLE;
-       supported |= SUPPORTED_FIBRE;
-       advertising |= ADVERTISED_FIBRE;
+       ethtool_link_ksettings_add_link_mode(cmd, supported, FIBRE);
+       ethtool_link_ksettings_add_link_mode(cmd, advertising, FIBRE);
        cmd->base.port = PORT_FIBRE;
        cmd->base.phy_address = 0;
 
                cmd->base.duplex = DUPLEX_UNKNOWN;
        }
 
-       ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
-                                               supported);
-       ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
-                                               advertising);
-
        return 0;
 }