diff options
author | stephen hemminger <shemminger@vyatta.com> | 2011-04-04 12:31:19 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-04-06 14:35:23 -0700 |
commit | 7bc93714042418cbc4ca89c51d3ab448ea3ef2fe (patch) | |
tree | e910a15d36df4b4f9eb83a45d96506a6dcddf278 | |
parent | 9871acf67c9af89c1e17aee907a3f36e88ccfb67 (diff) | |
download | linux-7bc93714042418cbc4ca89c51d3ab448ea3ef2fe.tar.gz linux-7bc93714042418cbc4ca89c51d3ab448ea3ef2fe.tar.bz2 linux-7bc93714042418cbc4ca89c51d3ab448ea3ef2fe.zip |
niu: convert to new ethtool set_phys_id
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/niu.c | 29 | ||||
-rw-r--r-- | drivers/net/niu.h | 1 |
2 files changed, 17 insertions, 13 deletions
diff --git a/drivers/net/niu.c b/drivers/net/niu.c index 681a42ca5c51..ab4e7dd82d0b 100644 --- a/drivers/net/niu.c +++ b/drivers/net/niu.c @@ -7888,28 +7888,31 @@ static void niu_force_led(struct niu *np, int on) nw64_mac(reg, val); } -static int niu_phys_id(struct net_device *dev, u32 data) +static int niu_set_phys_id(struct net_device *dev, + enum ethtool_phys_id_state state) + { struct niu *np = netdev_priv(dev); - u64 orig_led_state; - int i; if (!netif_running(dev)) return -EAGAIN; - if (data == 0) - data = 2; + switch (state) { + case ETHTOOL_ID_ACTIVE: + np->orig_led_state = niu_led_state_save(np); + return -EINVAL; - orig_led_state = niu_led_state_save(np); - for (i = 0; i < (data * 2); i++) { - int on = ((i % 2) == 0); + case ETHTOOL_ID_ON: + niu_force_led(np, 1); + break; - niu_force_led(np, on); + case ETHTOOL_ID_OFF: + niu_force_led(np, 0); + break; - if (msleep_interruptible(500)) - break; + case ETHTOOL_ID_INACTIVE: + niu_led_state_restore(np, np->orig_led_state); } - niu_led_state_restore(np, orig_led_state); return 0; } @@ -7932,7 +7935,7 @@ static const struct ethtool_ops niu_ethtool_ops = { .get_strings = niu_get_strings, .get_sset_count = niu_get_sset_count, .get_ethtool_stats = niu_get_ethtool_stats, - .phys_id = niu_phys_id, + .set_phys_id = niu_set_phys_id, .get_rxnfc = niu_get_nfc, .set_rxnfc = niu_set_nfc, .set_flags = niu_set_flags, diff --git a/drivers/net/niu.h b/drivers/net/niu.h index a41fa8ebe05f..51e177e1860d 100644 --- a/drivers/net/niu.h +++ b/drivers/net/niu.h @@ -3279,6 +3279,7 @@ struct niu { unsigned long xpcs_off; struct timer_list timer; + u64 orig_led_state; const struct niu_phy_ops *phy_ops; int phy_addr; |