return -EBUSY;
        }
 
+       /* Update driver data for On-Chip MFW dump. */
+       if (IS_PF(bp))
+               bnx2x_update_mfw_dump(bp);
+
        /* If PMF - send ADMIN DCBX msg to MFW to initiate DCBX FSM */
        if (bp->port.pmf && (bp->state != BNX2X_STATE_DIAG))
                bnx2x_dcbx_init(bp, false);
 
        CURR_CFG_MET_VENDOR_SPEC = 2,/* e.g. Option ROM, NPAR, O/S Cfg Utils */
 };
 
+struct mdump_driver_info {
+       u32 epoc;
+       u32 drv_ver;
+       u32 fw_ver;
+
+       u32 valid_dump;
+       #define FIRST_DUMP_VALID        (1 << 0)
+       #define SECOND_DUMP_VALID       (1 << 1)
+
+       u32 flags;
+       #define ENABLE_ALL_TRIGGERS     (0x7fffffff)
+       #define TRIGGER_MDUMP_ONCE      (1 << 31)
+};
+
 struct ncsi_oem_data {
        u32 driver_version[4];
        struct ncsi_oem_fcoe_features ncsi_oem_fcoe_features;
        #define OS_DRIVER_STATE_LOADING         1 /* transition state */
        #define OS_DRIVER_STATE_DISABLED        2 /* installed but disabled */
        #define OS_DRIVER_STATE_ACTIVE          3 /* installed and active */
+
+       /* mini dump driver info */
+       struct mdump_driver_info drv_info;                      /* 0x218 */
 };
 
 
 
           ethver, iscsiver, fcoever);
 }
 
+void bnx2x_update_mfw_dump(struct bnx2x *bp)
+{
+       struct timeval epoc;
+       u32 drv_ver;
+       u32 valid_dump;
+
+       if (!SHMEM2_HAS(bp, drv_info))
+               return;
+
+       /* Update Driver load time */
+       do_gettimeofday(&epoc);
+       SHMEM2_WR(bp, drv_info.epoc, epoc.tv_sec);
+
+       drv_ver = bnx2x_update_mng_version_utility(DRV_MODULE_VERSION, true);
+       SHMEM2_WR(bp, drv_info.drv_ver, drv_ver);
+
+       SHMEM2_WR(bp, drv_info.fw_ver, REG_RD(bp, XSEM_REG_PRAM));
+
+       /* Check & notify On-Chip dump. */
+       valid_dump = SHMEM2_RD(bp, drv_info.valid_dump);
+
+       if (valid_dump & FIRST_DUMP_VALID)
+               DP(NETIF_MSG_IFUP, "A valid On-Chip MFW dump found on 1st partition\n");
+
+       if (valid_dump & SECOND_DUMP_VALID)
+               DP(NETIF_MSG_IFUP, "A valid On-Chip MFW dump found on 2nd partition\n");
+}
+
 static void bnx2x_oem_event(struct bnx2x *bp, u32 event)
 {
        u32 cmd_ok, cmd_fail;