diff options
author | David Decotigny <decot@google.com> | 2011-04-27 14:32:39 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-04-29 17:03:00 -0400 |
commit | 25db0338813a8915457636b1f6abe6a28fa73f8d (patch) | |
tree | 29ea39e45de1342beb4e3c58da0cfbc9915b617e /drivers/net/tg3.c | |
parent | 8ae6daca85c8bbd6a32c382db5e2a2a989f8bed2 (diff) |
ethtool: Use full 32 bit speed range in ethtool's set_settings
This makes sure the ethtool's set_settings() callback of network
drivers don't ignore the 16 most significant bits when ethtool calls
their set_settings().
All drivers compiled with make allyesconfig on x86_64 have been
updated.
Signed-off-by: David Decotigny <decot@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/tg3.c')
-rw-r--r-- | drivers/net/tg3.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index fa57e3d699de..004f266e4352 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -10042,6 +10042,7 @@ static int tg3_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) | |||
10042 | static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) | 10042 | static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) |
10043 | { | 10043 | { |
10044 | struct tg3 *tp = netdev_priv(dev); | 10044 | struct tg3 *tp = netdev_priv(dev); |
10045 | u32 speed = ethtool_cmd_speed(cmd); | ||
10045 | 10046 | ||
10046 | if (tg3_flag(tp, USE_PHYLIB)) { | 10047 | if (tg3_flag(tp, USE_PHYLIB)) { |
10047 | struct phy_device *phydev; | 10048 | struct phy_device *phydev; |
@@ -10091,14 +10092,14 @@ static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) | |||
10091 | cmd->advertising &= mask; | 10092 | cmd->advertising &= mask; |
10092 | } else { | 10093 | } else { |
10093 | if (tp->phy_flags & TG3_PHYFLG_ANY_SERDES) { | 10094 | if (tp->phy_flags & TG3_PHYFLG_ANY_SERDES) { |
10094 | if (cmd->speed != SPEED_1000) | 10095 | if (speed != SPEED_1000) |
10095 | return -EINVAL; | 10096 | return -EINVAL; |
10096 | 10097 | ||
10097 | if (cmd->duplex != DUPLEX_FULL) | 10098 | if (cmd->duplex != DUPLEX_FULL) |
10098 | return -EINVAL; | 10099 | return -EINVAL; |
10099 | } else { | 10100 | } else { |
10100 | if (cmd->speed != SPEED_100 && | 10101 | if (speed != SPEED_100 && |
10101 | cmd->speed != SPEED_10) | 10102 | speed != SPEED_10) |
10102 | return -EINVAL; | 10103 | return -EINVAL; |
10103 | } | 10104 | } |
10104 | } | 10105 | } |
@@ -10113,7 +10114,7 @@ static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) | |||
10113 | tp->link_config.duplex = DUPLEX_INVALID; | 10114 | tp->link_config.duplex = DUPLEX_INVALID; |
10114 | } else { | 10115 | } else { |
10115 | tp->link_config.advertising = 0; | 10116 | tp->link_config.advertising = 0; |
10116 | tp->link_config.speed = cmd->speed; | 10117 | tp->link_config.speed = speed; |
10117 | tp->link_config.duplex = cmd->duplex; | 10118 | tp->link_config.duplex = cmd->duplex; |
10118 | } | 10119 | } |
10119 | 10120 | ||