M ip/devip.c => ip/devip.c +1 -0
@@ 467,6 467,7 @@ closeconv(Conv *cv)
cv->incall = nc->next;
closeconv(nc);
}
+ cv->incall = nil;
strcpy(cv->owner, network);
cv->perm = 0660;
M ip/kio.c => ip/kio.c +1 -1
@@ 124,7 124,7 @@ kseek(int fd, vlong offset, int whence)
case 2:
devtab[c->type]->stat(c, buf);
convM2D(buf, &dir);
- c->offset = dir.length2 + offset; /* BOTCH */
+ c->offset = dir.length1 + offset; /* BOTCH */
off = c->offset;
break;
}
M pc/etherelnk3.c => pc/etherelnk3.c +6 -1
@@ 1025,7 1025,12 @@ interrupt(Ureg*, void* arg)
ctlr->txthreshold += ETHERMINTU;
}
- if(s & (txJabber|txUnderrun)){
+ /*
+ * According to the manual, maxCollisions does not require
+ * a TxReset, merely a TxEnable. However, evidence points to
+ * it being necessary on the 3C905. The jury is still out.
+ */
+ if(s & (txJabber|txUnderrun|maxCollisions)){
if(ctlr->busmaster == 0)
COMMAND(port, TxReset, 0);
else