[comp.os.vms] Drop of Support in VMS for DEQNA

NED@YMIR.BITNET (Ned Freed) (08/05/88)

The DEQNA is known to have trouble operating on heavily loaded ethernets.
VMS 4.7 and 5.0 have special code in them to perform additional checksumming
on incoming packets. Under VMS 4.7 this is enabled by default on LAVC
configurations. The SYSGEN parameter that controls it is PE5. See page
3-21 of the 4.7 release notes for information about this. Under VMS 5.0
the same stuff is there but there's no indication of the SYSGEN parameter
that contols it. See page 8-20 of the VMS 5.0 release notes for information
about this one.

I have spent some time trying to figure out just what the PE5 parameter
actually does under 4.7. There don't seem to be any references to it
in SYS.EXE or in XQDRIVER.EXE (at least none that I can find). There's
a routine to calculate a checksum, but I have not been able to track
down any use of it.

I have a theory as to what goes wrong and why. Its only a theory; I have no
proof of it and I have not been able to think of a way to test it. There's
a structure in a DEQNA called a receive ring buffer. Its a list of linked
buffer that the DEQNA fills up with packets that come in. There's a bit
in the header of each buffer that indicates whether or not its valid. When
this bit is set (valid) the DEQNA will use the buffer, when its clear the
DEQNA won't use it. The DEQNA stops receive processing when it first
encounters an invalid buffer. But here's the catch; the DEQNA does not
clear the bit itself! It does write a length value into the buffer, but that's
the only indication that the buffer has been used. The DEQNA does not look
at the length field itself. Of course, the DEQNA signals an interrupt when
a packet arrives so the VAX can deal with the packet.

So here is my theory. Suppose the VAX is a wee bit slow at servicing its
interrupts and the DEQNA manages to make it all the way around the ring.
There's nothing to stop it from clobbering a buffer that contains valid
data that the VAX has not processed yet. Worse, it could be in the process
of filling a buffer when the VAX tries to read the previous packet out of
it. And that would lead to corrupted data.

There's a note in the DELQA documentation that implies that it actually checks
those length fields as well as the valid bit, but it does not actually come
out and say this in so many words. (Sorry, I don't have the DELQA documentation
at the ready to cite a page number for this.)

Now, all this is very nice, but its only a theory. I would be EXTREMELY
interested in anything that anyone could contribute to an understanding of
this problem.

So, in response to the original posting, I don't think that the dropping of
support for the DEQNA is an attempt by DEC to get people to buy new hardware,
unless you seriously think that they engineered the DEQNA badly in the first
place as part of a deliberate plan. Me, I'm not that paranoid.

                                Ned