{
        int rc = -EINVAL;
        struct fc_lport *lport;
-       struct qedf_ctx *qedf;
+       struct qedf_ctx *qedf = NULL;
        struct Scsi_Host *host;
        bool is_vf = false;
        struct qed_ll2_params params;
 
                /* Initialize qedf_ctx */
                qedf = lport_priv(lport);
+               set_bit(QEDF_PROBING, &qedf->flags);
                qedf->lport = lport;
                qedf->ctlr.lp = lport;
                qedf->pdev = pdev;
        } else {
                /* Init pointers during recovery */
                qedf = pci_get_drvdata(pdev);
+               set_bit(QEDF_PROBING, &qedf->flags);
                lport = qedf->lport;
        }
 
+       QEDF_INFO(&qedf->dbg_ctx, QEDF_LOG_DISC, "Probe started.\n");
+
        host = lport->host;
 
        /* Allocate mempool for qedf_io_work structs */
        else
                fc_fabric_login(lport);
 
+       QEDF_INFO(&qedf->dbg_ctx, QEDF_LOG_DISC, "Probe done.\n");
+
+       clear_bit(QEDF_PROBING, &qedf->flags);
+
        /* All good */
        return 0;
 
 err1:
        scsi_host_put(lport->host);
 err0:
+       if (qedf) {
+               QEDF_INFO(&qedf->dbg_ctx, QEDF_LOG_DISC, "Probe done.\n");
+
+               clear_bit(QEDF_PROBING, &qedf->flags);
+       }
        return rc;
 }
 
 {
        struct qedf_ctx *qedf = dev;
        struct qed_mfw_tlv_fcoe *fcoe = data;
-       struct fc_lport *lport = qedf->lport;
-       struct Scsi_Host *host = lport->host;
-       struct fc_host_attrs *fc_host = shost_to_fc_host(host);
+       struct fc_lport *lport;
+       struct Scsi_Host *host;
+       struct fc_host_attrs *fc_host;
        struct fc_host_statistics *hst;
 
+       if (!qedf) {
+               QEDF_ERR(NULL, "qedf is null.\n");
+               return;
+       }
+
+       if (test_bit(QEDF_PROBING, &qedf->flags)) {
+               QEDF_ERR(&qedf->dbg_ctx, "Function is still probing.\n");
+               return;
+       }
+
+       lport = qedf->lport;
+       host = lport->host;
+       fc_host = shost_to_fc_host(host);
+
        /* Force a refresh of the fc_host stats including offload stats */
        hst = qedf_fc_get_host_stats(host);