]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
qla2xxx: Proper completion to scsi-ml for scsi status task_set_full and busy.
authorGiridhar Malavali <giridhar.malavali@qlogic.com>
Thu, 29 Mar 2012 20:14:09 +0000 (13:14 -0700)
committerMaxim Uvarov <maxim.uvarov@oracle.com>
Mon, 23 Jul 2012 08:02:43 +0000 (01:02 -0700)
In case of firmmware detected under-run condition and scsi status of task_set_full
or busy_condition, DID_OK is returned to scsi-ml for faster recovery.

JIRA Key: V2632FC-186

drivers/scsi/qla2xxx/qla_dbg.c
drivers/scsi/qla2xxx/qla_isr.c

index 61cd8d263c8e58844d49dd99ad1b2219a072976d..3647f0162ec18311f93228613c7c13df3c0d83f2 100644 (file)
@@ -14,7 +14,7 @@
  * | Module Init and Probe        |       0x0120       | 0x4b,0xba,0xfa |
  * | Mailbox commands             |       0x113e       | 0x111a-0x111b  |
  * | Device Discovery             |       0x2086       | 0x2020-0x2022  |
- * | Queue Command and IO tracing |       0x302f       | 0x3006,0x3008  |
+ * | Queue Command and IO tracing |       0x3030       | 0x3006,0x3008  |
  * |                              |                    | 0x302d,0x302e  |
  * | DPC Thread                   |       0x401c       | 0x4002,0x4013  |
  * | Async Events                 |       0x505f       | 0x502b-0x502f  |
index 2dc4e9ebd65bfbc25211bcc4e05fc22936134476..1eb7d3e304706fb126027d7e0103727f0b45ed42 100644 (file)
@@ -1733,13 +1733,24 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
                                res = DID_ERROR << 16;
                                break;
                        }
-               } else {
+               } else if (lscsi_status != SAM_STAT_TASK_SET_FULL &&
+                           lscsi_status != SAM_STAT_BUSY) {
+                       /*
+                        * scsi status of task set and busy are considered to be
+                        * task not completed.
+                        */
+
                        ql_dbg(ql_dbg_io, fcport->vha, 0x301f,
                            "Dropped frame(s) detected (0x%x "
-                           "of 0x%x bytes).\n", resid, scsi_bufflen(cp));
+                           "of 0x%x bytes).\n", resid,
+                           scsi_bufflen(cp));
 
                        res = DID_ERROR << 16 | lscsi_status;
                        goto check_scsi_status;
+               } else {
+                       ql_dbg(ql_dbg_io, fcport->vha, 0x3030,
+                           "scsi_status: 0x%x, lscsi_status: 0x%x\n",
+                           scsi_status, lscsi_status);
                }
 
                res = DID_OK << 16 | lscsi_status;