diff options
-rw-r--r-- | drivers/ata/libata-core.c | 4 | ||||
-rw-r--r-- | include/linux/libata.h | 15 |
2 files changed, 16 insertions, 3 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index b71a7ef3f92a..63c808d17c28 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -315,9 +315,7 @@ int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev, | |||
315 | tf->flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; | 315 | tf->flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; |
316 | tf->flags |= tf_flags; | 316 | tf->flags |= tf_flags; |
317 | 317 | ||
318 | if ((dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ_OFF | | 318 | if (ata_ncq_enabled(dev) && likely(tag != ATA_TAG_INTERNAL)) { |
319 | ATA_DFLAG_NCQ)) == ATA_DFLAG_NCQ && | ||
320 | likely(tag != ATA_TAG_INTERNAL)) { | ||
321 | /* yay, NCQ */ | 319 | /* yay, NCQ */ |
322 | if (!lba_48_ok(block, n_block)) | 320 | if (!lba_48_ok(block, n_block)) |
323 | return -ERANGE; | 321 | return -ERANGE; |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 5db50fa594ac..5233e47eeb89 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -1033,6 +1033,21 @@ static inline u8 ata_chk_status(struct ata_port *ap) | |||
1033 | return ap->ops->check_status(ap); | 1033 | return ap->ops->check_status(ap); |
1034 | } | 1034 | } |
1035 | 1035 | ||
1036 | /** | ||
1037 | * ata_ncq_enabled - Test whether NCQ is enabled | ||
1038 | * @dev: ATA device to test for | ||
1039 | * | ||
1040 | * LOCKING: | ||
1041 | * spin_lock_irqsave(host lock) | ||
1042 | * | ||
1043 | * RETURNS: | ||
1044 | * 1 if NCQ is enabled for @dev, 0 otherwise. | ||
1045 | */ | ||
1046 | static inline int ata_ncq_enabled(struct ata_device *dev) | ||
1047 | { | ||
1048 | return (dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ_OFF | | ||
1049 | ATA_DFLAG_NCQ)) == ATA_DFLAG_NCQ; | ||
1050 | } | ||
1036 | 1051 | ||
1037 | /** | 1052 | /** |
1038 | * ata_pause - Flush writes and pause 400 nanoseconds. | 1053 | * ata_pause - Flush writes and pause 400 nanoseconds. |