|
@@ -1718,6 +1718,22 @@ static int bnx2x_nvram_write(struct bnx2x *bp, u32 offset, u8 *data_buf,
|
|
offset += sizeof(u32);
|
|
offset += sizeof(u32);
|
|
data_buf += sizeof(u32);
|
|
data_buf += sizeof(u32);
|
|
written_so_far += sizeof(u32);
|
|
written_so_far += sizeof(u32);
|
|
|
|
+
|
|
|
|
+ /* At end of each 4Kb page, release nvram lock to allow MFW
|
|
|
|
+ * chance to take it for its own use.
|
|
|
|
+ */
|
|
|
|
+ if ((cmd_flags & MCPR_NVM_COMMAND_LAST) &&
|
|
|
|
+ (written_so_far < buf_size)) {
|
|
|
|
+ DP(BNX2X_MSG_ETHTOOL | BNX2X_MSG_NVM,
|
|
|
|
+ "Releasing NVM lock after offset 0x%x\n",
|
|
|
|
+ (u32)(offset - sizeof(u32)));
|
|
|
|
+ bnx2x_release_nvram_lock(bp);
|
|
|
|
+ usleep_range(1000, 2000);
|
|
|
|
+ rc = bnx2x_acquire_nvram_lock(bp);
|
|
|
|
+ if (rc)
|
|
|
|
+ return rc;
|
|
|
|
+ }
|
|
|
|
+
|
|
cmd_flags = 0;
|
|
cmd_flags = 0;
|
|
}
|
|
}
|
|
|
|
|