struct zfcp_port *port;
 
        read_lock_irqsave(&zfcp_data.config_lock, flags);
-       list_for_each_entry(port, &fsf_req->adapter->port_list_head, list) {
-               if (!(atomic_read(&port->status) & ZFCP_STATUS_PORT_PHYS_OPEN))
-                       /* Try to connect to unused ports anyway. */
-                       zfcp_erp_port_reopen(port,
-                                            ZFCP_STATUS_COMMON_ERP_FAILED,
-                                            "fcirsc1", fsf_req);
-               else if ((port->d_id & range) == (elem->nport_did & range))
-                       /* Check connection status for connected ports */
+       list_for_each_entry(port, &fsf_req->adapter->port_list_head, list)
+               if ((port->d_id & range) == (elem->nport_did & range))
                        zfcp_test_link(port);
-       }
+
        read_unlock_irqrestore(&zfcp_data.config_lock, flags);
 }
 
        if (!port->wwnn)
                port->wwnn = ls_adisc->wwnn;
 
-       if (port->wwpn != ls_adisc->wwpn)
-               zfcp_erp_port_reopen(port, 0, "fcadh_2", NULL);
+       if ((port->wwpn != ls_adisc->wwpn) ||
+           !(atomic_read(&port->status) & ZFCP_STATUS_COMMON_OPEN))
+               zfcp_erp_port_reopen(port, ZFCP_STATUS_COMMON_ERP_FAILED,
+                                    "fcadh_2", NULL);
 
  out:
        zfcp_port_put(port);
 
        struct fsf_qtcb_bottom_support *bottom;
        int ret = -EIO;
 
-       if (unlikely(!(atomic_read(&els->port->status) &
-                      ZFCP_STATUS_COMMON_UNBLOCKED)))
-               return -EBUSY;
-
        spin_lock_bh(&adapter->req_q_lock);
        if (zfcp_fsf_req_sbal_get(adapter))
                goto out;