summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2016-10-18 10:01:49 +0200
committerMartin K. Petersen <martin.petersen@oracle.com>2016-11-08 17:29:56 -0500
commit0ebaed17febadeda0f4da21da2c0f295f46348a4 (patch)
tree2d68fa94b110f23a6d040e10b5d87bda6e857d3c
parent0cac937da525ae3aa9f4b82c6ca129d16bb321fe (diff)
downloadtalos-obmc-linux-0ebaed17febadeda0f4da21da2c0f295f46348a4.tar.gz
talos-obmc-linux-0ebaed17febadeda0f4da21da2c0f295f46348a4.zip
scsi: libfc: Replace ->seq_exch_abort callback with function call
The ->seq_exch_abort callback only ever had one implementation, so we can as well call it directly and drop the callback. Signed-off-by: Hannes Reinecke <hare@suse.com> Acked-by: Johannes Thumshirn <jth@kernel.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/libfc/fc_exch.c13
-rw-r--r--drivers/scsi/libfc/fc_fcp.c4
-rw-r--r--include/scsi/libfc.h14
3 files changed, 11 insertions, 20 deletions
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
index ee34cc6aded7..fffb9a3162e2 100644
--- a/drivers/scsi/libfc/fc_exch.c
+++ b/drivers/scsi/libfc/fc_exch.c
@@ -629,6 +629,13 @@ static void fc_seq_set_resp(struct fc_seq *sp,
* @ep: The exchange to be aborted
* @timer_msec: The period of time to wait before aborting
*
+ * Abort an exchange and sequence. Generally called because of a
+ * exchange timeout or an abort from the upper layer.
+ *
+ * A timer_msec can be specified for abort timeout, if non-zero
+ * timer_msec value is specified then exchange resp handler
+ * will be called with timeout error if no response to abort.
+ *
* Locking notes: Called with exch lock held
*
* Return value: 0 on success else error code
@@ -692,8 +699,7 @@ static int fc_exch_abort_locked(struct fc_exch *ep,
*
* Return value: 0 on success else error code
*/
-static int fc_seq_exch_abort(const struct fc_seq *req_sp,
- unsigned int timer_msec)
+int fc_seq_exch_abort(const struct fc_seq *req_sp, unsigned int timer_msec)
{
struct fc_exch *ep;
int error;
@@ -2654,9 +2660,6 @@ int fc_exch_init(struct fc_lport *lport)
if (!lport->tt.exch_mgr_reset)
lport->tt.exch_mgr_reset = fc_exch_mgr_reset;
- if (!lport->tt.seq_exch_abort)
- lport->tt.seq_exch_abort = fc_seq_exch_abort;
-
if (!lport->tt.seq_assign)
lport->tt.seq_assign = fc_seq_assign;
diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c
index daad70ff8c8f..2bb3f9f74ad2 100644
--- a/drivers/scsi/libfc/fc_fcp.c
+++ b/drivers/scsi/libfc/fc_fcp.c
@@ -287,9 +287,9 @@ static int fc_fcp_send_abort(struct fc_fcp_pkt *fsp)
put_cpu();
fsp->state |= FC_SRB_ABORT_PENDING;
- rc = fsp->lp->tt.seq_exch_abort(fsp->seq_ptr, 0);
+ rc = fc_seq_exch_abort(fsp->seq_ptr, 0);
/*
- * ->seq_exch_abort() might return -ENXIO if
+ * fc_seq_exch_abort() might return -ENXIO if
* the sequence is already completed
*/
if (rc == -ENXIO) {
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
index 7514cc969f8c..50d1af1eba1e 100644
--- a/include/scsi/libfc.h
+++ b/include/scsi/libfc.h
@@ -515,19 +515,6 @@ struct libfc_function_template {
void (*get_lesb)(struct fc_lport *, struct fc_els_lesb *lesb);
/*
- * Abort an exchange and sequence. Generally called because of a
- * exchange timeout or an abort from the upper layer.
- *
- * A timer_msec can be specified for abort timeout, if non-zero
- * timer_msec value is specified then exchange resp handler
- * will be called with timeout error if no response to abort.
- *
- * STATUS: OPTIONAL
- */
- int (*seq_exch_abort)(const struct fc_seq *,
- unsigned int timer_msec);
-
- /*
* Indicate that an exchange/sequence tuple is complete and the memory
* allocated for the related objects may be freed.
*
@@ -1052,6 +1039,7 @@ void fc_exch_mgr_free(struct fc_lport *);
void fc_exch_recv(struct fc_lport *, struct fc_frame *);
void fc_exch_mgr_reset(struct fc_lport *, u32 s_id, u32 d_id);
int fc_seq_send(struct fc_lport *lport, struct fc_seq *sp, struct fc_frame *fp);
+int fc_seq_exch_abort(const struct fc_seq *, unsigned int timer_msec);
/*
* Functions for fc_functions_template
OpenPOWER on IntegriCloud