Commit 2e17e1aa authored by stephen hemminger's avatar stephen hemminger Committed by David S. Miller

bnx2: convert to set_phys_id

In this case, need to add element to device private to hold
original led state.
Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6d8a7e6f
...@@ -7495,41 +7495,39 @@ bnx2_get_ethtool_stats(struct net_device *dev, ...@@ -7495,41 +7495,39 @@ bnx2_get_ethtool_stats(struct net_device *dev,
} }
static int static int
bnx2_phys_id(struct net_device *dev, u32 data) bnx2_set_phys_id(struct net_device *dev, enum ethtool_phys_id_state state)
{ {
struct bnx2 *bp = netdev_priv(dev); struct bnx2 *bp = netdev_priv(dev);
int i;
u32 save;
bnx2_set_power_state(bp, PCI_D0); switch (state) {
case ETHTOOL_ID_ACTIVE:
bnx2_set_power_state(bp, PCI_D0);
if (data == 0) bp->leds_save = REG_RD(bp, BNX2_MISC_CFG);
data = 2; REG_WR(bp, BNX2_MISC_CFG, BNX2_MISC_CFG_LEDMODE_MAC);
return -EINVAL;
save = REG_RD(bp, BNX2_MISC_CFG); case ETHTOOL_ID_ON:
REG_WR(bp, BNX2_MISC_CFG, BNX2_MISC_CFG_LEDMODE_MAC); REG_WR(bp, BNX2_EMAC_LED, BNX2_EMAC_LED_OVERRIDE |
BNX2_EMAC_LED_1000MB_OVERRIDE |
BNX2_EMAC_LED_100MB_OVERRIDE |
BNX2_EMAC_LED_10MB_OVERRIDE |
BNX2_EMAC_LED_TRAFFIC_OVERRIDE |
BNX2_EMAC_LED_TRAFFIC);
break;
for (i = 0; i < (data * 2); i++) { case ETHTOOL_ID_OFF:
if ((i % 2) == 0) { REG_WR(bp, BNX2_EMAC_LED, BNX2_EMAC_LED_OVERRIDE);
REG_WR(bp, BNX2_EMAC_LED, BNX2_EMAC_LED_OVERRIDE); break;
}
else {
REG_WR(bp, BNX2_EMAC_LED, BNX2_EMAC_LED_OVERRIDE |
BNX2_EMAC_LED_1000MB_OVERRIDE |
BNX2_EMAC_LED_100MB_OVERRIDE |
BNX2_EMAC_LED_10MB_OVERRIDE |
BNX2_EMAC_LED_TRAFFIC_OVERRIDE |
BNX2_EMAC_LED_TRAFFIC);
}
msleep_interruptible(500);
if (signal_pending(current))
break;
}
REG_WR(bp, BNX2_EMAC_LED, 0);
REG_WR(bp, BNX2_MISC_CFG, save);
if (!netif_running(dev)) case ETHTOOL_ID_INACTIVE:
bnx2_set_power_state(bp, PCI_D3hot); REG_WR(bp, BNX2_EMAC_LED, 0);
REG_WR(bp, BNX2_MISC_CFG, bp->leds_save);
if (!netif_running(dev))
bnx2_set_power_state(bp, PCI_D3hot);
break;
}
return 0; return 0;
} }
...@@ -7602,7 +7600,7 @@ static const struct ethtool_ops bnx2_ethtool_ops = { ...@@ -7602,7 +7600,7 @@ static const struct ethtool_ops bnx2_ethtool_ops = {
.set_tso = bnx2_set_tso, .set_tso = bnx2_set_tso,
.self_test = bnx2_self_test, .self_test = bnx2_self_test,
.get_strings = bnx2_get_strings, .get_strings = bnx2_get_strings,
.phys_id = bnx2_phys_id, .set_phys_id = bnx2_set_phys_id,
.get_ethtool_stats = bnx2_get_ethtool_stats, .get_ethtool_stats = bnx2_get_ethtool_stats,
.get_sset_count = bnx2_get_sset_count, .get_sset_count = bnx2_get_sset_count,
.set_flags = bnx2_set_flags, .set_flags = bnx2_set_flags,
......
...@@ -6922,6 +6922,7 @@ struct bnx2 { ...@@ -6922,6 +6922,7 @@ struct bnx2 {
u8 num_tx_rings; u8 num_tx_rings;
u8 num_rx_rings; u8 num_rx_rings;
u32 leds_save;
u32 idle_chk_status_idx; u32 idle_chk_status_idx;
#ifdef BCM_CNIC #ifdef BCM_CNIC
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment