art@ACC.ARPA (10/25/85)
I reviewed the 1822 spec regarding IMP message lengths and relearned some interesting information. The IMP was originally designed to deal with three different machine word lengths (source machine, IMP and destination machine). This involves a padding scheme which adds padding as a message goes from src->IMP and also IMP->dst. The IMP ALWAYS appends a 1 to the message and zero pads to the end of an IMP word (16 bits). For machines with an LH/DH-11 (PDP-11 or VAX) this causes the destination host to receive 16 bits more than the original message length (plus any padding the destination host interface might have to add). The maximum message size that an IMP will send to a host is 8160 bits (1020 bytes). The BSD 4.2 driver CORRECTLY limits the messages sent to the IMP to 1018 bytes, but INCORRECTLY uses a 1018 byte buffer to receive into. If the LH/DH-11 is healthy, the driver logic does deal with this situation, but with unneccessary interrupt overhead (to start a bunch of 2 byte reads). If the LH/DH-11 occasionally drops the EOM when DMA is restarted, messages would get concatonated, with the second (or both) messages being ignored. We will attempt to cause this failure in the lab, but recommend that LH/DH-11 drivers read into at least an 1020 byte buffer. "Art Berggreen"<Art@ACC.ARPA> ------
MILLS@USC-ISID.ARPA (10/26/85)
In response to the message sent 25 Oct 85 12:41:00 PDT from <art@acc.arpa> Art, Every year some poor dude relearns about IMP padding and sends a message like yours and reminds the rest of us. This year it was you. Don't feel bad, a couple of years ago it was me. Those who forget the lessons of history are bound to repeat them. Or something like that. Dave -------