fcport->loop_id = FC_NO_LOOP_ID;
        qla2x00_set_fcport_state(fcport, FCS_UNCONFIGURED);
        fcport->supported_classes = FC_COS_UNSPECIFIED;
-       fcport->scan_state = QLA_FCPORT_SCAN_NONE;
 
        return fcport;
 }
                        }
                }
 
+#define QLA_FCPORT_SCAN                1
+#define QLA_FCPORT_FOUND       2
+
+               list_for_each_entry(fcport, &vha->vp_fcports, list) {
+                       fcport->scan_state = QLA_FCPORT_SCAN;
+               }
+
                rval = qla2x00_find_all_fabric_devs(vha, &new_fcports);
                if (rval != QLA_SUCCESS)
                        break;
                        if ((fcport->flags & FCF_FABRIC_DEVICE) == 0)
                                continue;
 
-                       if (fcport->scan_state != QLA_FCPORT_SCAN_FOUND &&
+                       if (fcport->scan_state == QLA_FCPORT_SCAN &&
                            atomic_read(&fcport->state) == FCS_ONLINE) {
                                qla2x00_mark_device_lost(vha, fcport,
                                    ql2xplogiabsentdevice, 0);
                                            fcport->d_id.b.al_pa);
                                        fcport->loop_id = FC_NO_LOOP_ID;
                                }
-                               continue;
                        }
-                       fcport->scan_state = QLA_FCPORT_SCAN_NONE;
                }
 
                /* Starting free loop ID. */
                            WWN_SIZE))
                                continue;
 
-                       fcport->scan_state = QLA_FCPORT_SCAN_FOUND;
+                       fcport->scan_state = QLA_FCPORT_FOUND;
 
                        found++;