diff options
author | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-01-18 11:47:01 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-01-25 12:47:23 -0500 |
commit | 366ca51f30de1cbb5b356c70b7bb22051c558e41 (patch) | |
tree | c28a9d3b64a5b3e3c8bd29c57003ee524e9e1e63 /drivers/scsi/aic94xx | |
parent | 1292500b159c00a8fece072b004f154e6fda9f48 (diff) |
[SCSI] libsas: abstract STP task status into a function
Break out the frame processor for STP tasks from aic94xx so they can
be shared by other SAS HBA's
Original patch from Jeff Garzik <jeff@garzik.org>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/aic94xx')
-rw-r--r-- | drivers/scsi/aic94xx/aic94xx_task.c | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c index 663fdef38c52..965d4bb999d9 100644 --- a/drivers/scsi/aic94xx/aic94xx_task.c +++ b/drivers/scsi/aic94xx/aic94xx_task.c | |||
@@ -192,24 +192,8 @@ static void asd_get_response_tasklet(struct asd_ascb *ascb, | |||
192 | r + 16 + sizeof(struct ssp_frame_hdr); | 192 | r + 16 + sizeof(struct ssp_frame_hdr); |
193 | 193 | ||
194 | ts->residual = le32_to_cpu(*(__le32 *)r); | 194 | ts->residual = le32_to_cpu(*(__le32 *)r); |
195 | ts->resp = SAS_TASK_COMPLETE; | 195 | |
196 | if (iu->datapres == 0) | 196 | sas_ssp_task_response(&asd_ha->pcidev->dev, task, iu); |
197 | ts->stat = iu->status; | ||
198 | else if (iu->datapres == 1) | ||
199 | ts->stat = iu->resp_data[3]; | ||
200 | else if (iu->datapres == 2) { | ||
201 | ts->stat = SAM_CHECK_COND; | ||
202 | ts->buf_valid_size = min((u32) SAS_STATUS_BUF_SIZE, | ||
203 | be32_to_cpu(iu->sense_data_len)); | ||
204 | memcpy(ts->buf, iu->sense_data, ts->buf_valid_size); | ||
205 | if (iu->status != SAM_CHECK_COND) { | ||
206 | ASD_DPRINTK("device %llx sent sense data, but " | ||
207 | "stat(0x%x) is not CHECK_CONDITION" | ||
208 | "\n", | ||
209 | SAS_ADDR(task->dev->sas_addr), | ||
210 | iu->status); | ||
211 | } | ||
212 | } | ||
213 | } else { | 197 | } else { |
214 | struct ata_task_resp *resp = (void *) &ts->buf[0]; | 198 | struct ata_task_resp *resp = (void *) &ts->buf[0]; |
215 | 199 | ||