Skip to content

Commit b6f5be2

Browse files
Philippe Reynesdavem330
authored andcommitted
net: tg3: 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. Signed-off-by: Philippe Reynes <[email protected]> Acked-by: Michael Chan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent be92e53 commit b6f5be2

File tree

1 file changed

+62
-50
lines changed
  • drivers/net/ethernet/broadcom

1 file changed

+62
-50
lines changed

drivers/net/ethernet/broadcom/tg3.c

Lines changed: 62 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -12079,95 +12079,107 @@ static int tg3_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
1207912079
return ret;
1208012080
}
1208112081

12082-
static int tg3_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
12082+
static int tg3_get_link_ksettings(struct net_device *dev,
12083+
struct ethtool_link_ksettings *cmd)
1208312084
{
1208412085
struct tg3 *tp = netdev_priv(dev);
12086+
u32 supported, advertising;
1208512087

1208612088
if (tg3_flag(tp, USE_PHYLIB)) {
1208712089
struct phy_device *phydev;
1208812090
if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED))
1208912091
return -EAGAIN;
1209012092
phydev = mdiobus_get_phy(tp->mdio_bus, tp->phy_addr);
12091-
return phy_ethtool_gset(phydev, cmd);
12093+
return phy_ethtool_ksettings_get(phydev, cmd);
1209212094
}
1209312095

12094-
cmd->supported = (SUPPORTED_Autoneg);
12096+
supported = (SUPPORTED_Autoneg);
1209512097

1209612098
if (!(tp->phy_flags & TG3_PHYFLG_10_100_ONLY))
12097-
cmd->supported |= (SUPPORTED_1000baseT_Half |
12098-
SUPPORTED_1000baseT_Full);
12099+
supported |= (SUPPORTED_1000baseT_Half |
12100+
SUPPORTED_1000baseT_Full);
1209912101

1210012102
if (!(tp->phy_flags & TG3_PHYFLG_ANY_SERDES)) {
12101-
cmd->supported |= (SUPPORTED_100baseT_Half |
12102-
SUPPORTED_100baseT_Full |
12103-
SUPPORTED_10baseT_Half |
12104-
SUPPORTED_10baseT_Full |
12105-
SUPPORTED_TP);
12106-
cmd->port = PORT_TP;
12103+
supported |= (SUPPORTED_100baseT_Half |
12104+
SUPPORTED_100baseT_Full |
12105+
SUPPORTED_10baseT_Half |
12106+
SUPPORTED_10baseT_Full |
12107+
SUPPORTED_TP);
12108+
cmd->base.port = PORT_TP;
1210712109
} else {
12108-
cmd->supported |= SUPPORTED_FIBRE;
12109-
cmd->port = PORT_FIBRE;
12110+
supported |= SUPPORTED_FIBRE;
12111+
cmd->base.port = PORT_FIBRE;
1211012112
}
12113+
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
12114+
supported);
1211112115

12112-
cmd->advertising = tp->link_config.advertising;
12116+
advertising = tp->link_config.advertising;
1211312117
if (tg3_flag(tp, PAUSE_AUTONEG)) {
1211412118
if (tp->link_config.flowctrl & FLOW_CTRL_RX) {
1211512119
if (tp->link_config.flowctrl & FLOW_CTRL_TX) {
12116-
cmd->advertising |= ADVERTISED_Pause;
12120+
advertising |= ADVERTISED_Pause;
1211712121
} else {
12118-
cmd->advertising |= ADVERTISED_Pause |
12119-
ADVERTISED_Asym_Pause;
12122+
advertising |= ADVERTISED_Pause |
12123+
ADVERTISED_Asym_Pause;
1212012124
}
1212112125
} else if (tp->link_config.flowctrl & FLOW_CTRL_TX) {
12122-
cmd->advertising |= ADVERTISED_Asym_Pause;
12126+
advertising |= ADVERTISED_Asym_Pause;
1212312127
}
1212412128
}
12129+
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
12130+
advertising);
12131+
1212512132
if (netif_running(dev) && tp->link_up) {
12126-
ethtool_cmd_speed_set(cmd, tp->link_config.active_speed);
12127-
cmd->duplex = tp->link_config.active_duplex;
12128-
cmd->lp_advertising = tp->link_config.rmt_adv;
12133+
cmd->base.speed = tp->link_config.active_speed;
12134+
cmd->base.duplex = tp->link_config.active_duplex;
12135+
ethtool_convert_legacy_u32_to_link_mode(
12136+
cmd->link_modes.lp_advertising,
12137+
tp->link_config.rmt_adv);
12138+
1212912139
if (!(tp->phy_flags & TG3_PHYFLG_ANY_SERDES)) {
1213012140
if (tp->phy_flags & TG3_PHYFLG_MDIX_STATE)
12131-
cmd->eth_tp_mdix = ETH_TP_MDI_X;
12141+
cmd->base.eth_tp_mdix = ETH_TP_MDI_X;
1213212142
else
12133-
cmd->eth_tp_mdix = ETH_TP_MDI;
12143+
cmd->base.eth_tp_mdix = ETH_TP_MDI;
1213412144
}
1213512145
} else {
12136-
ethtool_cmd_speed_set(cmd, SPEED_UNKNOWN);
12137-
cmd->duplex = DUPLEX_UNKNOWN;
12138-
cmd->eth_tp_mdix = ETH_TP_MDI_INVALID;
12139-
}
12140-
cmd->phy_address = tp->phy_addr;
12141-
cmd->transceiver = XCVR_INTERNAL;
12142-
cmd->autoneg = tp->link_config.autoneg;
12143-
cmd->maxtxpkt = 0;
12144-
cmd->maxrxpkt = 0;
12146+
cmd->base.speed = SPEED_UNKNOWN;
12147+
cmd->base.duplex = DUPLEX_UNKNOWN;
12148+
cmd->base.eth_tp_mdix = ETH_TP_MDI_INVALID;
12149+
}
12150+
cmd->base.phy_address = tp->phy_addr;
12151+
cmd->base.autoneg = tp->link_config.autoneg;
1214512152
return 0;
1214612153
}
1214712154

