Skip to content

Commit b7b44fd

Browse files
Philippe Reynesdavem330
authored andcommitted
net: chelsio: cxgb3: 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 <tremyfr@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 49cad93 commit b7b44fd

File tree

1 file changed

+37
-28
lines changed

1 file changed

+37
-28
lines changed

drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1801,27 +1801,31 @@ static int set_phys_id(struct net_device *dev,
18011801
return 0;
18021802
}
18031803

1804-
static int get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
1804+
static int get_link_ksettings(struct net_device *dev,
1805+
struct ethtool_link_ksettings *cmd)
18051806
{
18061807
struct port_info *p = netdev_priv(dev);
1808+
u32 supported;
18071809

1808-
cmd->supported = p->link_config.supported;
1809-
cmd->advertising = p->link_config.advertising;
1810+
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
1811+
p->link_config.supported);
1812+
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
1813+
p->link_config.advertising);
18101814

18111815
if (netif_carrier_ok(dev)) {
1812-
ethtool_cmd_speed_set(cmd, p->link_config.speed);
1813-
cmd->duplex = p->link_config.duplex;
1816+
cmd->base.speed = p->link_config.speed;
1817+
cmd->base.duplex = p->link_config.duplex;
18141818
} else {
1815-
ethtool_cmd_speed_set(cmd, SPEED_UNKNOWN);
1816-
cmd->duplex = DUPLEX_UNKNOWN;
1819+
cmd->base.speed = SPEED_UNKNOWN;
1820+
cmd->base.duplex = DUPLEX_UNKNOWN;
18171821
}
18181822

1819-
cmd->port = (cmd->supported & SUPPORTED_TP) ? PORT_TP : PORT_FIBRE;
1820-
cmd->phy_address = p->phy.mdio.prtad;
1821-
cmd->transceiver = XCVR_EXTERNAL;
1822-
cmd->autoneg = p->link_config.autoneg;
1823-
cmd->maxtxpkt = 0;
1824-
cmd->maxrxpkt = 0;
1823+
ethtool_convert_link_mode_to_legacy_u32(&supported,
1824+
cmd->link_modes.supported);
1825+
1826+
cmd->base.port = (supported & SUPPORTED_TP) ? PORT_TP : PORT_FIBRE;
1827+
cmd->base.phy_address = p->phy.mdio.prtad;
1828+
cmd->base.autoneg = p->link_config.autoneg;
18251829
return 0;
18261830
}
18271831

@@ -1860,44 +1864,49 @@ static int speed_duplex_to_caps(int speed, int duplex)
18601864
ADVERTISED_1000baseT_Half | ADVERTISED_1000baseT_Full | \
18611865
ADVERTISED_10000baseT_Full)
18621866

1863-
static int set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
1867+
static int set_link_ksettings(struct net_device *dev,
1868+
const struct ethtool_link_ksettings *cmd)
18641869
{
18651870
struct port_info *p = netdev_priv(dev);
18661871
struct link_config *lc = &p->link_config;
1872+
u32 advertising;
1873+
1874+
ethtool_convert_link_mode_to_legacy_u32(&advertising,
1875+
cmd->link_modes.advertising);
18671876

18681877
if (!(lc->supported & SUPPORTED_Autoneg)) {
18691878
/*
18701879
* PHY offers a single speed/duplex. See if that's what's
18711880
* being requested.
18721881
*/
1873-
if (cmd->autoneg == AUTONEG_DISABLE) {
1874-
u32 speed = ethtool_cmd_speed(cmd);
1875-
int cap = speed_duplex_to_caps(speed, cmd->duplex);
1882+
if (cmd->base.autoneg == AUTONEG_DISABLE) {
1883+
u32 speed = cmd->base.speed;
1884+
int cap = speed_duplex_to_caps(speed, cmd->base.duplex);
18761885
if (lc->supported & cap)
18771886
return 0;
18781887
}
18791888
return -EINVAL;
18801889
}
18811890

1882-
if (cmd->autoneg == AUTONEG_DISABLE) {
1883-
u32 speed = ethtool_cmd_speed(cmd);
1884-
int cap = speed_duplex_to_caps(speed, cmd->duplex);
1891+
if (cmd->base.autoneg == AUTONEG_DISABLE) {
1892+
u32 speed = cmd->base.speed;
1893+
int cap = speed_duplex_to_caps(speed, cmd->base.duplex);
18851894

18861895
if (!(lc->supported & cap) || (speed == SPEED_1000))
18871896
return -EINVAL;
18881897
lc->requested_speed = speed;
1889-
lc->requested_duplex = cmd->duplex;
1898+
lc->requested_duplex = cmd->base.duplex;
18901899
lc->advertising = 0;
18911900
} else {
1892-
cmd->advertising &= ADVERTISED_MASK;
1893-
cmd->advertising &= lc->supported;
1894-
if (!cmd->advertising)
1901+
advertising &= ADVERTISED_MASK;
1902+
advertising &= lc->supported;
1903+
if (!advertising)
18951904
return -EINVAL;
18961905
lc->requested_speed = SPEED_INVALID;
18971906
lc->requested_duplex = DUPLEX_INVALID;
1898-
lc->advertising = cmd->advertising | ADVERTISED_Autoneg;
1907+
lc->advertising = advertising | ADVERTISED_Autoneg;
18991908
}
1900-
lc->autoneg = cmd->autoneg;
1909+
lc->autoneg = cmd->base.autoneg;
19011910
if (netif_running(dev))
19021911
t3_link_start(&p->phy, &p->mac, lc);
19031912
return 0;
@@ -2097,8 +2106,6 @@ static void get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
20972106
}
20982107

20992108
static const struct ethtool_ops cxgb_ethtool_ops = {
2100-
.get_settings = get_settings,
2101-
.set_settings = set_settings,
21022109
.get_drvinfo = get_drvinfo,
21032110
.get_msglevel = get_msglevel,
21042111
.set_msglevel = set_msglevel,
@@ -2120,6 +2127,8 @@ static const struct ethtool_ops cxgb_ethtool_ops = {
21202127
.get_regs_len = get_regs_len,
21212128
.get_regs = get_regs,
21222129
.get_wol = get_wol,
2130+
.get_link_ksettings = get_link_ksettings,
2131+
.set_link_ksettings = set_link_ksettings,
21232132
};
21242133

21252134
static int in_range(int val, int lo, int hi)

0 commit comments

Comments
 (0)