@@ -1206,61 +1206,68 @@ void gelic_net_get_drvinfo(struct net_device *netdev,
1206
1206
strlcpy (info -> version , DRV_VERSION , sizeof (info -> version ));
1207
1207
}
1208
1208
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 )
1211
1211
{
1212
1212
struct gelic_card * card = netdev_card (netdev );
1213
+ u32 supported , advertising ;
1213
1214
1214
1215
gelic_card_get_ether_port_status (card , 0 );
1215
1216
1216
1217
if (card -> ether_port_status & GELIC_LV1_ETHER_FULL_DUPLEX )
1217
- cmd -> duplex = DUPLEX_FULL ;
1218
+ cmd -> base . duplex = DUPLEX_FULL ;
1218
1219
else
1219
- cmd -> duplex = DUPLEX_HALF ;
1220
+ cmd -> base . duplex = DUPLEX_HALF ;
1220
1221
1221
1222
switch (card -> ether_port_status & GELIC_LV1_ETHER_SPEED_MASK ) {
1222
1223
case GELIC_LV1_ETHER_SPEED_10 :
1223
- ethtool_cmd_speed_set ( cmd , SPEED_10 ) ;
1224
+ cmd -> base . speed = SPEED_10 ;
1224
1225
break ;
1225
1226
case GELIC_LV1_ETHER_SPEED_100 :
1226
- ethtool_cmd_speed_set ( cmd , SPEED_100 ) ;
1227
+ cmd -> base . speed = SPEED_100 ;
1227
1228
break ;
1228
1229
case GELIC_LV1_ETHER_SPEED_1000 :
1229
- ethtool_cmd_speed_set ( cmd , SPEED_1000 ) ;
1230
+ cmd -> base . speed = SPEED_1000 ;
1230
1231
break ;
1231
1232
default :
1232
1233
pr_info ("%s: speed unknown\n" , __func__ );
1233
- ethtool_cmd_speed_set ( cmd , SPEED_10 ) ;
1234
+ cmd -> base . speed = SPEED_10 ;
1234
1235
break ;
1235
1236
}
1236
1237
1237
- cmd -> supported = SUPPORTED_TP | SUPPORTED_Autoneg |
1238
+ supported = SUPPORTED_TP | SUPPORTED_Autoneg |
1238
1239
SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full |
1239
1240
SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full |
1240
1241
SUPPORTED_1000baseT_Full ;
1241
- cmd -> advertising = cmd -> supported ;
1242
+ advertising = supported ;
1242
1243
if (card -> link_mode & GELIC_LV1_ETHER_AUTO_NEG ) {
1243
- cmd -> autoneg = AUTONEG_ENABLE ;
1244
+ cmd -> base . autoneg = AUTONEG_ENABLE ;
1244
1245
} else {
1245
- cmd -> autoneg = AUTONEG_DISABLE ;
1246
- cmd -> advertising &= ~ADVERTISED_Autoneg ;
1246
+ cmd -> base . autoneg = AUTONEG_DISABLE ;
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
1256
return 0 ;
1251
1257
}
1252
1258
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 )
1255
1262
{
1256
1263
struct gelic_card * card = netdev_card (netdev );
1257
1264
u64 mode ;
1258
1265
int ret ;
1259
1266
1260
- if (cmd -> autoneg == AUTONEG_ENABLE ) {
1267
+ if (cmd -> base . autoneg == AUTONEG_ENABLE ) {
1261
1268
mode = GELIC_LV1_ETHER_AUTO_NEG ;
1262
1269
} else {
1263
- switch (cmd -> speed ) {
1270
+ switch (cmd -> base . speed ) {
1264
1271
case SPEED_10 :
1265
1272
mode = GELIC_LV1_ETHER_SPEED_10 ;
1266
1273
break ;
@@ -1273,9 +1280,9 @@ static int gelic_ether_set_settings(struct net_device *netdev,
1273
1280
default :
1274
1281
return - EINVAL ;
1275
1282
}
1276
- if (cmd -> duplex == DUPLEX_FULL )
1283
+ if (cmd -> base . duplex == DUPLEX_FULL ) {
1277
1284
mode |= GELIC_LV1_ETHER_FULL_DUPLEX ;
1278
- else if (cmd -> speed == SPEED_1000 ) {
1285
+ } else if (cmd -> base . speed == SPEED_1000 ) {
1279
1286
pr_info ("1000 half duplex is not supported.\n" );
1280
1287
return - EINVAL ;
1281
1288
}
@@ -1370,11 +1377,11 @@ static int gelic_net_set_wol(struct net_device *netdev,
1370
1377
1371
1378
static const struct ethtool_ops gelic_ether_ethtool_ops = {
1372
1379
.get_drvinfo = gelic_net_get_drvinfo ,
1373
- .get_settings = gelic_ether_get_settings ,
1374
- .set_settings = gelic_ether_set_settings ,
1375
1380
.get_link = ethtool_op_get_link ,
1376
1381
.get_wol = gelic_net_get_wol ,
1377
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
/**
0 commit comments