libata/libsas: Define ATA_CMD_NCQ_NON_DATA
Define the NCQ NON DATA command and update libsas to handle it correctly. Signed-off-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
Родитель
ef026b18bb
Коммит
661ce1f0c4
|
@ -1632,6 +1632,7 @@ static u8 get_ata_protocol(u8 cmd, int direction)
|
|||
case ATA_CMD_FPDMA_READ:
|
||||
case ATA_CMD_FPDMA_RECV:
|
||||
case ATA_CMD_FPDMA_SEND:
|
||||
case ATA_CMD_NCQ_NON_DATA:
|
||||
return SATA_PROTOCOL_FPDMA;
|
||||
|
||||
case ATA_CMD_ID_ATA:
|
||||
|
|
|
@ -3171,7 +3171,8 @@ static enum sci_status isci_request_stp_request_construct(struct isci_request *i
|
|||
if (qc && (qc->tf.command == ATA_CMD_FPDMA_WRITE ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_READ ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_RECV ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_SEND)) {
|
||||
qc->tf.command == ATA_CMD_FPDMA_SEND ||
|
||||
qc->tf.command == ATA_CMD_NCQ_NON_DATA)) {
|
||||
fis->sector_count = qc->tag << 3;
|
||||
ireq->tc->type.stp.ncq_tag = qc->tag;
|
||||
}
|
||||
|
|
|
@ -207,7 +207,8 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
|
|||
if (qc->tf.command == ATA_CMD_FPDMA_WRITE ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_READ ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_RECV ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_SEND) {
|
||||
qc->tf.command == ATA_CMD_FPDMA_SEND ||
|
||||
qc->tf.command == ATA_CMD_NCQ_NON_DATA) {
|
||||
/* Need to zero out the tag libata assigned us */
|
||||
qc->tf.nsect = 0;
|
||||
}
|
||||
|
|
|
@ -431,7 +431,8 @@ static u32 mvs_get_ncq_tag(struct sas_task *task, u32 *tag)
|
|||
if (qc->tf.command == ATA_CMD_FPDMA_WRITE ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_READ ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_RECV ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_SEND) {
|
||||
qc->tf.command == ATA_CMD_FPDMA_SEND ||
|
||||
qc->tf.command == ATA_CMD_NCQ_NON_DATA) {
|
||||
*tag = qc->tag;
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -282,7 +282,8 @@ u32 pm8001_get_ncq_tag(struct sas_task *task, u32 *tag)
|
|||
if (qc->tf.command == ATA_CMD_FPDMA_WRITE ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_READ ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_RECV ||
|
||||
qc->tf.command == ATA_CMD_FPDMA_SEND) {
|
||||
qc->tf.command == ATA_CMD_FPDMA_SEND ||
|
||||
qc->tf.command == ATA_CMD_NCQ_NON_DATA) {
|
||||
*tag = qc->tag;
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -243,6 +243,7 @@ enum {
|
|||
ATA_CMD_WRITE_QUEUED_FUA_EXT = 0x3E,
|
||||
ATA_CMD_FPDMA_READ = 0x60,
|
||||
ATA_CMD_FPDMA_WRITE = 0x61,
|
||||
ATA_CMD_NCQ_NON_DATA = 0x63,
|
||||
ATA_CMD_FPDMA_SEND = 0x64,
|
||||
ATA_CMD_FPDMA_RECV = 0x65,
|
||||
ATA_CMD_PIO_READ = 0x20,
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
ata_opcode_name(ATA_CMD_WRITE_QUEUED_FUA_EXT), \
|
||||
ata_opcode_name(ATA_CMD_FPDMA_READ), \
|
||||
ata_opcode_name(ATA_CMD_FPDMA_WRITE), \
|
||||
ata_opcode_name(ATA_CMD_NCQ_NON_DATA), \
|
||||
ata_opcode_name(ATA_CMD_FPDMA_SEND), \
|
||||
ata_opcode_name(ATA_CMD_FPDMA_RECV), \
|
||||
ata_opcode_name(ATA_CMD_PIO_READ), \
|
||||
|
|
Загрузка…
Ссылка в новой задаче