summaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-core.c
diff options
context:
space:
mode:
authorTejun Heo2007-07-16 07:29:40 +0200
committerJeff Garzik2007-07-20 14:19:06 +0200
commitf1545154a5c96590b1992aac8ee1e2c445e301ed (patch)
treeedd95f465369d8597c40e7fdcc9513dea5fd2712 /drivers/ata/libata-core.c
parentlibata: improve SATA PHY speed down logic (diff)
downloadkernel-qcow2-linux-f1545154a5c96590b1992aac8ee1e2c445e301ed.tar.gz
kernel-qcow2-linux-f1545154a5c96590b1992aac8ee1e2c445e301ed.tar.xz
kernel-qcow2-linux-f1545154a5c96590b1992aac8ee1e2c445e301ed.zip
libata: quickly trigger SATA SPD down after debouncing failed
Debouncing failure is a good indicator of basic link problem. Use -EPIPE to indicate debouncing failure and make ata_eh_reset() invoke sata_down_spd_limit() if the error occurs during reset. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r--drivers/ata/libata-core.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index c325b7a4246a..05922e9f4fad 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3267,9 +3267,11 @@ int sata_phy_debounce(struct ata_port *ap, const unsigned long *params,
last = cur;
last_jiffies = jiffies;
- /* check deadline */
+ /* Check deadline. If debouncing failed, return
+ * -EPIPE to tell upper layer to lower link speed.
+ */
if (time_after(jiffies, deadline))
- return -EBUSY;
+ return -EPIPE;
}
}