From 3b60e3b63c22dc15e36afffdf50cbf4207026cb8 Mon Sep 17 00:00:00 2001 From: Michael Chan Date: Mon, 4 Jun 2007 21:22:24 -0700 Subject: [PATCH] --- yaml --- r: 57418 b: refs/heads/master c: 641bdcd56c8bb2110a31da846b2752b11a644050 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/bnx2.c | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 7d217a20af42..3286edb27779 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7947b20ebae785ba25154aa1a9a00a98a22de75a +refs/heads/master: 641bdcd56c8bb2110a31da846b2752b11a644050 diff --git a/trunk/drivers/net/bnx2.c b/trunk/drivers/net/bnx2.c index 9789f05cbc99..9eba7a2635ad 100644 --- a/trunk/drivers/net/bnx2.c +++ b/trunk/drivers/net/bnx2.c @@ -1778,6 +1778,15 @@ bnx2_init_5709_context(struct bnx2 *bp) val = BNX2_CTX_COMMAND_ENABLED | BNX2_CTX_COMMAND_MEM_INIT | (1 << 12); val |= (BCM_PAGE_BITS - 8) << 16; REG_WR(bp, BNX2_CTX_COMMAND, val); + for (i = 0; i < 10; i++) { + val = REG_RD(bp, BNX2_CTX_COMMAND); + if (!(val & BNX2_CTX_COMMAND_MEM_INIT)) + break; + udelay(2); + } + if (val & BNX2_CTX_COMMAND_MEM_INIT) + return -EBUSY; + for (i = 0; i < bp->ctx_pages; i++) { int j; @@ -3696,9 +3705,11 @@ bnx2_init_chip(struct bnx2 *bp) /* Initialize context mapping and zero out the quick contexts. The * context block must have already been enabled. */ - if (CHIP_NUM(bp) == CHIP_NUM_5709) - bnx2_init_5709_context(bp); - else + if (CHIP_NUM(bp) == CHIP_NUM_5709) { + rc = bnx2_init_5709_context(bp); + if (rc) + return rc; + } else bnx2_init_context(bp); if ((rc = bnx2_init_cpus(bp)) != 0)