diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 47d59616fe3da7d38ecdb329c76c2ff71651c9e7..9e8b99af400dc53539ba4e8d45d36696e4818b65 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2331,8 +2331,9 @@ int ata_dev_configure(struct ata_device *dev)
 
 		/* Obtain SATA Settings page from Identify Device Data Log,
 		 * which contains DevSlp timing variables etc.
+		 * Exclude old devices with ata_id_has_ncq()
 		 */
-		if (ata_id_has_hw_feature_ctrl(dev->id)) {
+		if (ata_id_has_ncq(dev->id)) {
 			err_mask = ata_read_log_page(dev,
 						     ATA_LOG_SATA_ID_DEV_DATA,
 						     ATA_LOG_SATA_SETTINGS,
diff --git a/include/linux/ata.h b/include/linux/ata.h
index 18cbb93fdbcaff0e33c88595c5ab68a834c72649..408da9502177bd18a3ba88e2831701e916e800aa 100644
--- a/include/linux/ata.h
+++ b/include/linux/ata.h
@@ -593,7 +593,6 @@ static inline int ata_is_data(u8 prot)
 #define ata_id_cdb_intr(id)	(((id)[ATA_ID_CONFIG] & 0x60) == 0x20)
 #define ata_id_has_da(id)	((id)[ATA_ID_SATA_CAPABILITY_2] & (1 << 4))
 #define ata_id_has_devslp(id)	((id)[ATA_ID_FEATURE_SUPP] & (1 << 8))
-#define ata_id_has_hw_feature_ctrl(id)	((id)[ATA_ID_FEATURE_SUPP] & (1 << 5))
 
 static inline bool ata_id_has_hipm(const u16 *id)
 {