* [net PATCH 0/7] bnx2x: bug fixes for net @ 2012-09-10 15:48 Yuval Mintz 2012-09-10 15:48 ` [net PATCH 1/7] bnx2x: Avoid sending multiple statistics queries Yuval Mintz ` (6 more replies) 0 siblings, 7 replies; 10+ messages in thread From: Yuval Mintz @ 2012-09-10 15:48 UTC (permalink / raw) To: davem, netdev; +Cc: eilong, Yuval Mintz Hi Dave, This patch series contains various bug fixes for the bnx2x driver - about half of them are link related, while the other either add code missing in previous git commits or fix erroneous flows. Please consider applying this patch series to 'net'. Thanks, Yuval Mintz ^ permalink raw reply [flat|nested] 10+ messages in thread
* [net PATCH 1/7] bnx2x: Avoid sending multiple statistics queries 2012-09-10 15:48 [net PATCH 0/7] bnx2x: bug fixes for net Yuval Mintz @ 2012-09-10 15:48 ` Yuval Mintz 2012-09-10 15:48 ` [net PATCH 2/7] bnx2x: fix stats copying logic Yuval Mintz ` (5 subsequent siblings) 6 siblings, 0 replies; 10+ messages in thread From: Yuval Mintz @ 2012-09-10 15:48 UTC (permalink / raw) To: davem, netdev; +Cc: eilong, Dmitry Kravkov, Yuval Mintz From: Dmitry Kravkov <dmitry@broadcom.com> During traffic when DCB is enabled, it is possible for multiple instances of statistics queries to be sent to the chip - this may cause the FW to assert. This patch prevents the sending of an additional instance of statistics query while the previous query hasn't completed. Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c index 332db64..d848dc9 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c @@ -1151,9 +1151,11 @@ static void bnx2x_stats_update(struct bnx2x *bp) if (bp->port.pmf) bnx2x_hw_stats_update(bp); - if (bnx2x_storm_stats_update(bp) && (bp->stats_pending++ == 3)) { - BNX2X_ERR("storm stats were not updated for 3 times\n"); - bnx2x_panic(); + if (bnx2x_storm_stats_update(bp)) { + if (bp->stats_pending++ == 3) { + BNX2X_ERR("storm stats were not updated for 3 times\n"); + bnx2x_panic(); + } return; } -- 1.7.9.rc2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [net PATCH 2/7] bnx2x: fix stats copying logic 2012-09-10 15:48 [net PATCH 0/7] bnx2x: bug fixes for net Yuval Mintz 2012-09-10 15:48 ` [net PATCH 1/7] bnx2x: Avoid sending multiple statistics queries Yuval Mintz @ 2012-09-10 15:48 ` Yuval Mintz 2012-09-10 15:48 ` [net PATCH 3/7] bnx2x: prevent timeouts when using PFC Yuval Mintz ` (4 subsequent siblings) 6 siblings, 0 replies; 10+ messages in thread From: Yuval Mintz @ 2012-09-10 15:48 UTC (permalink / raw) To: davem, netdev; +Cc: eilong, Yuval Mintz FW needs the driver statistics for management. Current logic is broken in that the function that gathers the port statistics does not copy its own statistics to a place where the FW can use it. This patch causes every function that can pass statistics to the FW to do so. Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c index d848dc9..a1d0446 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c @@ -101,6 +101,11 @@ static void bnx2x_hw_stats_post(struct bnx2x *bp) if (CHIP_REV_IS_SLOW(bp)) return; + /* Update MCP's statistics if possible */ + if (bp->func_stx) + memcpy(bnx2x_sp(bp, func_stats), &bp->func_stats, + sizeof(bp->func_stats)); + /* loader */ if (bp->executer_idx) { int loader_idx = PMF_DMAE_C(bp); @@ -128,8 +133,6 @@ static void bnx2x_hw_stats_post(struct bnx2x *bp) } else if (bp->func_stx) { *stats_comp = 0; - memcpy(bnx2x_sp(bp, func_stats), &bp->func_stats, - sizeof(bp->func_stats)); bnx2x_post_dmae(bp, dmae, INIT_DMAE_C(bp)); } } -- 1.7.9.rc2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [net PATCH 3/7] bnx2x: prevent timeouts when using PFC 2012-09-10 15:48 [net PATCH 0/7] bnx2x: bug fixes for net Yuval Mintz 2012-09-10 15:48 ` [net PATCH 1/7] bnx2x: Avoid sending multiple statistics queries Yuval Mintz 2012-09-10 15:48 ` [net PATCH 2/7] bnx2x: fix stats copying logic Yuval Mintz @ 2012-09-10 15:48 ` Yuval Mintz 2012-09-11 5:49 ` Yaniv Rosner 2012-09-10 15:48 ` [net PATCH 4/7] bnx2x: display the correct duplex value Yuval Mintz ` (3 subsequent siblings) 6 siblings, 1 reply; 10+ messages in thread From: Yuval Mintz @ 2012-09-10 15:48 UTC (permalink / raw) To: davem, netdev; +Cc: eilong, Yaniv Rosner, Yuval Mintz From: Yaniv Rosner <yaniv.rosner@broadcom.com> Prevent updating the xmac PFC configuration when using a link speed slower than 10G -the umac block is responsible for 1G or slower connections, therefore it is possible the xmac block is reset when connection is slower. Signed-off-by: Yaniv Rosner <yaniv.rosner@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c index f4beb46..40a7b8d 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c @@ -2667,9 +2667,11 @@ int bnx2x_update_pfc(struct link_params *params, return bnx2x_status; DP(NETIF_MSG_LINK, "About to update PFC in BMAC\n"); - if (CHIP_IS_E3(bp)) - bnx2x_update_pfc_xmac(params, vars, 0); - else { + + if (CHIP_IS_E3(bp)) { + if (vars->mac_type == MAC_TYPE_XMAC) + bnx2x_update_pfc_xmac(params, vars, 0); + } else { val = REG_RD(bp, MISC_REG_RESET_REG_2); if ((val & (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << params->port)) -- 1.7.9.rc2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [net PATCH 3/7] bnx2x: prevent timeouts when using PFC 2012-09-10 15:48 ` [net PATCH 3/7] bnx2x: prevent timeouts when using PFC Yuval Mintz @ 2012-09-11 5:49 ` Yaniv Rosner 0 siblings, 0 replies; 10+ messages in thread From: Yaniv Rosner @ 2012-09-11 5:49 UTC (permalink / raw) To: Yuval Mintz, davem@davemloft.net, netdev@vger.kernel.org Cc: Eilon Greenstein, Yuval Mintz Ack -----Original Message----- From: Yuval Mintz [mailto:yuvalmin@broadcom.com] Sent: Monday, September 10, 2012 6:49 PM To: davem@davemloft.net; netdev@vger.kernel.org Cc: Eilon Greenstein; Yaniv Rosner; Yuval Mintz Subject: [net PATCH 3/7] bnx2x: prevent timeouts when using PFC From: Yaniv Rosner <yaniv.rosner@broadcom.com> Prevent updating the xmac PFC configuration when using a link speed slower than 10G -the umac block is responsible for 1G or slower connections, therefore it is possible the xmac block is reset when connection is slower. Signed-off-by: Yaniv Rosner <yaniv.rosner@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c index f4beb46..40a7b8d 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c @@ -2667,9 +2667,11 @@ int bnx2x_update_pfc(struct link_params *params, return bnx2x_status; DP(NETIF_MSG_LINK, "About to update PFC in BMAC\n"); - if (CHIP_IS_E3(bp)) - bnx2x_update_pfc_xmac(params, vars, 0); - else { + + if (CHIP_IS_E3(bp)) { + if (vars->mac_type == MAC_TYPE_XMAC) + bnx2x_update_pfc_xmac(params, vars, 0); + } else { val = REG_RD(bp, MISC_REG_RESET_REG_2); if ((val & (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << params->port)) -- 1.7.9.rc2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [net PATCH 4/7] bnx2x: display the correct duplex value 2012-09-10 15:48 [net PATCH 0/7] bnx2x: bug fixes for net Yuval Mintz ` (2 preceding siblings ...) 2012-09-10 15:48 ` [net PATCH 3/7] bnx2x: prevent timeouts when using PFC Yuval Mintz @ 2012-09-10 15:48 ` Yuval Mintz 2012-09-10 15:48 ` [net PATCH 5/7] bnx2x: correct advertisement of pause capabilities Yuval Mintz ` (2 subsequent siblings) 6 siblings, 0 replies; 10+ messages in thread From: Yuval Mintz @ 2012-09-10 15:48 UTC (permalink / raw) To: davem, netdev; +Cc: eilong, Yaniv Rosner, Yuval Mintz From: Yaniv Rosner <yaniv.rosner@broadcom.com> Prior to this fix, the driver reported the chip's active duplex state is always 'full', even if using half-duplex mode. Signed-off-by: Yaniv Rosner <yaniv.rosner@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c index 40a7b8d..b046beb 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c @@ -5434,7 +5434,7 @@ static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy, switch (speed_mask) { case GP_STATUS_10M: vars->line_speed = SPEED_10; - if (vars->duplex == DUPLEX_FULL) + if (is_duplex == DUPLEX_FULL) vars->link_status |= LINK_10TFD; else vars->link_status |= LINK_10THD; @@ -5442,7 +5442,7 @@ static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy, case GP_STATUS_100M: vars->line_speed = SPEED_100; - if (vars->duplex == DUPLEX_FULL) + if (is_duplex == DUPLEX_FULL) vars->link_status |= LINK_100TXFD; else vars->link_status |= LINK_100TXHD; @@ -5451,7 +5451,7 @@ static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy, case GP_STATUS_1G: case GP_STATUS_1G_KX: vars->line_speed = SPEED_1000; - if (vars->duplex == DUPLEX_FULL) + if (is_duplex == DUPLEX_FULL) vars->link_status |= LINK_1000TFD; else vars->link_status |= LINK_1000THD; @@ -5459,7 +5459,7 @@ static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy, case GP_STATUS_2_5G: vars->line_speed = SPEED_2500; - if (vars->duplex == DUPLEX_FULL) + if (is_duplex == DUPLEX_FULL) vars->link_status |= LINK_2500TFD; else vars->link_status |= LINK_2500THD; @@ -5533,6 +5533,7 @@ static int bnx2x_link_settings_status(struct bnx2x_phy *phy, if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS) { if (SINGLE_MEDIA_DIRECT(params)) { + vars->duplex = duplex; bnx2x_flow_ctrl_resolve(phy, params, vars, gp_status); if (phy->req_line_speed == SPEED_AUTO_NEG) bnx2x_xgxs_an_resolve(phy, params, vars, @@ -5627,6 +5628,7 @@ static int bnx2x_warpcore_read_status(struct bnx2x_phy *phy, LINK_STATUS_PARALLEL_DETECTION_USED; } bnx2x_ext_phy_resolve_fc(phy, params, vars); + vars->duplex = duplex; } } -- 1.7.9.rc2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [net PATCH 5/7] bnx2x: correct advertisement of pause capabilities 2012-09-10 15:48 [net PATCH 0/7] bnx2x: bug fixes for net Yuval Mintz ` (3 preceding siblings ...) 2012-09-10 15:48 ` [net PATCH 4/7] bnx2x: display the correct duplex value Yuval Mintz @ 2012-09-10 15:48 ` Yuval Mintz 2012-09-10 15:48 ` [net PATCH 6/7] bnx2x: fix self-test Yuval Mintz 2012-09-10 15:48 ` [net PATCH 7/7] bnx2x: Add missing afex code Yuval Mintz 6 siblings, 0 replies; 10+ messages in thread From: Yuval Mintz @ 2012-09-10 15:48 UTC (permalink / raw) To: davem, netdev; +Cc: eilong, Yaniv Rosner, Yuval Mintz From: Yaniv Rosner <yaniv.rosner@broadcom.com> This patch propagates users' requested flow-control into the link layer, which will later be used to advertise this flow-control for auto-negotiation (until now these values were ignored). Signed-off-by: Yaniv Rosner <yaniv.rosner@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> --- .../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c index c37a68d..bbf4cf0 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c @@ -1587,6 +1587,12 @@ static int bnx2x_set_pauseparam(struct net_device *dev, bp->link_params.req_flow_ctrl[cfg_idx] = BNX2X_FLOW_CTRL_AUTO; } + bp->link_params.req_fc_auto_adv = BNX2X_FLOW_CTRL_NONE; + if (epause->rx_pause) + bp->link_params.req_fc_auto_adv |= BNX2X_FLOW_CTRL_RX; + + if (epause->tx_pause) + bp->link_params.req_fc_auto_adv |= BNX2X_FLOW_CTRL_TX; } DP(BNX2X_MSG_ETHTOOL, -- 1.7.9.rc2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [net PATCH 6/7] bnx2x: fix self-test 2012-09-10 15:48 [net PATCH 0/7] bnx2x: bug fixes for net Yuval Mintz ` (4 preceding siblings ...) 2012-09-10 15:48 ` [net PATCH 5/7] bnx2x: correct advertisement of pause capabilities Yuval Mintz @ 2012-09-10 15:48 ` Yuval Mintz 2012-09-10 20:38 ` David Miller 2012-09-10 15:48 ` [net PATCH 7/7] bnx2x: Add missing afex code Yuval Mintz 6 siblings, 1 reply; 10+ messages in thread From: Yuval Mintz @ 2012-09-10 15:48 UTC (permalink / raw) To: davem, netdev; +Cc: eilong, Dmitry Kravkov, Yuval Mintz From: Dmitry Kravkov <dmitry@broadcom.com> Under traffic, there are several registers that when read (e.g., via 'ethtool -t') may cause the chip to stall. This patch corrects the registers read in such flows. Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h | 25 +++++++--------------- 1 files changed, 8 insertions(+), 17 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h index 3e4cff9..b926f58 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h @@ -401,11 +401,11 @@ static const struct reg_addr reg_addrs[] = { { 0x70000, 8, RI_ALL_ONLINE }, { 0x70020, 8184, RI_ALL_OFFLINE }, { 0x78000, 8192, RI_E3E3B0_OFFLINE }, - { 0x85000, 3, RI_ALL_ONLINE }, - { 0x8501c, 7, RI_ALL_ONLINE }, - { 0x85048, 1, RI_ALL_ONLINE }, - { 0x85200, 32, RI_ALL_ONLINE }, - { 0xb0000, 16384, RI_E1H_ONLINE }, + { 0x85000, 3, RI_ALL_OFFLINE }, + { 0x8501c, 7, RI_ALL_OFFLINE }, + { 0x85048, 1, RI_ALL_OFFLINE }, + { 0x85200, 32, RI_ALL_OFFLINE }, + { 0xb0000, 16384, RI_E1H_OFFLINE }, { 0xc1000, 7, RI_ALL_ONLINE }, { 0xc103c, 2, RI_E2E3E3B0_ONLINE }, { 0xc1800, 2, RI_ALL_ONLINE }, @@ -581,17 +581,12 @@ static const struct reg_addr reg_addrs[] = { { 0x140188, 3, RI_E1E1HE2E3_ONLINE }, { 0x140194, 13, RI_ALL_ONLINE }, { 0x140200, 6, RI_E1E1HE2E3_ONLINE }, - { 0x140220, 4, RI_E2E3_ONLINE }, - { 0x140240, 4, RI_E2E3_ONLINE }, { 0x140260, 4, RI_E2E3_ONLINE }, { 0x140280, 4, RI_E2E3_ONLINE }, - { 0x1402a0, 4, RI_E2E3_ONLINE }, - { 0x1402c0, 4, RI_E2E3_ONLINE }, { 0x1402e0, 2, RI_E2E3_ONLINE }, { 0x1402e8, 2, RI_E2E3E3B0_ONLINE }, { 0x1402f0, 9, RI_E2E3_ONLINE }, { 0x140314, 44, RI_E3B0_ONLINE }, - { 0x1403d0, 70, RI_E3B0_ONLINE }, { 0x144000, 4, RI_E1E1H_ONLINE }, { 0x148000, 4, RI_E1E1H_ONLINE }, { 0x14c000, 4, RI_E1E1H_ONLINE }, @@ -704,7 +699,6 @@ static const struct reg_addr reg_addrs[] = { { 0x180398, 1, RI_E2E3E3B0_ONLINE }, { 0x1803a0, 5, RI_E2E3E3B0_ONLINE }, { 0x1803b4, 2, RI_E3E3B0_ONLINE }, - { 0x180400, 1, RI_ALL_ONLINE }, { 0x180404, 255, RI_E1E1H_OFFLINE }, { 0x181000, 4, RI_ALL_ONLINE }, { 0x181010, 1020, RI_ALL_OFFLINE }, @@ -800,9 +794,9 @@ static const struct reg_addr reg_addrs[] = { { 0x1b905c, 1, RI_E3E3B0_ONLINE }, { 0x1b9064, 1, RI_E3B0_ONLINE }, { 0x1b9080, 10, RI_E3B0_ONLINE }, - { 0x1b9400, 14, RI_E2E3E3B0_ONLINE }, - { 0x1b943c, 19, RI_E2E3E3B0_ONLINE }, - { 0x1b9490, 10, RI_E2E3E3B0_ONLINE }, + { 0x1b9400, 14, RI_E2E3E3B0_OFFLINE }, + { 0x1b943c, 19, RI_E2E3E3B0_OFFLINE }, + { 0x1b9490, 10, RI_E2E3E3B0_OFFLINE }, { 0x1c0000, 2, RI_ALL_ONLINE }, { 0x200000, 65, RI_ALL_ONLINE }, { 0x20014c, 2, RI_E1HE2E3E3B0_ONLINE }, @@ -814,7 +808,6 @@ static const struct reg_addr reg_addrs[] = { { 0x200398, 1, RI_E2E3E3B0_ONLINE }, { 0x2003a0, 1, RI_E2E3E3B0_ONLINE }, { 0x2003a8, 2, RI_E2E3E3B0_ONLINE }, - { 0x200400, 1, RI_ALL_ONLINE }, { 0x200404, 255, RI_E1E1H_OFFLINE }, { 0x202000, 4, RI_ALL_ONLINE }, { 0x202010, 2044, RI_ALL_OFFLINE }, @@ -921,7 +914,6 @@ static const struct reg_addr reg_addrs[] = { { 0x280398, 1, RI_E2E3E3B0_ONLINE }, { 0x2803a0, 1, RI_E2E3E3B0_ONLINE }, { 0x2803a8, 2, RI_E2E3E3B0_ONLINE }, - { 0x280400, 1, RI_ALL_ONLINE }, { 0x280404, 255, RI_E1E1H_OFFLINE }, { 0x282000, 4, RI_ALL_ONLINE }, { 0x282010, 2044, RI_ALL_OFFLINE }, @@ -1031,7 +1023,6 @@ static const struct reg_addr reg_addrs[] = { { 0x300398, 1, RI_E2E3E3B0_ONLINE }, { 0x3003a0, 1, RI_E2E3E3B0_ONLINE }, { 0x3003a8, 2, RI_E2E3E3B0_ONLINE }, - { 0x300400, 1, RI_ALL_ONLINE }, { 0x300404, 255, RI_E1E1H_OFFLINE }, { 0x302000, 4, RI_ALL_ONLINE }, { 0x302010, 2044, RI_ALL_OFFLINE }, -- 1.7.9.rc2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [net PATCH 6/7] bnx2x: fix self-test 2012-09-10 15:48 ` [net PATCH 6/7] bnx2x: fix self-test Yuval Mintz @ 2012-09-10 20:38 ` David Miller 0 siblings, 0 replies; 10+ messages in thread From: David Miller @ 2012-09-10 20:38 UTC (permalink / raw) To: yuvalmin; +Cc: netdev, eilong, dmitry From: "Yuval Mintz" <yuvalmin@broadcom.com> Date: Mon, 10 Sep 2012 18:48:54 +0300 > From: Dmitry Kravkov <dmitry@broadcom.com> > > Under traffic, there are several registers that when read (e.g., via > 'ethtool -t') may cause the chip to stall. > This patch corrects the registers read in such flows. > > Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> > Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> > Signed-off-by: Eilon Greenstein <eilong@broadcom.com> You cannot change the size of layout of the register dump without updating the ethtool register dump version advertised by the driver. You're currently the register dump version to zero. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [net PATCH 7/7] bnx2x: Add missing afex code 2012-09-10 15:48 [net PATCH 0/7] bnx2x: bug fixes for net Yuval Mintz ` (5 preceding siblings ...) 2012-09-10 15:48 ` [net PATCH 6/7] bnx2x: fix self-test Yuval Mintz @ 2012-09-10 15:48 ` Yuval Mintz 6 siblings, 0 replies; 10+ messages in thread From: Yuval Mintz @ 2012-09-10 15:48 UTC (permalink / raw) To: davem, netdev; +Cc: eilong, Yuval Mintz, Barak Witkowski, Dmitry Kravkov Commit a334872224a67b614dc888460377862621f3dac7 added afex support but lacked several logical changes. This lack can cause afex to crash, and also have a slight effect on other flows (i.e., driver always assumes the Tx ring has less available buffers than what it actually has). This patch adds the missing segments, fixing said issues. Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Barak Witkowski <barak@broadcom.com> Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 11 +++++------ drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 21 ++++++++++++++++----- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h index 21b5532..dfd86a5 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h @@ -710,17 +710,15 @@ static inline u16 bnx2x_tx_avail(struct bnx2x *bp, prod = txdata->tx_bd_prod; cons = txdata->tx_bd_cons; - /* NUM_TX_RINGS = number of "next-page" entries - It will be used as a threshold */ - used = SUB_S16(prod, cons) + (s16)NUM_TX_RINGS; + used = SUB_S16(prod, cons); #ifdef BNX2X_STOP_ON_ERROR WARN_ON(used < 0); - WARN_ON(used > bp->tx_ring_size); - WARN_ON((bp->tx_ring_size - used) > MAX_TX_AVAIL); + WARN_ON(used > txdata->tx_ring_size); + WARN_ON((txdata->tx_ring_size - used) > MAX_TX_AVAIL); #endif - return (s16)(bp->tx_ring_size) - used; + return (s16)(txdata->tx_ring_size) - used; } static inline int bnx2x_tx_queue_has_work(struct bnx2x_fp_txdata *txdata) @@ -1088,6 +1086,7 @@ static inline void bnx2x_init_txdata(struct bnx2x *bp, txdata->txq_index = txq_index; txdata->tx_cons_sb = tx_cons_sb; txdata->parent_fp = fp; + txdata->tx_ring_size = IS_FCOE_FP(fp) ? MAX_TX_AVAIL : bp->tx_ring_size; DP(NETIF_MSG_IFUP, "created tx data cid %d, txq %d\n", txdata->cid, txdata->txq_index); diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index 2105498..211753e 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -7561,8 +7561,14 @@ int bnx2x_set_mac_one(struct bnx2x *bp, u8 *mac, } rc = bnx2x_config_vlan_mac(bp, &ramrod_param); - if (rc < 0) + + if (rc == -EEXIST) { + DP(BNX2X_MSG_SP, "Failed to schedule ADD operations: %d\n", rc); + /* do not treat adding same MAC as error */ + rc = 0; + } else if (rc < 0) BNX2X_ERR("%s MAC failed\n", (set ? "Set" : "Del")); + return rc; } @@ -10294,13 +10300,11 @@ static void __devinit bnx2x_get_fcoe_info(struct bnx2x *bp) dev_info.port_hw_config[port]. fcoe_wwn_node_name_lower); } else if (!IS_MF_SD(bp)) { - u32 cfg = MF_CFG_RD(bp, func_ext_config[func].func_cfg); - /* * Read the WWN info only if the FCoE feature is enabled for * this function. */ - if (cfg & MACP_FUNC_CFG_FLAGS_FCOE_OFFLOAD) + if (BNX2X_MF_EXT_PROTOCOL_FCOE(bp) && !CHIP_IS_E1x(bp)) bnx2x_get_ext_wwn_info(bp, func); } else if (IS_MF_FCOE_SD(bp)) @@ -11073,7 +11077,14 @@ static int bnx2x_set_uc_list(struct bnx2x *bp) netdev_for_each_uc_addr(ha, dev) { rc = bnx2x_set_mac_one(bp, bnx2x_uc_addr(ha), mac_obj, true, BNX2X_UC_LIST_MAC, &ramrod_flags); - if (rc < 0) { + if (rc == -EEXIST) { + DP(BNX2X_MSG_SP, + "Failed to schedule ADD operations: %d\n", rc); + /* do not treat adding same MAC as error */ + rc = 0; + + } else if (rc < 0) { + BNX2X_ERR("Failed to schedule ADD operations: %d\n", rc); return rc; -- 1.7.9.rc2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-09-11 5:49 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-09-10 15:48 [net PATCH 0/7] bnx2x: bug fixes for net Yuval Mintz 2012-09-10 15:48 ` [net PATCH 1/7] bnx2x: Avoid sending multiple statistics queries Yuval Mintz 2012-09-10 15:48 ` [net PATCH 2/7] bnx2x: fix stats copying logic Yuval Mintz 2012-09-10 15:48 ` [net PATCH 3/7] bnx2x: prevent timeouts when using PFC Yuval Mintz 2012-09-11 5:49 ` Yaniv Rosner 2012-09-10 15:48 ` [net PATCH 4/7] bnx2x: display the correct duplex value Yuval Mintz 2012-09-10 15:48 ` [net PATCH 5/7] bnx2x: correct advertisement of pause capabilities Yuval Mintz 2012-09-10 15:48 ` [net PATCH 6/7] bnx2x: fix self-test Yuval Mintz 2012-09-10 20:38 ` David Miller 2012-09-10 15:48 ` [net PATCH 7/7] bnx2x: Add missing afex code Yuval Mintz
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).