Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: microchip: encx24j600: use new api ethtool_{get|set}_link_ksettings

The ethtool api {get|set}_settings is deprecated.
We move this driver to new api {get|set}_link_ksettings.

As I don't have the hardware, I'd be very pleased if
someone may test this patch.

Signed-off-by: Philippe Reynes <tremyfr@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Philippe Reynes and committed by
David S. Miller
60fdcfa5 8ff638e4

+18 -14
+18 -14
drivers/net/ethernet/microchip/encx24j600.c
··· 940 940 sizeof(info->bus_info)); 941 941 } 942 942 943 - static int encx24j600_get_settings(struct net_device *dev, 944 - struct ethtool_cmd *cmd) 943 + static int encx24j600_get_link_ksettings(struct net_device *dev, 944 + struct ethtool_link_ksettings *cmd) 945 945 { 946 946 struct encx24j600_priv *priv = netdev_priv(dev); 947 + u32 supported; 947 948 948 - cmd->transceiver = XCVR_INTERNAL; 949 - cmd->supported = SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | 949 + supported = SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | 950 950 SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | 951 951 SUPPORTED_Autoneg | SUPPORTED_TP; 952 952 953 - ethtool_cmd_speed_set(cmd, priv->speed); 954 - cmd->duplex = priv->full_duplex ? DUPLEX_FULL : DUPLEX_HALF; 955 - cmd->port = PORT_TP; 956 - cmd->autoneg = priv->autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE; 953 + ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported, 954 + supported); 955 + 956 + cmd->base.speed = priv->speed; 957 + cmd->base.duplex = priv->full_duplex ? DUPLEX_FULL : DUPLEX_HALF; 958 + cmd->base.port = PORT_TP; 959 + cmd->base.autoneg = priv->autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE; 957 960 958 961 return 0; 959 962 } 960 963 961 - static int encx24j600_set_settings(struct net_device *dev, 962 - struct ethtool_cmd *cmd) 964 + static int 965 + encx24j600_set_link_ksettings(struct net_device *dev, 966 + const struct ethtool_link_ksettings *cmd) 963 967 { 964 - return encx24j600_setlink(dev, cmd->autoneg, 965 - ethtool_cmd_speed(cmd), cmd->duplex); 968 + return encx24j600_setlink(dev, cmd->base.autoneg, 969 + cmd->base.speed, cmd->base.duplex); 966 970 } 967 971 968 972 static u32 encx24j600_get_msglevel(struct net_device *dev) ··· 984 980 } 985 981 986 982 static const struct ethtool_ops encx24j600_ethtool_ops = { 987 - .get_settings = encx24j600_get_settings, 988 - .set_settings = encx24j600_set_settings, 989 983 .get_drvinfo = encx24j600_get_drvinfo, 990 984 .get_msglevel = encx24j600_get_msglevel, 991 985 .set_msglevel = encx24j600_set_msglevel, 992 986 .get_regs_len = encx24j600_get_regs_len, 993 987 .get_regs = encx24j600_get_regs, 988 + .get_link_ksettings = encx24j600_get_link_ksettings, 989 + .set_link_ksettings = encx24j600_set_link_ksettings, 994 990 }; 995 991 996 992 static const struct net_device_ops encx24j600_netdev_ops = {