12148-
static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
12155+
static int tg3_set_link_ksettings(struct net_device *dev,
12156+
const struct ethtool_link_ksettings *cmd)
1214912157
{
1215012158
struct tg3 *tp = netdev_priv(dev);
12151-
u32 speed = ethtool_cmd_speed(cmd);
12159+
u32 speed = cmd->base.speed;
12160+
u32 advertising;
1215212161

1215312162
if (tg3_flag(tp, USE_PHYLIB)) {
1215412163
struct phy_device *phydev;
1215512164
if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED))
1215612165
return -EAGAIN;
1215712166
phydev = mdiobus_get_phy(tp->mdio_bus, tp->phy_addr);
12158-
return phy_ethtool_sset(phydev, cmd);
12167+
return phy_ethtool_ksettings_set(phydev, cmd);
1215912168
}
1216012169

12161-
if (cmd->autoneg != AUTONEG_ENABLE &&
12162-
cmd->autoneg != AUTONEG_DISABLE)
12170+
if (cmd->base.autoneg != AUTONEG_ENABLE &&
12171+
cmd->base.autoneg != AUTONEG_DISABLE)
1216312172
return -EINVAL;
1216412173

12165-
if (cmd->autoneg == AUTONEG_DISABLE &&
12166-
cmd->duplex != DUPLEX_FULL &&
12167-
cmd->duplex != DUPLEX_HALF)
12174+
if (cmd->base.autoneg == AUTONEG_DISABLE &&
12175+
cmd->base.duplex != DUPLEX_FULL &&
12176+
cmd->base.duplex != DUPLEX_HALF)
1216812177
return -EINVAL;
1216912178

12170-
if (cmd->autoneg == AUTONEG_ENABLE) {
12179+
ethtool_convert_link_mode_to_legacy_u32(&advertising,
12180+
cmd->link_modes.advertising);
12181+
12182+
if (cmd->base.autoneg == AUTONEG_ENABLE) {
1217112183
u32 mask = ADVERTISED_Autoneg |
1217212184
ADVERTISED_Pause |
1217312185
ADVERTISED_Asym_Pause;
@@ -12185,7 +12197,7 @@ static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
1218512197
else
1218612198
mask |= ADVERTISED_FIBRE;
1218712199

12188-
if (cmd->advertising & ~mask)
12200+
if (advertising & ~mask)
1218912201
return -EINVAL;
1219012202

1219112203
mask &= (ADVERTISED_1000baseT_Half |
@@ -12195,13 +12207,13 @@ static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
1219512207
ADVERTISED_10baseT_Half |
1219612208
ADVERTISED_10baseT_Full);
1219712209

12198-
cmd->advertising &= mask;
12210+
advertising &= mask;
1219912211
} else {
1220012212
if (tp->phy_flags & TG3_PHYFLG_ANY_SERDES) {
1220112213
if (speed != SPEED_1000)
1220212214
return -EINVAL;
1220312215

12204-
if (cmd->duplex != DUPLEX_FULL)
12216+
if (cmd->base.duplex != DUPLEX_FULL)
1220512217
return -EINVAL;
1220612218
} else {
1220712219
if (speed != SPEED_100 &&
@@ -12212,16 +12224,16 @@ static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
1221212224

1221312225
tg3_full_lock(tp, 0);
1221412226

12215-
tp->link_config.autoneg = cmd->autoneg;
12216-
if (cmd->autoneg == AUTONEG_ENABLE) {
12217-
tp->link_config.advertising = (cmd->advertising |
12227+
tp->link_config.autoneg = cmd->base.autoneg;
12228+
if (cmd->base.autoneg == AUTONEG_ENABLE) {
12229+
tp->link_config.advertising = (advertising |
1221812230
ADVERTISED_Autoneg);
1221912231
tp->link_config.speed = SPEED_UNKNOWN;
1222012232
tp->link_config.duplex = DUPLEX_UNKNOWN;
1222112233
} else {
1222212234
tp->link_config.advertising = 0;
1222312235
tp->link_config.speed = speed;
12224-
tp->link_config.duplex = cmd->duplex;
12236+
tp->link_config.duplex = cmd->base.duplex;
1222512237
}
1222612238

1222712239
tp->phy_flags |= TG3_PHYFLG_USER_CONFIGURED;
@@ -14094,8 +14106,6 @@ static int tg3_get_eee(struct net_device *dev, struct ethtool_eee *edata)
1409414106
}
1409514107

1409614108
static const struct ethtool_ops tg3_ethtool_ops = {
14097-
.get_settings = tg3_get_settings,
14098-
.set_settings = tg3_set_settings,
1409914109
.get_drvinfo = tg3_get_drvinfo,
1410014110
.get_regs_len = tg3_get_regs_len,
1410114111
.get_regs = tg3_get_regs,
@@ -14128,6 +14138,8 @@ static const struct ethtool_ops tg3_ethtool_ops = {
1412814138
.get_ts_info = tg3_get_ts_info,
1412914139
.get_eee = tg3_get_eee,
1413014140
.set_eee = tg3_set_eee,
14141+
.get_link_ksettings = tg3_get_link_ksettings,
14142+
.set_link_ksettings = tg3_set_link_ksettings,
1413114143
};
1413214144

1413314145
static struct rtnl_link_stats64 *tg3_get_stats64(struct net_device *dev,

0 commit comments

Comments
 (0)