int bnx2x_vf_flr_clnup_epilog(struct bnx2x *bp, u8 abs_vfid)
 {
-       /* Wait 100ms */
-       msleep(100);
-
        /* Verify no pending pci transactions */
        if (bnx2x_vf_is_pcie_pending(bp, abs_vfid))
                BNX2X_ERR("PCIE Transactions still pending\n");
 
        DP(BNX2X_MSG_IOV, "num of vfs: %d\n", (bp)->vfdb->sriov.nr_virtfn);
 
+       /* let FLR complete ... */
+       msleep(100);
+
        /* initialize vf database */
        for_each_vf(bp, vfid) {
                struct bnx2x_virtf *vf = BP_VF(bp, vfid);
                   vf->abs_vfid, vf->state);
                return -EINVAL;
        }
+
+       /* let FLR complete ... */
+       msleep(100);
+
        /* FLR cleanup epilogue */
        if (bnx2x_vf_flr_clnup_epilog(bp, vf->abs_vfid))
                return -EBUSY;