Commit de48015054fa697f647826ecee94d8f34633809f

Authored by Philippe Reynes
Committed by David S. Miller
1 parent 6fa1ba6152

net: rocker: 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>

Showing 1 changed file with 32 additions and 23 deletions Side-by-side Diff

drivers/net/ethernet/rocker/rocker_main.c
... ... @@ -1115,7 +1115,7 @@
1115 1115 const struct rocker_desc_info *desc_info,
1116 1116 void *priv)
1117 1117 {
1118   - struct ethtool_cmd *ecmd = priv;
  1118 + struct ethtool_link_ksettings *ecmd = priv;
1119 1119 const struct rocker_tlv *attrs[ROCKER_TLV_CMD_MAX + 1];
1120 1120 const struct rocker_tlv *info_attrs[ROCKER_TLV_CMD_PORT_SETTINGS_MAX + 1];
1121 1121 u32 speed;
1122 1122  
... ... @@ -1137,14 +1137,15 @@
1137 1137 duplex = rocker_tlv_get_u8(info_attrs[ROCKER_TLV_CMD_PORT_SETTINGS_DUPLEX]);
1138 1138 autoneg = rocker_tlv_get_u8(info_attrs[ROCKER_TLV_CMD_PORT_SETTINGS_AUTONEG]);
1139 1139  
1140   - ecmd->transceiver = XCVR_INTERNAL;
1141   - ecmd->supported = SUPPORTED_TP;
1142   - ecmd->phy_address = 0xff;
1143   - ecmd->port = PORT_TP;
1144   - ethtool_cmd_speed_set(ecmd, speed);
1145   - ecmd->duplex = duplex ? DUPLEX_FULL : DUPLEX_HALF;
1146   - ecmd->autoneg = autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE;
  1140 + ethtool_link_ksettings_zero_link_mode(ecmd, supported);
  1141 + ethtool_link_ksettings_add_link_mode(ecmd, supported, TP);
1147 1142  
  1143 + ecmd->base.phy_address = 0xff;
  1144 + ecmd->base.port = PORT_TP;
  1145 + ecmd->base.speed = speed;
  1146 + ecmd->base.duplex = duplex ? DUPLEX_FULL : DUPLEX_HALF;
  1147 + ecmd->base.autoneg = autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE;
  1148 +
1148 1149 return 0;
1149 1150 }
1150 1151  
... ... @@ -1250,7 +1251,7 @@
1250 1251 struct rocker_desc_info *desc_info,
1251 1252 void *priv)
1252 1253 {
1253   - struct ethtool_cmd *ecmd = priv;
  1254 + struct ethtool_link_ksettings *ecmd = priv;
1254 1255 struct rocker_tlv *cmd_info;
1255 1256  
1256 1257 if (rocker_tlv_put_u16(desc_info, ROCKER_TLV_CMD_TYPE,
1257 1258  
1258 1259  
... ... @@ -1263,13 +1264,13 @@
1263 1264 rocker_port->pport))
1264 1265 return -EMSGSIZE;
1265 1266 if (rocker_tlv_put_u32(desc_info, ROCKER_TLV_CMD_PORT_SETTINGS_SPEED,
1266   - ethtool_cmd_speed(ecmd)))
  1267 + ecmd->base.speed))
1267 1268 return -EMSGSIZE;
1268 1269 if (rocker_tlv_put_u8(desc_info, ROCKER_TLV_CMD_PORT_SETTINGS_DUPLEX,
1269   - ecmd->duplex))
  1270 + ecmd->base.duplex))
1270 1271 return -EMSGSIZE;
1271 1272 if (rocker_tlv_put_u8(desc_info, ROCKER_TLV_CMD_PORT_SETTINGS_AUTONEG,
1272   - ecmd->autoneg))
  1273 + ecmd->base.autoneg))
1273 1274 return -EMSGSIZE;
1274 1275 rocker_tlv_nest_end(desc_info, cmd_info);
1275 1276 return 0;
... ... @@ -1347,8 +1348,9 @@
1347 1348 return 0;
1348 1349 }
1349 1350  
1350   -static int rocker_cmd_get_port_settings_ethtool(struct rocker_port *rocker_port,
1351   - struct ethtool_cmd *ecmd)
  1351 +static int
  1352 +rocker_cmd_get_port_settings_ethtool(struct rocker_port *rocker_port,
  1353 + struct ethtool_link_ksettings *ecmd)
1352 1354 {
1353 1355 return rocker_cmd_exec(rocker_port, false,
1354 1356 rocker_cmd_get_port_settings_prep, NULL,
1355 1357  
1356 1358  
... ... @@ -1373,12 +1375,17 @@
1373 1375 rocker_cmd_get_port_settings_mode_proc, p_mode);
1374 1376 }
1375 1377  
1376   -static int rocker_cmd_set_port_settings_ethtool(struct rocker_port *rocker_port,
1377   - struct ethtool_cmd *ecmd)
  1378 +static int
  1379 +rocker_cmd_set_port_settings_ethtool(struct rocker_port *rocker_port,
  1380 + const struct ethtool_link_ksettings *ecmd)
1378 1381 {
  1382 + struct ethtool_link_ksettings copy_ecmd;
  1383 +
  1384 + memcpy(&copy_ecmd, ecmd, sizeof(copy_ecmd));
  1385 +
1379 1386 return rocker_cmd_exec(rocker_port, false,
1380 1387 rocker_cmd_set_port_settings_ethtool_prep,
1381   - ecmd, NULL, NULL);
  1388 + &copy_ecmd, NULL, NULL);
1382 1389 }
1383 1390  
1384 1391 static int rocker_cmd_set_port_settings_macaddr(struct rocker_port *rocker_port,
1385 1392  
... ... @@ -2237,16 +2244,18 @@
2237 2244 * ethtool interface
2238 2245 ********************/
2239 2246  
2240   -static int rocker_port_get_settings(struct net_device *dev,
2241   - struct ethtool_cmd *ecmd)
  2247 +static int
  2248 +rocker_port_get_link_ksettings(struct net_device *dev,
  2249 + struct ethtool_link_ksettings *ecmd)
2242 2250 {
2243 2251 struct rocker_port *rocker_port = netdev_priv(dev);
2244 2252  
2245 2253 return rocker_cmd_get_port_settings_ethtool(rocker_port, ecmd);
2246 2254 }
2247 2255  
2248   -static int rocker_port_set_settings(struct net_device *dev,
2249   - struct ethtool_cmd *ecmd)
  2256 +static int
  2257 +rocker_port_set_link_ksettings(struct net_device *dev,
  2258 + const struct ethtool_link_ksettings *ecmd)
2250 2259 {
2251 2260 struct rocker_port *rocker_port = netdev_priv(dev);
2252 2261  
2253 2262  
... ... @@ -2388,13 +2397,13 @@
2388 2397 }
2389 2398  
2390 2399 static const struct ethtool_ops rocker_port_ethtool_ops = {
2391   - .get_settings = rocker_port_get_settings,
2392   - .set_settings = rocker_port_set_settings,
2393 2400 .get_drvinfo = rocker_port_get_drvinfo,
2394 2401 .get_link = ethtool_op_get_link,
2395 2402 .get_strings = rocker_port_get_strings,
2396 2403 .get_ethtool_stats = rocker_port_get_stats,
2397 2404 .get_sset_count = rocker_port_get_sset_count,
  2405 + .get_link_ksettings = rocker_port_get_link_ksettings,
  2406 + .set_link_ksettings = rocker_port_set_link_ksettings,
2398 2407 };
2399 2408  
2400 2409 /*****************