aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bnx2x/bnx2x_cmn.c
diff options
context:
space:
mode:
authorDmitry Kravkov <dmitry@broadcom.com>2011-02-27 22:37:20 -0500
committerDavid S. Miller <davem@davemloft.net>2011-02-28 16:14:46 -0500
commitfaa6fcbbba110c7c4bc299bc90f59d9f7b51ac6e (patch)
tree7e4b38510a18b12df71e9b35269f4cfc4e7a94bf /drivers/net/bnx2x/bnx2x_cmn.c
parente3fa3aff0cb198e7c53d894f52146121d9592872 (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.c17
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;