forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[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 <[email protected]> Signed-off-by: James Bottomley <[email protected]>
- Loading branch information
James Bottomley
authored and
James Bottomley
committed
Jan 25, 2008
1 parent
1292500
commit 366ca51
Showing
4 changed files
with
44 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#include <linux/kernel.h> | ||
#include <scsi/sas.h> | ||
#include <scsi/libsas.h> | ||
|
||
/* 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_CHECK_COND; | ||
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_CHECK_COND) | ||
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_CHECK_COND; | ||
} | ||
EXPORT_SYMBOL_GPL(sas_ssp_task_response); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters