|
@@ -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 */
|