static void fc_rport_work(struct work_struct *work)
 {
+       u32 port_id;
        struct fc_rport_libfc_priv *rdata =
                container_of(work, struct fc_rport_libfc_priv, event_work);
        enum fc_rport_event event;
                        rport_ops->event_callback(lport, rport, event);
                if (trans_state == FC_PORTSTATE_ROGUE)
                        put_device(&rport->dev);
-               else
+               else {
+                       port_id = rport->port_id;
                        fc_remote_port_delete(rport);
+                       lport->tt.exch_mgr_reset(lport, 0, port_id);
+                       lport->tt.exch_mgr_reset(lport, port_id, 0);
+               }
        } else
                mutex_unlock(&rdata->rp_mutex);
 }