From: Mike Christie <[EMAIL PROTECTED]>

If fc_fcp_send_cmd fails, we can just have scsi-ml requeue
instead of internally looping on the timer.

Signed-off-by: Mike Christie <[EMAIL PROTECTED]>
---
 drivers/scsi/libfc/fc_fcp.c |   24 ++++++++++--------------
 1 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c
index 95605a1..8acf95b 100644
--- a/drivers/scsi/libfc/fc_fcp.c
+++ b/drivers/scsi/libfc/fc_fcp.c
@@ -947,10 +947,6 @@ static int fc_fcp_pkt_send(struct fc_lport *lp, struct 
fc_fcp_pkt *fsp)
 
        return rc;
 }
-static void fc_fcp_retry_send_cmd(unsigned long data)
-{
-       fc_fcp_send_cmd((struct fc_fcp_pkt *)data);
-}
 
 static int fc_fcp_send_cmd(struct fc_fcp_pkt *fsp)
 {
@@ -959,17 +955,21 @@ static int fc_fcp_send_cmd(struct fc_fcp_pkt *fsp)
        struct fc_seq *sp;
        struct fc_rport *rport;
        struct fc_rport_libfc_priv *rp;
+       int rc = 0;
 
        if (fc_fcp_lock_pkt(fsp))
-               return -1;
+               return 0;
 
        if (fsp->state & FC_SRB_COMPL)
                goto unlock;
 
        lp = fsp->lp;
        fp = fc_frame_alloc(lp, sizeof(fsp->cdb_cmd));
-       if (!fp)
-               goto retry;
+       if (!fp) {
+               rc = -1;
+               goto unlock;
+       }
+
        memcpy(fc_frame_payload_get(fp, sizeof(fsp->cdb_cmd)),
               &fsp->cdb_cmd, sizeof(fsp->cdb_cmd));
        fc_frame_setup(fp, FC_RCTL_DD_UNSOL_CMD, FC_TYPE_FCP);
@@ -985,7 +985,8 @@ static int fc_fcp_send_cmd(struct fc_fcp_pkt *fsp)
                                  FC_FC_SEQ_INIT | FC_FC_END_SEQ);
        if (!sp) {
                fc_frame_free(fp);
-               goto retry;
+               rc = -1;
+               goto unlock;
        }
        fsp->seq_ptr = sp;
 
@@ -995,12 +996,7 @@ static int fc_fcp_send_cmd(struct fc_fcp_pkt *fsp)
                        FC_SCSI_REC_TOV : FC_SCSI_ER_TIMEOUT);
 unlock:
        fc_fcp_unlock_pkt(fsp);
-       return 0;
-retry:
-       setup_timer(&fsp->timer, fc_fcp_retry_send_cmd, (unsigned long)fsp);
-       fc_fcp_timer_set(fsp, FC_SCSI_REC_TOV);
-       fc_fcp_unlock_pkt(fsp);
-       return 0;
+       return rc;
 }
 
 /*
-- 
1.5.4.1

_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel

Reply via email to