Skip to content

Commit 993e19c

Browse files
julianwiedmanndavem330
authored andcommitted
s390/qeth: convert to ETHTOOL_GLINKSETTINGS API
get_settings() is deprecated and lacks support for higher link speeds, so implement get_link_ksettings() instead. Signed-off-by: Julian Wiedmann <[email protected]> Reviewed-by: Thomas Richter <[email protected]> Reviewed-by: Ursula Braun <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 774afb8 commit 993e19c

File tree

4 files changed

+40
-42
lines changed

4 files changed

+40
-42
lines changed

drivers/s390/net/qeth_core.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -958,7 +958,8 @@ void qeth_core_get_ethtool_stats(struct net_device *,
958958
void qeth_core_get_strings(struct net_device *, u32, u8 *);
959959
void qeth_core_get_drvinfo(struct net_device *, struct ethtool_drvinfo *);
960960
void qeth_dbf_longtext(debug_info_t *id, int level, char *text, ...);
961-
int qeth_core_ethtool_get_settings(struct net_device *, struct ethtool_cmd *);
961+
int qeth_core_ethtool_get_link_ksettings(struct net_device *netdev,
962+
struct ethtool_link_ksettings *cmd);
962963
int qeth_set_access_ctrl_online(struct qeth_card *card, int fallback);
963964
int qeth_hdr_chk_and_bounce(struct sk_buff *, struct qeth_hdr **, int);
964965
int qeth_configure_cq(struct qeth_card *, enum qeth_cq);

drivers/s390/net/qeth_core_main.c

Lines changed: 36 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6028,7 +6028,7 @@ EXPORT_SYMBOL_GPL(qeth_core_get_drvinfo);
60286028
/* Autoneg and full-duplex are supported and advertised unconditionally. */
60296029
/* Always advertise and support all speeds up to specified, and only one */
60306030
/* specified port type. */
6031-
static void qeth_set_ecmd_adv_sup(struct ethtool_cmd *ecmd,
6031+
static void qeth_set_cmd_adv_sup(struct ethtool_link_ksettings *cmd,
60326032
int maxspeed, int porttype)
60336033
{
60346034
u32 sup, adv;
@@ -6072,55 +6072,53 @@ static void qeth_set_ecmd_adv_sup(struct ethtool_cmd *ecmd,
60726072
adv |= ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full;
60736073
WARN_ON_ONCE(1);
60746074
}
6075-
ecmd->supported = sup;
6076-
ecmd->advertising = adv;
6075+
6076+
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
6077+
sup);
6078+
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
6079+
adv);
60776080
}
60786081

