bnx2x: Minimize lock time
authorEilon Greenstein <eilong@broadcom.com>
Mon, 25 Aug 2008 22:22:46 +0000 (15:22 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Aug 2008 22:22:46 +0000 (15:22 -0700)
After iSCSI boot, the HW lock should only protect the flag so only the
first function will reset the chip and not then entire chip reset
process

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bnx2x_main.c

index 2e207b8eea97ae5ec470aef8a1afb19f16b1ed05..9972d0c02677743b9296b64be89f5608f425c9b3 100644 (file)
@@ -6824,6 +6824,10 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp)
                 */
                bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
                val = REG_RD(bp, DORQ_REG_NORM_CID_OFST);
+               if (val == 0x7)
+                       REG_WR(bp, DORQ_REG_NORM_CID_OFST, 0);
+               bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
+
                if (val == 0x7) {
                        u32 reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS;
                        /* save our func */
@@ -6901,7 +6905,6 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp)
                               (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) &
                                DRV_MSG_SEQ_NUMBER_MASK);
                }
-               bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
        }
 }