Loading drivers/net/bnx2.c +27 −29 Original line number Diff line number Diff line Loading @@ -7495,41 +7495,39 @@ bnx2_get_ethtool_stats(struct net_device *dev, } 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); int i; u32 save; switch (state) { case ETHTOOL_ID_ACTIVE: bnx2_set_power_state(bp, PCI_D0); if (data == 0) data = 2; save = REG_RD(bp, BNX2_MISC_CFG); bp->leds_save = REG_RD(bp, BNX2_MISC_CFG); REG_WR(bp, BNX2_MISC_CFG, BNX2_MISC_CFG_LEDMODE_MAC); return -EINVAL; for (i = 0; i < (data * 2); i++) { if ((i % 2) == 0) { REG_WR(bp, BNX2_EMAC_LED, BNX2_EMAC_LED_OVERRIDE); } else { case ETHTOOL_ID_ON: 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; } case ETHTOOL_ID_OFF: REG_WR(bp, BNX2_EMAC_LED, BNX2_EMAC_LED_OVERRIDE); break; case ETHTOOL_ID_INACTIVE: REG_WR(bp, BNX2_EMAC_LED, 0); REG_WR(bp, BNX2_MISC_CFG, save); REG_WR(bp, BNX2_MISC_CFG, bp->leds_save); if (!netif_running(dev)) bnx2_set_power_state(bp, PCI_D3hot); break; } return 0; } Loading Loading @@ -7602,7 +7600,7 @@ static const struct ethtool_ops bnx2_ethtool_ops = { .set_tso = bnx2_set_tso, .self_test = bnx2_self_test, .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_sset_count = bnx2_get_sset_count, .set_flags = bnx2_set_flags, Loading drivers/net/bnx2.h +1 −0 Original line number Diff line number Diff line Loading @@ -6922,6 +6922,7 @@ struct bnx2 { u8 num_tx_rings; u8 num_rx_rings; u32 leds_save; u32 idle_chk_status_idx; #ifdef BCM_CNIC Loading Loading
drivers/net/bnx2.c +27 −29 Original line number Diff line number Diff line Loading @@ -7495,41 +7495,39 @@ bnx2_get_ethtool_stats(struct net_device *dev, } 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); int i; u32 save; switch (state) { case ETHTOOL_ID_ACTIVE: bnx2_set_power_state(bp, PCI_D0); if (data == 0) data = 2; save = REG_RD(bp, BNX2_MISC_CFG); bp->leds_save = REG_RD(bp, BNX2_MISC_CFG); REG_WR(bp, BNX2_MISC_CFG, BNX2_MISC_CFG_LEDMODE_MAC); return -EINVAL; for (i = 0; i < (data * 2); i++) { if ((i % 2) == 0) { REG_WR(bp, BNX2_EMAC_LED, BNX2_EMAC_LED_OVERRIDE); } else { case ETHTOOL_ID_ON: 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; } case ETHTOOL_ID_OFF: REG_WR(bp, BNX2_EMAC_LED, BNX2_EMAC_LED_OVERRIDE); break; case ETHTOOL_ID_INACTIVE: REG_WR(bp, BNX2_EMAC_LED, 0); REG_WR(bp, BNX2_MISC_CFG, save); REG_WR(bp, BNX2_MISC_CFG, bp->leds_save); if (!netif_running(dev)) bnx2_set_power_state(bp, PCI_D3hot); break; } return 0; } Loading Loading @@ -7602,7 +7600,7 @@ static const struct ethtool_ops bnx2_ethtool_ops = { .set_tso = bnx2_set_tso, .self_test = bnx2_self_test, .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_sset_count = bnx2_get_sset_count, .set_flags = bnx2_set_flags, Loading
drivers/net/bnx2.h +1 −0 Original line number Diff line number Diff line Loading @@ -6922,6 +6922,7 @@ struct bnx2 { u8 num_tx_rings; u8 num_rx_rings; u32 leds_save; u32 idle_chk_status_idx; #ifdef BCM_CNIC Loading