[SCSI] libfc: Pass lport in exch_mgr_reset
authorAbhijeet Joglekar <abjoglek@cisco.com>
Fri, 27 Feb 2009 18:54:35 +0000 (10:54 -0800)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Fri, 6 Mar 2009 21:35:47 +0000 (15:35 -0600)
fc_exch_mgr structure is private to fc_exch.c. To export exch_mgr_reset to
transport, transport needs access to the exch manager. Change
exch_mgr_reset to use lport param which is the shared structure between
libFC and transport.

Alternatively, fc_exch_mgr definition can be moved to libfc.h so that lport
can be accessed from mp*.

Signed-off-by: Abhijeet Joglekar <abjoglek@cisco.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/libfc/fc_exch.c
drivers/scsi/libfc/fc_lport.c
drivers/scsi/libfc/fc_rport.c
include/scsi/libfc.h

index 66db08a5f27ffcd7399c2f34ef9324b47daec3f5..a09416fd843c0c28867ddf0ade408d914947dd22 100644 (file)
@@ -1480,10 +1480,11 @@ static void fc_exch_reset(struct fc_exch *ep)
  * If sid is non-zero, reset only exchanges we source from that FID.
  * If did is non-zero, reset only exchanges destined to that FID.
  */
-void fc_exch_mgr_reset(struct fc_exch_mgr *mp, u32 sid, u32 did)
+void fc_exch_mgr_reset(struct fc_lport *lp, u32 sid, u32 did)
 {
        struct fc_exch *ep;
        struct fc_exch *next;
+       struct fc_exch_mgr *mp = lp->emp;
 
        spin_lock_bh(&mp->em_lock);
 restart:
index 0b9bdb1fb807d8f2b0e7eee7a63f0dc6f5a2ee80..5db223ce3b25c071dde65d0b65d42607a1e17c58 100644 (file)
@@ -663,7 +663,7 @@ int fc_lport_destroy(struct fc_lport *lport)
 {
        lport->tt.frame_send = fc_frame_drop;
        lport->tt.fcp_abort_io(lport);
-       lport->tt.exch_mgr_reset(lport->emp, 0, 0);
+       lport->tt.exch_mgr_reset(lport, 0, 0);
        return 0;
 }
 EXPORT_SYMBOL(fc_lport_destroy);
@@ -973,7 +973,7 @@ static void fc_lport_enter_reset(struct fc_lport *lport)
 
        lport->tt.disc_stop(lport);
 
-       lport->tt.exch_mgr_reset(lport->emp, 0, 0);
+       lport->tt.exch_mgr_reset(lport, 0, 0);
        fc_host_fabric_name(lport->host) = 0;
        fc_host_port_id(lport->host) = 0;
 
index e780d8caf70e82f431bbe3241caf60c1544accd8..dec7bae0e56d5f8b9d8fa05fd80293ab7c524e2a 100644 (file)
@@ -1285,7 +1285,7 @@ void fc_rport_terminate_io(struct fc_rport *rport)
        struct fc_rport_libfc_priv *rdata = rport->dd_data;
        struct fc_lport *lport = rdata->local_port;
 
-       lport->tt.exch_mgr_reset(lport->emp, 0, rport->port_id);
-       lport->tt.exch_mgr_reset(lport->emp, rport->port_id, 0);
+       lport->tt.exch_mgr_reset(lport, 0, rport->port_id);
+       lport->tt.exch_mgr_reset(lport, rport->port_id, 0);
 }
 EXPORT_SYMBOL(fc_rport_terminate_io);
index 9f2876397ddaed6c435ef1bd7da4bbfb5a17db79..042f4ade73d77ef86c0092bbecc6735d77ec32c5 100644 (file)
@@ -472,7 +472,7 @@ struct libfc_function_template {
         * If s_id is non-zero, reset only exchanges originating from that FID.
         * If d_id is non-zero, reset only exchanges sending to that FID.
         */
-       void (*exch_mgr_reset)(struct fc_exch_mgr *,
+       void (*exch_mgr_reset)(struct fc_lport *,
                               u32 s_id, u32 d_id);
 
        void (*rport_flush_queue)(void);
@@ -916,7 +916,7 @@ struct fc_seq *fc_seq_start_next(struct fc_seq *sp);
  * If s_id is non-zero, reset only exchanges originating from that FID.
  * If d_id is non-zero, reset only exchanges sending to that FID.
  */
-void fc_exch_mgr_reset(struct fc_exch_mgr *, u32 s_id, u32 d_id);
+void fc_exch_mgr_reset(struct fc_lport *, u32 s_id, u32 d_id);
 
 /*
  * Functions for fc_functions_template