version 1.7.2.1.2.1, 1999/06/21 01:17:38 |
version 1.7.2.2, 2000/01/23 12:25:32 |
Line 156 ata_set_mode(drvp, mode, flags) |
|
Line 156 ata_set_mode(drvp, mode, flags) |
|
} |
} |
|
|
void |
void |
|
ata_dmaerr(drvp) |
|
struct ata_drive_datas *drvp; |
|
{ |
|
/* |
|
* Downgrade decision: if we get NERRS_MAX in NXFER. |
|
* We start with n_dmaerrs set to NERRS_MAX-1 so that the |
|
* first error within the first NXFER ops will immediatly trigger |
|
* a downgrade. |
|
* If we got an error and n_xfers is bigger than NXFER reset counters. |
|
*/ |
|
drvp->n_dmaerrs++; |
|
if (drvp->n_dmaerrs >= NERRS_MAX && drvp->n_xfers <= NXFER) { |
|
wdc_downgrade_mode(drvp); |
|
drvp->n_dmaerrs = NERRS_MAX-1; |
|
drvp->n_xfers = 0; |
|
return; |
|
} |
|
if (drvp->n_xfers > NXFER) { |
|
drvp->n_dmaerrs = 1; /* just got an error */ |
|
drvp->n_xfers = 1; /* restart counting from this error */ |
|
} |
|
} |
|
|
|
void |
ata_perror(drvp, errno, buf) |
ata_perror(drvp, errno, buf) |
struct ata_drive_datas *drvp; |
struct ata_drive_datas *drvp; |
int errno; |
int errno; |