diff options
Diffstat (limited to 'drivers/net/bnx2.c')
-rw-r--r-- | drivers/net/bnx2.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 9789f05cbc99..9eba7a2635ad 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
@@ -1778,6 +1778,15 @@ bnx2_init_5709_context(struct bnx2 *bp) | |||
1778 | val = BNX2_CTX_COMMAND_ENABLED | BNX2_CTX_COMMAND_MEM_INIT | (1 << 12); | 1778 | val = BNX2_CTX_COMMAND_ENABLED | BNX2_CTX_COMMAND_MEM_INIT | (1 << 12); |
1779 | val |= (BCM_PAGE_BITS - 8) << 16; | 1779 | val |= (BCM_PAGE_BITS - 8) << 16; |
1780 | REG_WR(bp, BNX2_CTX_COMMAND, val); | 1780 | REG_WR(bp, BNX2_CTX_COMMAND, val); |
1781 | for (i = 0; i < 10; i++) { | ||
1782 | val = REG_RD(bp, BNX2_CTX_COMMAND); | ||
1783 | if (!(val & BNX2_CTX_COMMAND_MEM_INIT)) | ||
1784 | break; | ||
1785 | udelay(2); | ||
1786 | } | ||
1787 | if (val & BNX2_CTX_COMMAND_MEM_INIT) | ||
1788 | return -EBUSY; | ||
1789 | |||
1781 | for (i = 0; i < bp->ctx_pages; i++) { | 1790 | for (i = 0; i < bp->ctx_pages; i++) { |
1782 | int j; | 1791 | int j; |
1783 | 1792 | ||
@@ -3696,9 +3705,11 @@ bnx2_init_chip(struct bnx2 *bp) | |||
3696 | 3705 | ||
3697 | /* Initialize context mapping and zero out the quick contexts. The | 3706 | /* Initialize context mapping and zero out the quick contexts. The |
3698 | * context block must have already been enabled. */ | 3707 | * context block must have already been enabled. */ |
3699 | if (CHIP_NUM(bp) == CHIP_NUM_5709) | 3708 | if (CHIP_NUM(bp) == CHIP_NUM_5709) { |
3700 | bnx2_init_5709_context(bp); | 3709 | rc = bnx2_init_5709_context(bp); |
3701 | else | 3710 | if (rc) |
3711 | return rc; | ||
3712 | } else | ||
3702 | bnx2_init_context(bp); | 3713 | bnx2_init_context(bp); |
3703 | 3714 | ||
3704 | if ((rc = bnx2_init_cpus(bp)) != 0) | 3715 | if ((rc = bnx2_init_cpus(bp)) != 0) |