Skip to content

Commit f441df6

Browse files
Philippe Reynesdavem330
authored andcommitted
net: toshiba: ps3_genic_net: 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 <[email protected]> Tested-by: Geoff Levand <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 8103015 commit f441df6

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

drivers/net/ethernet/toshiba/ps3_gelic_net.c

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,61 +1206,68 @@ void gelic_net_get_drvinfo(struct net_device *netdev,
12061206
strlcpy(info->version, DRV_VERSION, sizeof(info->version));
12071207
}
12081208

1209-
static int gelic_ether_get_settings(struct net_device *netdev,
1210-
struct ethtool_cmd *cmd)
1209+
static int gelic_ether_get_link_ksettings(struct net_device *netdev,
1210+
struct ethtool_link_ksettings *cmd)
12111211
{
12121212
struct gelic_card *card = netdev_card(netdev);
1213+
u32 supported, advertising;
12131214

12141215
gelic_card_get_ether_port_status(card, 0);
12151216

12161217
if (card->ether_port_status & GELIC_LV1_ETHER_FULL_DUPLEX)
1217-
cmd->duplex = DUPLEX_FULL;
1218+
cmd->base.duplex = DUPLEX_FULL;
12181219
else
1219-
cmd->duplex = DUPLEX_HALF;
1220+
cmd->base.duplex = DUPLEX_HALF;
12201221

12211222
switch (card->ether_port_status & GELIC_LV1_ETHER_SPEED_MASK) {
12221223
case GELIC_LV1_ETHER_SPEED_10:
1223-
ethtool_cmd_speed_set(cmd, SPEED_10);
1224+
cmd->base.speed = SPEED_10;
12241225
break;
12251226
case GELIC_LV1_ETHER_SPEED_100:
1226-
ethtool_cmd_speed_set(cmd, SPEED_100);
1227+
cmd->base.speed = SPEED_100;
12271228
break;
12281229
case GELIC_LV1_ETHER_SPEED_1000:
1229-
ethtool_cmd_speed_set(cmd, SPEED_1000);
1230+
cmd->base.speed = SPEED_1000;
12301231
break;
12311232
default:
12321233
pr_info("%s: speed unknown\n", __func__);
1233-
ethtool_cmd_speed_set(cmd, SPEED_10);
1234+
cmd->base.speed = SPEED_10;
12341235
break;
12351236
}
12361237

1237-
cmd->supported = SUPPORTED_TP | SUPPORTED_Autoneg |
1238+
supported = SUPPORTED_TP | SUPPORTED_Autoneg |
12381239
SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full |
12391240
SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full |
12401241
SUPPORTED_1000baseT_Full;
1241-
cmd->advertising = cmd->supported;
1242+
advertising = supported;
12421243
if (card->link_mode & GELIC_LV1_ETHER_AUTO_NEG) {
1243-
cmd->autoneg = AUTONEG_ENABLE;
1244+
cmd->base.autoneg = AUTONEG_ENABLE;
12441245
} else {
1245-
cmd->autoneg = AUTONEG_DISABLE;
1246-
cmd->advertising &= ~ADVERTISED_Autoneg;
1246+
cmd->base.autoneg = AUTONEG_DISABLE;
1247+
advertising &= ~ADVERTISED_Autoneg;
12471248
}
1248-
cmd->port = PORT_TP;
1249+
cmd->base.port = PORT_TP;
1250+
1251+
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
1252+
supported);
1253+
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
1254+
advertising);
12491255

12501256
return 0;
12511257
}
12521258

1253-
static int gelic_ether_set_settings(struct net_device *netdev,
1254-
struct ethtool_cmd *cmd)
1259+
static int
1260+
gelic_ether_set_link_ksettings(struct net_device *netdev,
1261+
const struct ethtool_link_ksettings *cmd)
12551262
{
12561263
struct gelic_card *card = netdev_card(netdev);
12571264
u64 mode;
12581265
int ret;
12591266

1260-
if (cmd->autoneg == AUTONEG_ENABLE) {
1267+
if (cmd->base.autoneg == AUTONEG_ENABLE) {
12611268
mode = GELIC_LV1_ETHER_AUTO_NEG;
12621269
} else {
1263-
switch (cmd->speed) {
1270+
switch (cmd->base.speed) {
12641271
case SPEED_10:
12651272
mode = GELIC_LV1_ETHER_SPEED_10;
12661273
break;
@@ -1273,9 +1280,9 @@ static int gelic_ether_set_settings(struct net_device *netdev,
12731280
default:
12741281
return -EINVAL;
12751282
}
1276-
if (cmd->duplex == DUPLEX_FULL)
1283+
if (cmd->base.duplex == DUPLEX_FULL) {
12771284
mode |= GELIC_LV1_ETHER_FULL_DUPLEX;
1278-
else if (cmd->speed == SPEED_1000) {
1285+
} else if (cmd->base.speed == SPEED_1000) {
12791286
pr_info("1000 half duplex is not supported.\n");
12801287
return -EINVAL;
12811288
}
@@ -1370,11 +1377,11 @@ static int gelic_net_set_wol(struct net_device *netdev,
13701377

13711378
static const struct ethtool_ops gelic_ether_ethtool_ops = {
13721379
.get_drvinfo = gelic_net_get_drvinfo,
1373-
.get_settings = gelic_ether_get_settings,
1374-
.set_settings = gelic_ether_set_settings,
13751380
.get_link = ethtool_op_get_link,
13761381
.get_wol = gelic_net_get_wol,
13771382
.set_wol = gelic_net_set_wol,
1383+
.get_link_ksettings = gelic_ether_get_link_ksettings,
1384+
.set_link_ksettings = gelic_ether_set_link_ksettings,
13781385
};
13791386

13801387
/**

0 commit comments

Comments
 (0)