44
45
if (netif_carrier_ok(dev)) {
45
46
switch (port->port_speed) {
46
case EHEA_SPEED_10M: cmd->speed = SPEED_10; break;
47
case EHEA_SPEED_100M: cmd->speed = SPEED_100; break;
48
case EHEA_SPEED_1G: cmd->speed = SPEED_1000; break;
49
case EHEA_SPEED_10G: cmd->speed = SPEED_10000; break;
51
63
cmd->duplex = port->full_duplex == 1 ?
52
64
DUPLEX_FULL : DUPLEX_HALF;
58
cmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_1000baseT_Full
59
| SUPPORTED_100baseT_Full | SUPPORTED_100baseT_Half
60
| SUPPORTED_10baseT_Full | SUPPORTED_10baseT_Half
61
| SUPPORTED_Autoneg | SUPPORTED_FIBRE);
63
cmd->advertising = (ADVERTISED_10000baseT_Full | ADVERTISED_Autoneg
66
cmd->port = PORT_FIBRE;
69
ethtool_cmd_speed_set(cmd, speed);
71
if (cmd->speed == SPEED_10000) {
72
cmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE);
73
cmd->advertising = (ADVERTISED_10000baseT_Full | ADVERTISED_FIBRE);
74
cmd->port = PORT_FIBRE;
76
cmd->supported = (SUPPORTED_1000baseT_Full | SUPPORTED_100baseT_Full
77
| SUPPORTED_100baseT_Half | SUPPORTED_10baseT_Full
78
| SUPPORTED_10baseT_Half | SUPPORTED_Autoneg
80
cmd->advertising = (ADVERTISED_1000baseT_Full | ADVERTISED_Autoneg
67
85
cmd->autoneg = port->autoneg == 1 ? AUTONEG_ENABLE : AUTONEG_DISABLE;
266
static int ehea_set_flags(struct net_device *dev, u32 data)
268
/* Avoid changing the VLAN flags */
269
if ((data & (ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN)) !=
270
(ethtool_op_get_flags(dev) & (ETH_FLAG_RXVLAN |
275
return ethtool_op_set_flags(dev, data, ETH_FLAG_LRO
280
279
const struct ethtool_ops ehea_ethtool_ops = {
281
280
.get_settings = ehea_get_settings,
282
281
.get_drvinfo = ehea_get_drvinfo,
283
282
.get_msglevel = ehea_get_msglevel,
284
283
.set_msglevel = ehea_set_msglevel,
285
284
.get_link = ethtool_op_get_link,
286
.set_tso = ethtool_op_set_tso,
287
285
.get_strings = ehea_get_strings,
288
286
.get_sset_count = ehea_get_sset_count,
289
287
.get_ethtool_stats = ehea_get_ethtool_stats,
290
.get_rx_csum = ehea_get_rx_csum,
291
288
.set_settings = ehea_set_settings,
292
.get_flags = ethtool_op_get_flags,
293
.set_flags = ehea_set_flags,
294
289
.nway_reset = ehea_nway_reset, /* Restart autonegotiation */