SCCS-vsn: sys/vax/uba/rk.c 4.41
SCCS-vsn: sys/vax/uba/up.c 4.55
-/* rk.c 4.40 82/06/05 */
+#define RKBDEBUG
+/* rk.c 4.41 82/06/14 */
#include "rk.h"
#if NHK > 0
#include "rk.h"
#if NHK > 0
- } else
- um->um_tab.b_active = 0;
+ } else {
+ if ((er & (RKER_DCK|RKER_ECH)) == RKER_DCK) {
+ if (rkecc(ui, ECC))
+ return;
+ } else
+ um->um_tab.b_active = 0;
+ }
if (cs2&RKCS2_MDS) {
rkaddr->rkcs2 = RKCS2_SCLR;
goto retry;
if (cs2&RKCS2_MDS) {
rkaddr->rkcs2 = RKCS2_SCLR;
goto retry;
if (ds&RKDS_DROT || er&(RKER_OPI|RKER_SKI|RKER_UNS) ||
(um->um_tab.b_errcnt&07) == 4)
recal = 1;
if (ds&RKDS_DROT || er&(RKER_OPI|RKER_SKI|RKER_UNS) ||
(um->um_tab.b_errcnt&07) == 4)
recal = 1;
- if ((er & (RKER_DCK|RKER_ECH)) == RKER_DCK)
- if (rkecc(ui, ECC))
- return;
rkaddr->rkcs1 = RK_CCLR;
rkaddr->rkcs2 = ui->ui_slave;
rkaddr->rkcs1 = rktypes[ui->ui_type]|RK_DCLR|RK_GO;
rkaddr->rkcs1 = RK_CCLR;
rkaddr->rkcs2 = ui->ui_slave;
rkaddr->rkcs1 = rktypes[ui->ui_type]|RK_DCLR|RK_GO;
+ if (rk->rkwc == 0) {
+ um->um_tab.b_active = 0;
#endif
bp->b_flags &= ~B_BAD;
rk->rkwc = -((bp->b_bcount - (int)ptob(npf)) / sizeof (short));
#endif
bp->b_flags &= ~B_BAD;
rk->rkwc = -((bp->b_bcount - (int)ptob(npf)) / sizeof (short));
- if (rk->rkwc == 0)
- return(0);
+ if (rk->rkwc == 0) {
+ um->um_tab.b_active = 0;
+ return (0);
+ }
-/* up.c 4.54 82/06/05 */
+/* up.c 4.55 82/06/14 */
#include "up.h"
#if NSC > 0
#include "up.h"
#if NSC > 0
* by returning if necessary.
* Otherwise fall through and retry the transfer
*/
* by returning if necessary.
* Otherwise fall through and retry the transfer
*/
- um->um_tab.b_active = 0; /* force retry */
- if ((upaddr->uper1&(UPER1_DCK|UPER1_ECH))==UPER1_DCK)
+ if ((upaddr->uper1&(UPER1_DCK|UPER1_ECH))==UPER1_DCK) {
+ } else
+ um->um_tab.b_active = 0; /* force retry */
}
/*
* Clear drive error and, every eight attempts,
}
/*
* Clear drive error and, every eight attempts,
+ if (up->upwc == 0) {
+ um->um_tab.b_active = 0;
/*
* Have to continue the transfer... clear the drive,
* and compute the position where the transfer is to continue.
/*
* Have to continue the transfer... clear the drive,
* and compute the position where the transfer is to continue.