diff options
Diffstat (limited to 'drivers/s390')
| -rw-r--r-- | drivers/s390/net/qeth_core.h | 1 | ||||
| -rw-r--r-- | drivers/s390/net/qeth_core_main.c | 90 | ||||
| -rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 1 | ||||
| -rw-r--r-- | drivers/s390/net/qeth_l3_main.c | 1 |
4 files changed, 93 insertions, 0 deletions
diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h index b7bb0ff87c..8dd83d9209 100644 --- a/drivers/s390/net/qeth_core.h +++ b/drivers/s390/net/qeth_core.h | |||
| @@ -880,6 +880,7 @@ void qeth_core_get_ethtool_stats(struct net_device *, | |||
| 880 | void qeth_core_get_strings(struct net_device *, u32, u8 *); | 880 | void qeth_core_get_strings(struct net_device *, u32, u8 *); |
| 881 | void qeth_core_get_drvinfo(struct net_device *, struct ethtool_drvinfo *); | 881 | void qeth_core_get_drvinfo(struct net_device *, struct ethtool_drvinfo *); |
| 882 | void qeth_dbf_longtext(enum qeth_dbf_names dbf_nix, int level, char *text, ...); | 882 | void qeth_dbf_longtext(enum qeth_dbf_names dbf_nix, int level, char *text, ...); |
| 883 | int qeth_core_ethtool_get_settings(struct net_device *, struct ethtool_cmd *); | ||
| 883 | 884 | ||
| 884 | /* exports for OSN */ | 885 | /* exports for OSN */ |
| 885 | int qeth_osn_assist(struct net_device *, void *, int); | 886 | int qeth_osn_assist(struct net_device *, void *, int); |
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index 18323250a3..23a46340ff 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c | |||
| @@ -4423,6 +4423,96 @@ void qeth_core_get_drvinfo(struct net_device *dev, | |||
| 4423 | } | 4423 | } |
| 4424 | EXPORT_SYMBOL_GPL(qeth_core_get_drvinfo); | 4424 | EXPORT_SYMBOL_GPL(qeth_core_get_drvinfo); |
| 4425 | 4425 | ||
| 4426 | int qeth_core_ethtool_get_settings(struct net_device *netdev, | ||
| 4427 | struct ethtool_cmd *ecmd) | ||
| 4428 | { | ||
| 4429 | struct qeth_card *card = netdev_priv(netdev); | ||
| 4430 | enum qeth_link_types link_type; | ||
| 4431 | |||
| 4432 | if ((card->info.type == QETH_CARD_TYPE_IQD) || (card->info.guestlan)) | ||
| 4433 | link_type = QETH_LINK_TYPE_10GBIT_ETH; | ||
| 4434 | else | ||
| 4435 | link_type = card->info.link_type; | ||
| 4436 | |||
| 4437 | ecmd->transceiver = XCVR_INTERNAL; | ||
| 4438 | ecmd->supported = SUPPORTED_Autoneg; | ||
| 4439 | ecmd->advertising = ADVERTISED_Autoneg; | ||
| 4440 | ecmd->duplex = DUPLEX_FULL; | ||
| 4441 | ecmd->autoneg = AUTONEG_ENABLE; | ||
| 4442 | |||
| 4443 | switch (link_type) { | ||
| 4444 | case QETH_LINK_TYPE_FAST_ETH: | ||
| 4445 | case QETH_LINK_TYPE_LANE_ETH100: | ||
| 4446 | ecmd->supported |= SUPPORTED_10baseT_Half | | ||
| 4447 | SUPPORTED_10baseT_Full | | ||
| 4448 | SUPPORTED_100baseT_Half | | ||
| 4449 | SUPPORTED_100baseT_Full | | ||
| 4450 | SUPPORTED_TP; | ||
| 4451 | ecmd->advertising |= ADVERTISED_10baseT_Half | | ||
| 4452 | ADVERTISED_10baseT_Full | | ||
| 4453 | ADVERTISED_100baseT_Half | | ||
| 4454 | ADVERTISED_100baseT_Full | | ||
| 4455 | ADVERTISED_TP; | ||
| 4456 | ecmd->speed = SPEED_100; | ||
| 4457 | ecmd->port = PORT_TP; | ||
| 4458 | break; | ||
| 4459 | |||
| 4460 | case QETH_LINK_TYPE_GBIT_ETH: | ||
| 4461 | case QETH_LINK_TYPE_LANE_ETH1000: | ||
| 4462 | ecmd->supported |= SUPPORTED_10baseT_Half | | ||
| 4463 | SUPPORTED_10baseT_Full | | ||
| 4464 | SUPPORTED_100baseT_Half | | ||
| 4465 | SUPPORTED_100baseT_Full | | ||
| 4466 | SUPPORTED_1000baseT_Half | | ||
| 4467 | SUPPORTED_1000baseT_Full | | ||
| 4468 | SUPPORTED_FIBRE; | ||
| 4469 | ecmd->advertising |= ADVERTISED_10baseT_Half | | ||
| 4470 | ADVERTISED_10baseT_Full | | ||
| 4471 | ADVERTISED_100baseT_Half | | ||
| 4472 | ADVERTISED_100baseT_Full | | ||
| 4473 | ADVERTISED_1000baseT_Half | | ||
| 4474 | ADVERTISED_1000baseT_Full | | ||
| 4475 | ADVERTISED_FIBRE; | ||
| 4476 | ecmd->speed = SPEED_1000; | ||
| 4477 | ecmd->port = PORT_FIBRE; | ||
| 4478 | break; | ||
| 4479 | |||
| 4480 | case QETH_LINK_TYPE_10GBIT_ETH: | ||
| 4481 | ecmd->supported |= SUPPORTED_10baseT_Half | | ||
| 4482 | SUPPORTED_10baseT_Full | | ||
| 4483 | SUPPORTED_100baseT_Half | | ||
| 4484 | SUPPORTED_100baseT_Full | | ||
| 4485 | SUPPORTED_1000baseT_Half | | ||
| 4486 | SUPPORTED_1000baseT_Full | | ||
| 4487 | SUPPORTED_10000baseT_Full | | ||
| 4488 | SUPPORTED_FIBRE; | ||
| 4489 | ecmd->advertising |= ADVERTISED_10baseT_Half | | ||
| 4490 | ADVERTISED_10baseT_Full | | ||
| 4491 | ADVERTISED_100baseT_Half | | ||
| 4492 | ADVERTISED_100baseT_Full | | ||
| 4493 | ADVERTISED_1000baseT_Half | | ||
| 4494 | ADVERTISED_1000baseT_Full | | ||
| 4495 | ADVERTISED_10000baseT_Full | | ||
| 4496 | ADVERTISED_FIBRE; | ||
| 4497 | ecmd->speed = SPEED_10000; | ||
| 4498 | ecmd->port = PORT_FIBRE; | ||
| 4499 | break; | ||
| 4500 | |||
| 4501 | default: | ||
| 4502 | ecmd->supported |= SUPPORTED_10baseT_Half | | ||
| 4503 | SUPPORTED_10baseT_Full | | ||
| 4504 | SUPPORTED_TP; | ||
| 4505 | ecmd->advertising |= ADVERTISED_10baseT_Half | | ||
| 4506 | ADVERTISED_10baseT_Full | | ||
| 4507 | ADVERTISED_TP; | ||
| 4508 | ecmd->speed = SPEED_10; | ||
| 4509 | ecmd->port = PORT_TP; | ||
| 4510 | } | ||
| 4511 | |||
| 4512 | return 0; | ||
| 4513 | } | ||
| 4514 | EXPORT_SYMBOL_GPL(qeth_core_ethtool_get_settings); | ||
| 4515 | |||
| 4426 | static int __init qeth_core_init(void) | 4516 | static int __init qeth_core_init(void) |
| 4427 | { | 4517 | { |
| 4428 | int rc; | 4518 | int rc; |
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 7e8f639650..e6092829a5 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
| @@ -861,6 +861,7 @@ static struct ethtool_ops qeth_l2_ethtool_ops = { | |||
| 861 | .get_ethtool_stats = qeth_core_get_ethtool_stats, | 861 | .get_ethtool_stats = qeth_core_get_ethtool_stats, |
| 862 | .get_stats_count = qeth_core_get_stats_count, | 862 | .get_stats_count = qeth_core_get_stats_count, |
| 863 | .get_drvinfo = qeth_core_get_drvinfo, | 863 | .get_drvinfo = qeth_core_get_drvinfo, |
| 864 | .get_settings = qeth_core_ethtool_get_settings, | ||
| 864 | }; | 865 | }; |
| 865 | 866 | ||
| 866 | static struct ethtool_ops qeth_l2_osn_ops = { | 867 | static struct ethtool_ops qeth_l2_osn_ops = { |
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c index f385e93d75..ce23169587 100644 --- a/drivers/s390/net/qeth_l3_main.c +++ b/drivers/s390/net/qeth_l3_main.c | |||
| @@ -2889,6 +2889,7 @@ static struct ethtool_ops qeth_l3_ethtool_ops = { | |||
| 2889 | .get_ethtool_stats = qeth_core_get_ethtool_stats, | 2889 | .get_ethtool_stats = qeth_core_get_ethtool_stats, |
| 2890 | .get_stats_count = qeth_core_get_stats_count, | 2890 | .get_stats_count = qeth_core_get_stats_count, |
| 2891 | .get_drvinfo = qeth_core_get_drvinfo, | 2891 | .get_drvinfo = qeth_core_get_drvinfo, |
| 2892 | .get_settings = qeth_core_ethtool_get_settings, | ||
| 2892 | }; | 2893 | }; |
| 2893 | 2894 | ||
| 2894 | /* | 2895 | /* |
