Skip to content

Commit

Permalink
bnx2x: Fix LED behavior
Browse files Browse the repository at this point in the history
This fix resolve two problems seen regarding LED:
1. LED doesn't flash during port identification.
2. Traffic LED sometimes do not blink.

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Yaniv Rosner authored and David S. Miller committed Aug 3, 2011
1 parent 157fa28 commit 793bd45
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions drivers/net/bnx2x/bnx2x_link.c
Original file line number Diff line number Diff line change
Expand Up @@ -5922,20 +5922,30 @@ int bnx2x_set_led(struct link_params *params,
tmp = EMAC_RD(bp, EMAC_REG_EMAC_LED);
EMAC_WR(bp, EMAC_REG_EMAC_LED,
(tmp | EMAC_LED_OVERRIDE));
return rc;
/*
* return here without enabling traffic
* LED blink andsetting rate in ON mode.
* In oper mode, enabling LED blink
* and setting rate is needed.
*/
if (mode == LED_MODE_ON)
return rc;
}
} else if (SINGLE_MEDIA_DIRECT(params) &&
(CHIP_IS_E1x(bp) ||
CHIP_IS_E2(bp))) {
} else if (SINGLE_MEDIA_DIRECT(params)) {
/*
* This is a work-around for HW issue found when link
* is up in CL73
*/
REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, 0);
REG_WR(bp, NIG_REG_LED_10G_P0 + port*4, 1);
} else {
if (CHIP_IS_E1x(bp) ||
CHIP_IS_E2(bp) ||
(mode == LED_MODE_ON))
REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, 0);
else
REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4,
hw_led_mode);
} else
REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, hw_led_mode);
}

REG_WR(bp, NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0 + port*4, 0);
/* Set blinking rate to ~15.9Hz */
Expand Down

0 comments on commit 793bd45

Please sign in to comment.