sc_cmd->result = (DID_ERROR << 16) | fsp->cdb_status;
                break;
        case FC_CMD_ABORTED:
-               FC_FCP_DBG(fsp, "Returning DID_ERROR to scsi-ml "
-                         "due to FC_CMD_ABORTED\n");
-               sc_cmd->result = (DID_ERROR << 16) | fsp->io_status;
+               if (host_byte(sc_cmd->result) == DID_TIME_OUT)
+                       FC_FCP_DBG(fsp, "Returning DID_TIME_OUT to scsi-ml "
+                                  "due to FC_CMD_ABORTED\n");
+               else {
+                       FC_FCP_DBG(fsp, "Returning DID_ERROR to scsi-ml "
+                                  "due to FC_CMD_ABORTED\n");
+                       set_host_byte(sc_cmd, DID_ERROR);
+               }
+               sc_cmd->result |= fsp->io_status;
                break;
        case FC_CMD_RESET:
                FC_FCP_DBG(fsp, "Returning DID_RESET to scsi-ml "