summaryrefslogtreecommitdiff
path: root/sys/arch/vax/vxt
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2006-08-30 19:28:14 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2006-08-30 19:28:14 +0000
commit302cfe701533ce5dd8ffa808ba95ceac1468a01a (patch)
treeef8e863d4796abdd6973bad3d244c451d864bcce /sys/arch/vax/vxt
parent701389a42635590876733b8299f8de9263429650 (diff)
Teach the SGEC driver about the Real World:
- check for error bits in descriptors, and count and report errors accordingly; make sure we do not pass up known-to-be-bad packets up the receive path. - check for various error conditions which would cause the transmit process to go to suspended state, and recover from them, before the timeout expires. - finally, on the VXT2000, the transmit process for some reason will reset its ring position to the beginning of the ring every time it completes a transmission burst, while we don't, so play with the head of ring register behind its back. This makes my VXT2000+ (net)boot multiuser. Tested on VXT2000 (ze@vxtbus), KA49 (ze@vsbus) and KA53 (ze@ibus); ok deraadt@
Diffstat (limited to 'sys/arch/vax/vxt')
-rw-r--r--sys/arch/vax/vxt/if_ze_vxtbus.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/arch/vax/vxt/if_ze_vxtbus.c b/sys/arch/vax/vxt/if_ze_vxtbus.c
index ee4e4ed08e1..727cded771f 100644
--- a/sys/arch/vax/vxt/if_ze_vxtbus.c
+++ b/sys/arch/vax/vxt/if_ze_vxtbus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ze_vxtbus.c,v 1.1 2006/08/27 16:55:41 miod Exp $ */
+/* $OpenBSD: if_ze_vxtbus.c,v 1.2 2006/08/30 19:28:13 miod Exp $ */
/*
* Copyright (c) 1999 Ludd, University of Lule}, Sweden. All rights reserved.
*
@@ -91,5 +91,6 @@ ze_vxt_attach(struct device *parent, struct device *self, void *aux)
sc->sc_ac.ac_enaddr[i] = ea[i] & 0xff;
vax_unmap_physmem((vaddr_t)ea, 1);
+ SET(sc->sc_flags, SGECF_VXTQUIRKS);
sgec_attach(sc);
}