diff options
Diffstat (limited to 'drivers/net/bnx2x_main.c')
-rw-r--r-- | drivers/net/bnx2x_main.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c index 6c67be679764..177cb467ba90 100644 --- a/drivers/net/bnx2x_main.c +++ b/drivers/net/bnx2x_main.c | |||
@@ -9691,8 +9691,15 @@ static void bnx2x_self_test(struct net_device *dev, | |||
9691 | etest->flags &= ~ETH_TEST_FL_OFFLINE; | 9691 | etest->flags &= ~ETH_TEST_FL_OFFLINE; |
9692 | 9692 | ||
9693 | if (etest->flags & ETH_TEST_FL_OFFLINE) { | 9693 | if (etest->flags & ETH_TEST_FL_OFFLINE) { |
9694 | int port = BP_PORT(bp); | ||
9695 | u32 val; | ||
9694 | u8 link_up; | 9696 | u8 link_up; |
9695 | 9697 | ||
9698 | /* save current value of input enable for TX port IF */ | ||
9699 | val = REG_RD(bp, NIG_REG_EGRESS_UMP0_IN_EN + port*4); | ||
9700 | /* disable input for TX port IF */ | ||
9701 | REG_WR(bp, NIG_REG_EGRESS_UMP0_IN_EN + port*4, 0); | ||
9702 | |||
9696 | link_up = bp->link_vars.link_up; | 9703 | link_up = bp->link_vars.link_up; |
9697 | bnx2x_nic_unload(bp, UNLOAD_NORMAL); | 9704 | bnx2x_nic_unload(bp, UNLOAD_NORMAL); |
9698 | bnx2x_nic_load(bp, LOAD_DIAG); | 9705 | bnx2x_nic_load(bp, LOAD_DIAG); |
@@ -9712,6 +9719,10 @@ static void bnx2x_self_test(struct net_device *dev, | |||
9712 | etest->flags |= ETH_TEST_FL_FAILED; | 9719 | etest->flags |= ETH_TEST_FL_FAILED; |
9713 | 9720 | ||
9714 | bnx2x_nic_unload(bp, UNLOAD_NORMAL); | 9721 | bnx2x_nic_unload(bp, UNLOAD_NORMAL); |
9722 | |||
9723 | /* restore input for TX port IF */ | ||
9724 | REG_WR(bp, NIG_REG_EGRESS_UMP0_IN_EN + port*4, val); | ||
9725 | |||
9715 | bnx2x_nic_load(bp, LOAD_NORMAL); | 9726 | bnx2x_nic_load(bp, LOAD_NORMAL); |
9716 | /* wait until link state is restored */ | 9727 | /* wait until link state is restored */ |
9717 | bnx2x_wait_for_link(bp, link_up); | 9728 | bnx2x_wait_for_link(bp, link_up); |