diff options
author | Dmitry Kravkov <dmitry@broadcom.com> | 2011-02-27 22:37:20 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-02-28 16:14:46 -0500 |
commit | faa6fcbbba110c7c4bc299bc90f59d9f7b51ac6e (patch) | |
tree | 7e4b38510a18b12df71e9b35269f4cfc4e7a94bf /drivers/net/bnx2x/bnx2x_cmn.c | |
parent | e3fa3aff0cb198e7c53d894f52146121d9592872 (diff) |
bnx2x: (NPAR mode) Fix FW initialization
Fix FW initialization according to max BW stored in percents
for NPAR mode. Protect HW from being configured to speed 0.
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2x/bnx2x_cmn.c')
-rw-r--r-- | drivers/net/bnx2x/bnx2x_cmn.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c index 710ce5d04c5..a58baf35d22 100644 --- a/drivers/net/bnx2x/bnx2x_cmn.c +++ b/drivers/net/bnx2x/bnx2x_cmn.c | |||
@@ -703,19 +703,20 @@ u16 bnx2x_get_mf_speed(struct bnx2x *bp) | |||
703 | { | 703 | { |
704 | u16 line_speed = bp->link_vars.line_speed; | 704 | u16 line_speed = bp->link_vars.line_speed; |
705 | if (IS_MF(bp)) { | 705 | if (IS_MF(bp)) { |
706 | u16 maxCfg = (bp->mf_config[BP_VN(bp)] & | 706 | u16 maxCfg = bnx2x_extract_max_cfg(bp, |
707 | FUNC_MF_CFG_MAX_BW_MASK) >> | 707 | bp->mf_config[BP_VN(bp)]); |
708 | FUNC_MF_CFG_MAX_BW_SHIFT; | 708 | |
709 | /* Calculate the current MAX line speed limit for the DCC | 709 | /* Calculate the current MAX line speed limit for the MF |
710 | * capable devices | 710 | * devices |
711 | */ | 711 | */ |
712 | if (IS_MF_SD(bp)) { | 712 | if (IS_MF_SI(bp)) |
713 | line_speed = (line_speed * maxCfg) / 100; | ||
714 | else { /* SD mode */ | ||
713 | u16 vn_max_rate = maxCfg * 100; | 715 | u16 vn_max_rate = maxCfg * 100; |
714 | 716 | ||
715 | if (vn_max_rate < line_speed) | 717 | if (vn_max_rate < line_speed) |
716 | line_speed = vn_max_rate; | 718 | line_speed = vn_max_rate; |
717 | } else /* IS_MF_SI(bp)) */ | 719 | } |
718 | line_speed = (line_speed * maxCfg) / 100; | ||
719 | } | 720 | } |
720 | 721 | ||
721 | return line_speed; | 722 | return line_speed; |