6079-
int qeth_core_ethtool_get_settings(struct net_device *netdev,
6080-
struct ethtool_cmd *ecmd)
6082+
int qeth_core_ethtool_get_link_ksettings(struct net_device *netdev,
6083+
struct ethtool_link_ksettings *cmd)
60816084
{
60826085
struct qeth_card *card = netdev->ml_priv;
60836086
enum qeth_link_types link_type;
60846087
struct carrier_info carrier_info;
60856088
int rc;
6086-
u32 speed;
60876089

60886090
if ((card->info.type == QETH_CARD_TYPE_IQD) || (card->info.guestlan))
60896091
link_type = QETH_LINK_TYPE_10GBIT_ETH;
60906092
else
60916093
link_type = card->info.link_type;
60926094

6093-
ecmd->transceiver = XCVR_INTERNAL;
6094-
ecmd->duplex = DUPLEX_FULL;
6095-
ecmd->autoneg = AUTONEG_ENABLE;
6095+
cmd->base.duplex = DUPLEX_FULL;
6096+
cmd->base.autoneg = AUTONEG_ENABLE;
6097+
cmd->base.phy_address = 0;
6098+
cmd->base.mdio_support = 0;
6099+
cmd->base.eth_tp_mdix = ETH_TP_MDI_INVALID;
6100+
cmd->base.eth_tp_mdix_ctrl = ETH_TP_MDI_INVALID;
60966101

60976102
switch (link_type) {
60986103
case QETH_LINK_TYPE_FAST_ETH:
60996104
case QETH_LINK_TYPE_LANE_ETH100:
6100-
qeth_set_ecmd_adv_sup(ecmd, SPEED_100, PORT_TP);
6101-
speed = SPEED_100;
6102-
ecmd->port = PORT_TP;
6105+
cmd->base.speed = SPEED_100;
6106+
cmd->base.port = PORT_TP;
61036107
break;
6104-
61056108
case QETH_LINK_TYPE_GBIT_ETH:
61066109
case QETH_LINK_TYPE_LANE_ETH1000:
6107-
qeth_set_ecmd_adv_sup(ecmd, SPEED_1000, PORT_FIBRE);
6108-
speed = SPEED_1000;
6109-
ecmd->port = PORT_FIBRE;
6110+
cmd->base.speed = SPEED_1000;
6111+
cmd->base.port = PORT_FIBRE;
61106112
break;
6111-
61126113
case QETH_LINK_TYPE_10GBIT_ETH:
6113-
qeth_set_ecmd_adv_sup(ecmd, SPEED_10000, PORT_FIBRE);
6114-
speed = SPEED_10000;
6115-
ecmd->port = PORT_FIBRE;
6114+
cmd->base.speed = SPEED_10000;
6115+
cmd->base.port = PORT_FIBRE;
61166116
break;
6117-
61186117
default:
6119-
qeth_set_ecmd_adv_sup(ecmd, SPEED_10, PORT_TP);
6120-
speed = SPEED_10;
6121-
ecmd->port = PORT_TP;
6118+
cmd->base.speed = SPEED_10;
6119+
cmd->base.port = PORT_TP;
61226120
}
6123-
ethtool_cmd_speed_set(ecmd, speed);
6121+
qeth_set_cmd_adv_sup(cmd, cmd->base.speed, cmd->base.port);
61246122

61256123
/* Check if we can obtain more accurate information. */
61266124
/* If QUERY_CARD_INFO command is not supported or fails, */
@@ -6145,49 +6143,48 @@ int qeth_core_ethtool_get_settings(struct net_device *netdev,
61456143
switch (carrier_info.card_type) {
61466144
case CARD_INFO_TYPE_1G_COPPER_A:
61476145
case CARD_INFO_TYPE_1G_COPPER_B:
6148-
qeth_set_ecmd_adv_sup(ecmd, SPEED_1000, PORT_TP);
6149-
ecmd->port = PORT_TP;
6146+
cmd->base.port = PORT_TP;
6147+
qeth_set_cmd_adv_sup(cmd, SPEED_1000, cmd->base.port);
61506148
break;
61516149
case CARD_INFO_TYPE_1G_FIBRE_A:
61526150
case CARD_INFO_TYPE_1G_FIBRE_B:
6153-
qeth_set_ecmd_adv_sup(ecmd, SPEED_1000, PORT_FIBRE);
6154-
ecmd->port = PORT_FIBRE;
6151+
cmd->base.port = PORT_FIBRE;
6152+
qeth_set_cmd_adv_sup(cmd, SPEED_1000, cmd->base.port);
61556153
break;
61566154
case CARD_INFO_TYPE_10G_FIBRE_A:
61576155
case CARD_INFO_TYPE_10G_FIBRE_B:
6158-
qeth_set_ecmd_adv_sup(ecmd, SPEED_10000, PORT_FIBRE);
6159-
ecmd->port = PORT_FIBRE;
6156+
cmd->base.port = PORT_FIBRE;
6157+
qeth_set_cmd_adv_sup(cmd, SPEED_10000, cmd->base.port);
61606158
break;
61616159
}
61626160

61636161
switch (carrier_info.port_mode) {
61646162
case CARD_INFO_PORTM_FULLDUPLEX:
6165-
ecmd->duplex = DUPLEX_FULL;
6163+
cmd->base.duplex = DUPLEX_FULL;
61666164
break;
61676165
case CARD_INFO_PORTM_HALFDUPLEX:
6168-
ecmd->duplex = DUPLEX_HALF;
6166+
cmd->base.duplex = DUPLEX_HALF;
61696167
break;
61706168
}
61716169

61726170
switch (carrier_info.port_speed) {
61736171
case CARD_INFO_PORTS_10M:
6174-
speed = SPEED_10;
6172+
cmd->base.speed = SPEED_10;
61756173
break;
61766174
case CARD_INFO_PORTS_100M:
6177-
speed = SPEED_100;
6175+
cmd->base.speed = SPEED_100;
61786176
break;
61796177
case CARD_INFO_PORTS_1G:
6180-
speed = SPEED_1000;
6178+
cmd->base.speed = SPEED_1000;
61816179
break;
61826180
case CARD_INFO_PORTS_10G:
6183-
speed = SPEED_10000;
6181+
cmd->base.speed = SPEED_10000;
61846182
break;
61856183
}
6186-
ethtool_cmd_speed_set(ecmd, speed);
61876184

61886185
return 0;
61896186
}
6190-
EXPORT_SYMBOL_GPL(qeth_core_ethtool_get_settings);
6187+
EXPORT_SYMBOL_GPL(qeth_core_ethtool_get_link_ksettings);
61916188

61926189
/* Callback to handle checksum offload command reply from OSA card.
61936190
* Verify that required features have been enabled on the card.

drivers/s390/net/qeth_l2_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,7 @@ static const struct ethtool_ops qeth_l2_ethtool_ops = {
917917
.get_ethtool_stats = qeth_core_get_ethtool_stats,
918918
.get_sset_count = qeth_core_get_sset_count,
919919
.get_drvinfo = qeth_core_get_drvinfo,
920-
.get_settings = qeth_core_ethtool_get_settings,
920+
.get_link_ksettings = qeth_core_ethtool_get_link_ksettings,
921921
};
922922

923923
static const struct ethtool_ops qeth_l2_osn_ops = {

drivers/s390/net/qeth_l3_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2912,7 +2912,7 @@ static const struct ethtool_ops qeth_l3_ethtool_ops = {
29122912
.get_ethtool_stats = qeth_core_get_ethtool_stats,
29132913
.get_sset_count = qeth_core_get_sset_count,
29142914
.get_drvinfo = qeth_core_get_drvinfo,
2915-
.get_settings = qeth_core_ethtool_get_settings,
2915+
.get_link_ksettings = qeth_core_ethtool_get_link_ksettings,
29162916
};
29172917

29182918
/*

0 commit comments

Comments
 (0)