From 392e8802486cb573b916e746010e141a75f507e6 Mon Sep 17 00:00:00 2001 From: Kevin Date: Sat, 15 Nov 2014 09:58:27 +0800 Subject: init android origin source code --- ANDROID_3.4.5/drivers/scsi/libsas/sas_task.c | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 ANDROID_3.4.5/drivers/scsi/libsas/sas_task.c (limited to 'ANDROID_3.4.5/drivers/scsi/libsas/sas_task.c') diff --git a/ANDROID_3.4.5/drivers/scsi/libsas/sas_task.c b/ANDROID_3.4.5/drivers/scsi/libsas/sas_task.c new file mode 100644 index 00000000..a78e5bd3 --- /dev/null +++ b/ANDROID_3.4.5/drivers/scsi/libsas/sas_task.c @@ -0,0 +1,37 @@ +#include +#include +#include +#include + +/* fill task_status_struct based on SSP response frame */ +void sas_ssp_task_response(struct device *dev, struct sas_task *task, + struct ssp_response_iu *iu) +{ + struct task_status_struct *tstat = &task->task_status; + + tstat->resp = SAS_TASK_COMPLETE; + + if (iu->datapres == 0) + tstat->stat = iu->status; + else if (iu->datapres == 1) + tstat->stat = iu->resp_data[3]; + else if (iu->datapres == 2) { + tstat->stat = SAM_STAT_CHECK_CONDITION; + tstat->buf_valid_size = + min_t(int, SAS_STATUS_BUF_SIZE, + be32_to_cpu(iu->sense_data_len)); + memcpy(tstat->buf, iu->sense_data, tstat->buf_valid_size); + + if (iu->status != SAM_STAT_CHECK_CONDITION) + dev_printk(KERN_WARNING, dev, + "dev %llx sent sense data, but " + "stat(%x) is not CHECK CONDITION\n", + SAS_ADDR(task->dev->sas_addr), + iu->status); + } + else + /* when datapres contains corrupt/unknown value... */ + tstat->stat = SAM_STAT_CHECK_CONDITION; +} +EXPORT_SYMBOL_GPL(sas_ssp_task_response); + -- cgit