提交 061bc702 编写于 作者: E Eilon Greenstein 提交者: David S. Miller

bnx2x: Do not call load/unload functionality from DCC

There is really no need to clear the MAC or the FW filtering rules - it was
added for completion, but caused race conditions with load/unload. Removing this
redundant code
Signed-off-by: NEilon Greenstein <eilong@broadcom.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 c4ff7cbf
...@@ -2565,21 +2565,12 @@ static void bnx2x_set_rx_mode(struct net_device *dev); ...@@ -2565,21 +2565,12 @@ static void bnx2x_set_rx_mode(struct net_device *dev);
static void bnx2x_e1h_disable(struct bnx2x *bp) static void bnx2x_e1h_disable(struct bnx2x *bp)
{ {
int port = BP_PORT(bp); int port = BP_PORT(bp);
int i;
bp->rx_mode = BNX2X_RX_MODE_NONE;
bnx2x_set_storm_rx_mode(bp);
netif_tx_disable(bp->dev); netif_tx_disable(bp->dev);
bp->dev->trans_start = jiffies; /* prevent tx timeout */ bp->dev->trans_start = jiffies; /* prevent tx timeout */
REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 0); REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 0);
bnx2x_set_eth_mac_addr_e1h(bp, 0);
for (i = 0; i < MC_HASH_SIZE; i++)
REG_WR(bp, MC_HASH_OFFSET(bp, i), 0);
netif_carrier_off(bp->dev); netif_carrier_off(bp->dev);
} }
...@@ -2589,13 +2580,13 @@ static void bnx2x_e1h_enable(struct bnx2x *bp) ...@@ -2589,13 +2580,13 @@ static void bnx2x_e1h_enable(struct bnx2x *bp)
REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 1); REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 1);
bnx2x_set_eth_mac_addr_e1h(bp, 1);
/* Tx queue should be only reenabled */ /* Tx queue should be only reenabled */
netif_tx_wake_all_queues(bp->dev); netif_tx_wake_all_queues(bp->dev);
/* Initialize the receive filter. */ /*
bnx2x_set_rx_mode(bp->dev); * Should not call netif_carrier_on since it will be called if the link
* is up when checking for link state
*/
} }
static void bnx2x_update_min_max(struct bnx2x *bp) static void bnx2x_update_min_max(struct bnx2x *bp)
...@@ -10538,7 +10529,7 @@ static void bnx2x_self_test(struct net_device *dev, ...@@ -10538,7 +10529,7 @@ static void bnx2x_self_test(struct net_device *dev,
/* disable input for TX port IF */ /* disable input for TX port IF */
REG_WR(bp, NIG_REG_EGRESS_UMP0_IN_EN + port*4, 0); REG_WR(bp, NIG_REG_EGRESS_UMP0_IN_EN + port*4, 0);
link_up = bp->link_vars.link_up; link_up = (bnx2x_link_test(bp) == 0);
bnx2x_nic_unload(bp, UNLOAD_NORMAL); bnx2x_nic_unload(bp, UNLOAD_NORMAL);
bnx2x_nic_load(bp, LOAD_DIAG); bnx2x_nic_load(bp, LOAD_DIAG);
/* wait until link state is restored */ /* wait until link state is restored */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册