diff options
| author | Philippe Reynes <tremyfr@gmail.com> | 2017-03-05 17:21:06 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2017-03-09 01:18:05 -0500 |
| commit | 60f285129905c33203f66111363c5503ccbc5c41 (patch) | |
| tree | ddca70974b52afec2d8f3bce6b1f91620a6b687a /drivers/net/ethernet/toshiba | |
| parent | e016cc64423d2b6476e5c99d8a278f9093d53407 (diff) | |
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 <tremyfr@gmail.com>
Tested-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/toshiba')
| -rw-r--r-- | drivers/net/ethernet/toshiba/ps3_gelic_net.c | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/drivers/net/ethernet/toshiba/ps3_gelic_net.c b/drivers/net/ethernet/toshiba/ps3_gelic_net.c index 72013314bba8..fa6a06571187 100644 --- a/drivers/net/ethernet/toshiba/ps3_gelic_net.c +++ b/drivers/net/ethernet/toshiba/ps3_gelic_net.c | |||
| @@ -1206,61 +1206,68 @@ void gelic_net_get_drvinfo(struct net_device *netdev, | |||
| 1206 | strlcpy(info->version, DRV_VERSION, sizeof(info->version)); | 1206 | strlcpy(info->version, DRV_VERSION, sizeof(info->version)); |
| 1207 | } | 1207 | } |
| 1208 | 1208 | ||
| 1209 | static int gelic_ether_get_settings(struct net_device *netdev, | 1209 | static int gelic_ether_get_link_ksettings(struct net_device *netdev, |
| 1210 | struct ethtool_cmd *cmd) | 1210 | struct ethtool_link_ksettings *cmd) |
| 1211 | { | 1211 | { |
| 1212 | struct gelic_card *card = netdev_card(netdev); | 1212 | struct gelic_card *card = netdev_card(netdev); |
| 1213 | u32 supported, advertising; | ||
| 1213 | 1214 | ||
| 1214 | gelic_card_get_ether_port_status(card, 0); | 1215 | gelic_card_get_ether_port_status(card, 0); |
| 1215 | 1216 | ||
| 1216 | if (card->ether_port_status & GELIC_LV1_ETHER_FULL_DUPLEX) | 1217 | if (card->ether_port_status & GELIC_LV1_ETHER_FULL_DUPLEX) |
| 1217 | cmd->duplex = DUPLEX_FULL; | 1218 | cmd->base.duplex = DUPLEX_FULL; |
| 1218 | else | 1219 | else |
| 1219 | cmd->duplex = DUPLEX_HALF; | 1220 | cmd->base.duplex = DUPLEX_HALF; |
| 1220 | 1221 | ||
| 1221 | switch (card->ether_port_status & GELIC_LV1_ETHER_SPEED_MASK) { | 1222 | switch (card->ether_port_status & GELIC_LV1_ETHER_SPEED_MASK) { |
| 1222 | case GELIC_LV1_ETHER_SPEED_10: | 1223 | case GELIC_LV1_ETHER_SPEED_10: |
| 1223 | ethtool_cmd_speed_set(cmd, SPEED_10); | 1224 | cmd->base.speed = SPEED_10; |
| 1224 | break; | 1225 | break; |
| 1225 | case GELIC_LV1_ETHER_SPEED_100: | 1226 | case GELIC_LV1_ETHER_SPEED_100: |
| 1226 | ethtool_cmd_speed_set(cmd, SPEED_100); | 1227 | cmd->base.speed = SPEED_100; |
| 1227 | break; | 1228 | break; |
| 1228 | case GELIC_LV1_ETHER_SPEED_1000: | 1229 | case GELIC_LV1_ETHER_SPEED_1000: |
| 1229 | ethtool_cmd_speed_set(cmd, SPEED_1000); | 1230 | cmd->base.speed = SPEED_1000; |
| 1230 | break; | 1231 | break; |
| 1231 | default: | 1232 | default: |
| 1232 | pr_info("%s: speed unknown\n", __func__); | 1233 | pr_info("%s: speed unknown\n", __func__); |
| 1233 | ethtool_cmd_speed_set(cmd, SPEED_10); | 1234 | cmd->base.speed = SPEED_10; |
| 1234 | break; | 1235 | break; |
| 1235 | } | 1236 | } |
| 1236 | 1237 | ||
| 1237 | cmd->supported = SUPPORTED_TP | SUPPORTED_Autoneg | | 1238 | supported = SUPPORTED_TP | SUPPORTED_Autoneg | |
| 1238 | SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | | 1239 | SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | |
| 1239 | SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | | 1240 | SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | |
| 1240 | SUPPORTED_1000baseT_Full; | 1241 | SUPPORTED_1000baseT_Full; |
| 1241 | cmd->advertising = cmd->supported; | 1242 | advertising = supported; |
| 1242 | if (card->link_mode & GELIC_LV1_ETHER_AUTO_NEG) { | 1243 | if (card->link_mode & GELIC_LV1_ETHER_AUTO_NEG) { |
| 1243 | cmd->autoneg = AUTONEG_ENABLE; | 1244 | cmd->base.autoneg = AUTONEG_ENABLE; |
| 1244 | } else { | 1245 | } else { |
| 1245 | cmd->autoneg = AUTONEG_DISABLE; | 1246 | cmd->base.autoneg = AUTONEG_DISABLE; |
| 1246 | cmd->advertising &= ~ADVERTISED_Autoneg; | 1247 | advertising &= ~ADVERTISED_Autoneg; |
| 1247 | } | 1248 | } |
| 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); | ||
| 1249 | 1255 | ||
| 1250 | return 0; | 1256 | return 0; |
| 1251 | } | 1257 | } |
| 1252 | 1258 | ||
| 1253 | static int gelic_ether_set_settings(struct net_device *netdev, | 1259 | static int |
| 1254 | struct ethtool_cmd *cmd) | 1260 | gelic_ether_set_link_ksettings(struct net_device *netdev, |
| 1261 | const struct ethtool_link_ksettings *cmd) | ||
| 1255 | { | 1262 | { |
| 1256 | struct gelic_card *card = netdev_card(netdev); | 1263 | struct gelic_card *card = netdev_card(netdev); |
| 1257 | u64 mode; | 1264 | u64 mode; |
| 1258 | int ret; | 1265 | int ret; |
| 1259 | 1266 | ||
| 1260 | if (cmd->autoneg == AUTONEG_ENABLE) { | 1267 | if (cmd->base.autoneg == AUTONEG_ENABLE) { |
| 1261 | mode = GELIC_LV1_ETHER_AUTO_NEG; | 1268 | mode = GELIC_LV1_ETHER_AUTO_NEG; |
| 1262 | } else { | 1269 | } else { |
| 1263 | switch (cmd->speed) { | 1270 | switch (cmd->base.speed) { |
| 1264 | case SPEED_10: | 1271 | case SPEED_10: |
| 1265 | mode = GELIC_LV1_ETHER_SPEED_10; | 1272 | mode = GELIC_LV1_ETHER_SPEED_10; |
| 1266 | break; | 1273 | break; |
| @@ -1273,9 +1280,9 @@ static int gelic_ether_set_settings(struct net_device *netdev, | |||
| 1273 | default: | 1280 | default: |
| 1274 | return -EINVAL; | 1281 | return -EINVAL; |
| 1275 | } | 1282 | } |
| 1276 | if (cmd->duplex == DUPLEX_FULL) | 1283 | if (cmd->base.duplex == DUPLEX_FULL) { |
| 1277 | mode |= GELIC_LV1_ETHER_FULL_DUPLEX; | 1284 | mode |= GELIC_LV1_ETHER_FULL_DUPLEX; |
| 1278 | else if (cmd->speed == SPEED_1000) { | 1285 | } else if (cmd->base.speed == SPEED_1000) { |
| 1279 | pr_info("1000 half duplex is not supported.\n"); | 1286 | pr_info("1000 half duplex is not supported.\n"); |
| 1280 | return -EINVAL; | 1287 | return -EINVAL; |
| 1281 | } | 1288 | } |
| @@ -1370,11 +1377,11 @@ done: | |||
| 1370 | 1377 | ||
| 1371 | static const struct ethtool_ops gelic_ether_ethtool_ops = { | 1378 | static const struct ethtool_ops gelic_ether_ethtool_ops = { |
| 1372 | .get_drvinfo = gelic_net_get_drvinfo, | 1379 | .get_drvinfo = gelic_net_get_drvinfo, |
| 1373 | .get_settings = gelic_ether_get_settings, | ||
| 1374 | .set_settings = gelic_ether_set_settings, | ||
| 1375 | .get_link = ethtool_op_get_link, | 1380 | .get_link = ethtool_op_get_link, |
| 1376 | .get_wol = gelic_net_get_wol, | 1381 | .get_wol = gelic_net_get_wol, |
| 1377 | .set_wol = gelic_net_set_wol, | 1382 | .set_wol = gelic_net_set_wol, |
| 1383 | .get_link_ksettings = gelic_ether_get_link_ksettings, | ||
| 1384 | .set_link_ksettings = gelic_ether_set_link_ksettings, | ||
| 1378 | }; | 1385 | }; |
| 1379 | 1386 | ||
| 1380 | /** | 1387 | /** |
