Skip to content

Commit

Permalink
[SCSI] libfc: Pass lport in exch_mgr_reset
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Abhijeet Joglekar authored and James Bottomley committed Mar 6, 2009
1 parent 33dd6f9 commit 1f6ff36
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 7 deletions.
3 changes: 2 additions & 1 deletion drivers/scsi/libfc/fc_exch.c
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions drivers/scsi/libfc/fc_lport.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;

Expand Down
4 changes: 2 additions & 2 deletions drivers/scsi/libfc/fc_rport.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
4 changes: 2 additions & 2 deletions include/scsi/libfc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 1f6ff36

Please sign in to comment.