Jeez. After a lot of pain, and still not entirely good, I can at least
report some good things about LAT with regards to Linux and RSX.
As I mentioned before, there is some kind of a problem between the Linux
latd and RSX LAT server. Using llogin to login on RSX systems, the
terminal hangs after a while, and there is also some memory leak causing
RSX to eventually become non-functional.
The Linux latd code is horribly weird and ever after digging through it
for days, it still does things I cannot explain. But there is definitely
one bug in there, which is that it does not count credits when receiving
data_b slots. That means the sender can run out of credits, while the
Linux latd thinks the remote still have credits, and will not extend
more. The "funny" thing is that Linux latd do count the credits when
sending data_b slots. So I'd say that is a very obvious error in Linux
latd (also - LAT documentation clearly states that data_b slots counts
against credits). I've fixed this, and that solved the hanging problem
towards RSX. I'm honestly surprised if this has not been a problem
anywhere else, as it's the same for any kind of system. Either other
systems are not sending data_b slots, or else there are bugs on more sides.
I can provide the patch for this problem, but I wonder if anyone still
"owns" that software, to whom I should send this...
Second, Linux latd sends attention slots with a stop code of 0x40. This
is, according to the LAT documentation, as well as RSX code, an
undefined value. Not sure where the Linux latd got that value from.
Third, Linux latd is broken when it comes to tracking and dealing with
ACKs. This one I have not been able to figure out/understand. I can see
on the wire that it's sending packets with a lower ACK number than the
previous packet it sent out. Looking at the code, as well as trying to
understand this in general seems crazy. It should not be possible for
this to happen, but it does.
Fortunately, it is on a stop message, for which RSX isn't happy about
for other reasons anyway, so it don't matter. But I still thing it's
totally crazy.
Now, with all that said, I have also had to find and fix a couple of
bugs in the RSX LAT code, which also is a little difficult to penetrate.
Seems DEC can't really have tested this code that much, and whoever
wrote it wasn't careful.
Fixed version of the LAT bits have been included in the latest BQTCP
distribution. If you install the RSX patches, LAT will be fixed.
There are actually two problems I found in there.
1. If a circuit is closed down, and there is currently a transmit in
progress, that transmit then becomes a lost buffer upon completion (this
is the original RSX error I saw and mentioned before). This is clearly a
case of timing issues, which I guess whoever wrote the code just didn't
think about, or test carefully.
2. Slot attention messages with a valid stop code cause the system to
crash. This is really weird. Because Linux latd was using an undefined
value in the attention message, things worked just fine, but if I
corrected that, RSX crashed. Which suggests that all terminal servers
and other LAT software is in fact also using this wrong value in the
attention message. Fixing this was just required saving and restoring a
couple of registers at the right place. Again, this can't have been
tested at all. Possibly the person writing the code thought he tested it
by using DECservers or whatever, but if they actually were sending the
wrong code, all looked good, but things did not get executed the way it
should.
Finally, Linux latd sends a circuit stop message that RSX do not like at
all. The reason being that RSX at that point have already deleted the
circuit, so it becomes a stop message for a circuit that does not exist.
This will cause the illegal message counter to count, but nothing worse
than that.
I should break out a DECserver and compare to that. But I figure I
should let people know about what I've been up to lately, which might
also be interesting for others in here...
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt at softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol