Commit f5446445 authored by Niklas Cassel's avatar Niklas Cassel Committed by Damien Le Moal
Browse files

ata: libata-sata: Simplify sense_valid fetching



While the SENSE DATA VALID field in the ACS-6 specification is 47 bits,
we are currently only fetching 32 bits, because these are the only bits
that we care about (these bits represent the tags (which can be 0-31)).

Thus, replace the existing logic with a simple get_unaligned_le32().

While at it, change the type of sense_valid to u32.

Signed-off-by: default avatarNiklas Cassel <cassel@kernel.org>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Reviewed-by: default avatarIgor Pylypiv <ipylypiv@google.com>
Signed-off-by: default avatarDamien Le Moal <dlemoal@kernel.org>
parent e8866e26
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1509,9 +1509,10 @@ int ata_eh_get_ncq_success_sense(struct ata_link *link)
	struct ata_queued_cmd *qc;
	unsigned int err_mask, tag;
	u8 *sense, sk = 0, asc = 0, ascq = 0;
	u64 sense_valid, val;
	u16 extended_sense;
	bool aux_icc_valid;
	u32 sense_valid;
	u64 val;
	int ret = 0;

	err_mask = ata_read_log_page(dev, ATA_LOG_SENSE_NCQ, 0, buf, 2);
@@ -1529,8 +1530,7 @@ int ata_eh_get_ncq_success_sense(struct ata_link *link)
		return -EIO;
	}

	sense_valid = (u64)buf[8] | ((u64)buf[9] << 8) |
		((u64)buf[10] << 16) | ((u64)buf[11] << 24);
	sense_valid = get_unaligned_le32(&buf[8]);
	extended_sense = get_unaligned_le16(&buf[14]);
	aux_icc_valid = extended_sense & BIT(15);

@@ -1545,7 +1545,7 @@ int ata_eh_get_ncq_success_sense(struct ata_link *link)
		 * If the command does not have any sense data, clear ATA_SENSE.
		 * Keep ATA_QCFLAG_EH_SUCCESS_CMD so that command is finished.
		 */
		if (!(sense_valid & (1ULL << tag))) {
		if (!(sense_valid & (1 << tag))) {
			qc->result_tf.status &= ~ATA_SENSE;
			continue;
		}