diff options
-rw-r--r-- | drivers/net/bnx2x_hsi.h | 4 | ||||
-rw-r--r-- | drivers/net/bnx2x_main.c | 56 | ||||
-rw-r--r-- | firmware/Makefile | 2 | ||||
-rw-r--r-- | firmware/WHENCE | 4 |
4 files changed, 33 insertions, 33 deletions
diff --git a/drivers/net/bnx2x_hsi.h b/drivers/net/bnx2x_hsi.h index 994743d892ea..dc2f8ed5fd07 100644 --- a/drivers/net/bnx2x_hsi.h +++ b/drivers/net/bnx2x_hsi.h | |||
@@ -1259,8 +1259,8 @@ struct host_func_stats { | |||
1259 | 1259 | ||
1260 | 1260 | ||
1261 | #define BCM_5710_FW_MAJOR_VERSION 5 | 1261 | #define BCM_5710_FW_MAJOR_VERSION 5 |
1262 | #define BCM_5710_FW_MINOR_VERSION 0 | 1262 | #define BCM_5710_FW_MINOR_VERSION 2 |
1263 | #define BCM_5710_FW_REVISION_VERSION 21 | 1263 | #define BCM_5710_FW_REVISION_VERSION 7 |
1264 | #define BCM_5710_FW_ENGINEERING_VERSION 0 | 1264 | #define BCM_5710_FW_ENGINEERING_VERSION 0 |
1265 | #define BCM_5710_FW_COMPILE_FLAGS 1 | 1265 | #define BCM_5710_FW_COMPILE_FLAGS 1 |
1266 | 1266 | ||
diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c index b4e9c6ebac54..691cf1541892 100644 --- a/drivers/net/bnx2x_main.c +++ b/drivers/net/bnx2x_main.c | |||
@@ -2333,8 +2333,14 @@ static void bnx2x_calc_vn_weight_sum(struct bnx2x *bp) | |||
2333 | } | 2333 | } |
2334 | 2334 | ||
2335 | /* ... only if all min rates are zeros - disable fairness */ | 2335 | /* ... only if all min rates are zeros - disable fairness */ |
2336 | if (all_zero) | 2336 | if (all_zero) { |
2337 | bp->vn_weight_sum = 0; | 2337 | bp->cmng.flags.cmng_enables &= |
2338 | ~CMNG_FLAGS_PER_PORT_FAIRNESS_VN; | ||
2339 | DP(NETIF_MSG_IFUP, "All MIN values are zeroes" | ||
2340 | " fairness will be disabled\n"); | ||
2341 | } else | ||
2342 | bp->cmng.flags.cmng_enables |= | ||
2343 | CMNG_FLAGS_PER_PORT_FAIRNESS_VN; | ||
2338 | } | 2344 | } |
2339 | 2345 | ||
2340 | static void bnx2x_init_vn_minmax(struct bnx2x *bp, int func) | 2346 | static void bnx2x_init_vn_minmax(struct bnx2x *bp, int func) |
@@ -2353,17 +2359,14 @@ static void bnx2x_init_vn_minmax(struct bnx2x *bp, int func) | |||
2353 | } else { | 2359 | } else { |
2354 | vn_min_rate = ((vn_cfg & FUNC_MF_CFG_MIN_BW_MASK) >> | 2360 | vn_min_rate = ((vn_cfg & FUNC_MF_CFG_MIN_BW_MASK) >> |
2355 | FUNC_MF_CFG_MIN_BW_SHIFT) * 100; | 2361 | FUNC_MF_CFG_MIN_BW_SHIFT) * 100; |
2356 | /* If fairness is enabled (not all min rates are zeroes) and | 2362 | /* If min rate is zero - set it to 1 */ |
2357 | if current min rate is zero - set it to 1. | 2363 | if (!vn_min_rate) |
2358 | This is a requirement of the algorithm. */ | ||
2359 | if (bp->vn_weight_sum && (vn_min_rate == 0)) | ||
2360 | vn_min_rate = DEF_MIN_RATE; | 2364 | vn_min_rate = DEF_MIN_RATE; |
2361 | vn_max_rate = ((vn_cfg & FUNC_MF_CFG_MAX_BW_MASK) >> | 2365 | vn_max_rate = ((vn_cfg & FUNC_MF_CFG_MAX_BW_MASK) >> |
2362 | FUNC_MF_CFG_MAX_BW_SHIFT) * 100; | 2366 | FUNC_MF_CFG_MAX_BW_SHIFT) * 100; |
2363 | } | 2367 | } |
2364 | |||
2365 | DP(NETIF_MSG_IFUP, | 2368 | DP(NETIF_MSG_IFUP, |
2366 | "func %d: vn_min_rate=%d vn_max_rate=%d vn_weight_sum=%d\n", | 2369 | "func %d: vn_min_rate %d vn_max_rate %d vn_weight_sum %d\n", |
2367 | func, vn_min_rate, vn_max_rate, bp->vn_weight_sum); | 2370 | func, vn_min_rate, vn_max_rate, bp->vn_weight_sum); |
2368 | 2371 | ||
2369 | memset(&m_rs_vn, 0, sizeof(struct rate_shaping_vars_per_vn)); | 2372 | memset(&m_rs_vn, 0, sizeof(struct rate_shaping_vars_per_vn)); |
@@ -2490,7 +2493,6 @@ static void bnx2x__link_status_update(struct bnx2x *bp) | |||
2490 | else | 2493 | else |
2491 | bnx2x_stats_handle(bp, STATS_EVENT_STOP); | 2494 | bnx2x_stats_handle(bp, STATS_EVENT_STOP); |
2492 | 2495 | ||
2493 | bp->mf_config = SHMEM_RD(bp, mf_cfg.func_mf_config[func].config); | ||
2494 | bnx2x_calc_vn_weight_sum(bp); | 2496 | bnx2x_calc_vn_weight_sum(bp); |
2495 | 2497 | ||
2496 | /* indicate link status */ | 2498 | /* indicate link status */ |
@@ -2634,10 +2636,7 @@ static void bnx2x_update_min_max(struct bnx2x *bp) | |||
2634 | 2636 | ||
2635 | static void bnx2x_dcc_event(struct bnx2x *bp, u32 dcc_event) | 2637 | static void bnx2x_dcc_event(struct bnx2x *bp, u32 dcc_event) |
2636 | { | 2638 | { |
2637 | int func = BP_FUNC(bp); | ||
2638 | |||
2639 | DP(BNX2X_MSG_MCP, "dcc_event 0x%x\n", dcc_event); | 2639 | DP(BNX2X_MSG_MCP, "dcc_event 0x%x\n", dcc_event); |
2640 | bp->mf_config = SHMEM_RD(bp, mf_cfg.func_mf_config[func].config); | ||
2641 | 2640 | ||
2642 | if (dcc_event & DRV_STATUS_DCC_DISABLE_ENABLE_PF) { | 2641 | if (dcc_event & DRV_STATUS_DCC_DISABLE_ENABLE_PF) { |
2643 | 2642 | ||
@@ -3067,6 +3066,8 @@ static inline void bnx2x_attn_int_deasserted3(struct bnx2x *bp, u32 attn) | |||
3067 | int func = BP_FUNC(bp); | 3066 | int func = BP_FUNC(bp); |
3068 | 3067 | ||
3069 | REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_12 + func*4, 0); | 3068 | REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_12 + func*4, 0); |
3069 | bp->mf_config = SHMEM_RD(bp, | ||
3070 | mf_cfg.func_mf_config[func].config); | ||
3070 | val = SHMEM_RD(bp, func_mb[func].drv_status); | 3071 | val = SHMEM_RD(bp, func_mb[func].drv_status); |
3071 | if (val & DRV_STATUS_DCC_EVENT_MASK) | 3072 | if (val & DRV_STATUS_DCC_EVENT_MASK) |
3072 | bnx2x_dcc_event(bp, | 3073 | bnx2x_dcc_event(bp, |
@@ -5559,20 +5560,18 @@ static void bnx2x_init_internal_func(struct bnx2x *bp) | |||
5559 | bp->link_vars.line_speed = SPEED_10000; | 5560 | bp->link_vars.line_speed = SPEED_10000; |
5560 | bnx2x_init_port_minmax(bp); | 5561 | bnx2x_init_port_minmax(bp); |
5561 | 5562 | ||
5563 | if (!BP_NOMCP(bp)) | ||
5564 | bp->mf_config = | ||
5565 | SHMEM_RD(bp, mf_cfg.func_mf_config[func].config); | ||
5562 | bnx2x_calc_vn_weight_sum(bp); | 5566 | bnx2x_calc_vn_weight_sum(bp); |
5563 | 5567 | ||
5564 | for (vn = VN_0; vn < E1HVN_MAX; vn++) | 5568 | for (vn = VN_0; vn < E1HVN_MAX; vn++) |
5565 | bnx2x_init_vn_minmax(bp, 2*vn + port); | 5569 | bnx2x_init_vn_minmax(bp, 2*vn + port); |
5566 | 5570 | ||
5567 | /* Enable rate shaping and fairness */ | 5571 | /* Enable rate shaping and fairness */ |
5568 | bp->cmng.flags.cmng_enables = | 5572 | bp->cmng.flags.cmng_enables |= |
5569 | CMNG_FLAGS_PER_PORT_RATE_SHAPING_VN; | 5573 | CMNG_FLAGS_PER_PORT_RATE_SHAPING_VN; |
5570 | if (bp->vn_weight_sum) | 5574 | |
5571 | bp->cmng.flags.cmng_enables |= | ||
5572 | CMNG_FLAGS_PER_PORT_FAIRNESS_VN; | ||
5573 | else | ||
5574 | DP(NETIF_MSG_IFUP, "All MIN values are zeroes" | ||
5575 | " fairness will be disabled\n"); | ||
5576 | } else { | 5575 | } else { |
5577 | /* rate shaping and fairness are disabled */ | 5576 | /* rate shaping and fairness are disabled */ |
5578 | DP(NETIF_MSG_IFUP, | 5577 | DP(NETIF_MSG_IFUP, |
@@ -9038,17 +9037,18 @@ static int bnx2x_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) | |||
9038 | if (netif_carrier_ok(dev)) { | 9037 | if (netif_carrier_ok(dev)) { |
9039 | cmd->speed = bp->link_vars.line_speed; | 9038 | cmd->speed = bp->link_vars.line_speed; |
9040 | cmd->duplex = bp->link_vars.duplex; | 9039 | cmd->duplex = bp->link_vars.duplex; |
9041 | } else { | 9040 | if (IS_E1HMF(bp)) { |
9042 | cmd->speed = bp->link_params.req_line_speed; | 9041 | u16 vn_max_rate; |
9043 | cmd->duplex = bp->link_params.req_duplex; | ||
9044 | } | ||
9045 | if (IS_E1HMF(bp)) { | ||
9046 | u16 vn_max_rate; | ||
9047 | 9042 | ||
9048 | vn_max_rate = ((bp->mf_config & FUNC_MF_CFG_MAX_BW_MASK) >> | 9043 | vn_max_rate = |
9044 | ((bp->mf_config & FUNC_MF_CFG_MAX_BW_MASK) >> | ||
9049 | FUNC_MF_CFG_MAX_BW_SHIFT) * 100; | 9045 | FUNC_MF_CFG_MAX_BW_SHIFT) * 100; |
9050 | if (vn_max_rate < cmd->speed) | 9046 | if (vn_max_rate < cmd->speed) |
9051 | cmd->speed = vn_max_rate; | 9047 | cmd->speed = vn_max_rate; |
9048 | } | ||
9049 | } else { | ||
9050 | cmd->speed = -1; | ||
9051 | cmd->duplex = -1; | ||
9052 | } | 9052 | } |
9053 | 9053 | ||
9054 | if (bp->link_params.switch_cfg == SWITCH_CFG_10G) { | 9054 | if (bp->link_params.switch_cfg == SWITCH_CFG_10G) { |
diff --git a/firmware/Makefile b/firmware/Makefile index a6c7c3e47e42..45c04660a44d 100644 --- a/firmware/Makefile +++ b/firmware/Makefile | |||
@@ -32,7 +32,7 @@ fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \ | |||
32 | adaptec/starfire_tx.bin | 32 | adaptec/starfire_tx.bin |
33 | fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin | 33 | fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin |
34 | fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw | 34 | fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw |
35 | fw-shipped-$(CONFIG_BNX2X) += bnx2x-e1-5.0.21.0.fw bnx2x-e1h-5.0.21.0.fw | 35 | fw-shipped-$(CONFIG_BNX2X) += bnx2x-e1-5.2.7.0.fw bnx2x-e1h-5.2.7.0.fw |
36 | fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-5.0.0.j3.fw \ | 36 | fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-5.0.0.j3.fw \ |
37 | bnx2/bnx2-rv2p-09-5.0.0.j3.fw \ | 37 | bnx2/bnx2-rv2p-09-5.0.0.j3.fw \ |
38 | bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw \ | 38 | bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw \ |
diff --git a/firmware/WHENCE b/firmware/WHENCE index c437e14f0b11..a07aede9fcc3 100644 --- a/firmware/WHENCE +++ b/firmware/WHENCE | |||
@@ -674,8 +674,8 @@ Found in hex form in kernel source. | |||
674 | 674 | ||
675 | Driver: bnx2x: Broadcom Everest | 675 | Driver: bnx2x: Broadcom Everest |
676 | 676 | ||
677 | File: bnx2x-e1-4.8.53.0.fw.ihex | 677 | File: bnx2x-e1-5.2.7.0.fw.ihex |
678 | File: bnx2x-e1h-4.8.53.0.fw.ihex | 678 | File: bnx2x-e1h-5.2.7.0.fw.ihex |
679 | 679 | ||
680 | License: | 680 | License: |
681 | Copyright (c) 2007-2009 Broadcom Corporation | 681 | Copyright (c) 2007-2009 Broadcom Corporation |