[comp.dcom.modems] TMN-netnews update

eric@snark.uu.net (Eric S. Raymond) (04/29/89)

Well. The last week has been...interesting. I've had to change development
machines twice. I had carefully uucped almost everything off the 386 clone box
to the T5100 and spiffy new 3-1/2" backup media last week. So when time came
to bid farewell to the clone, I simply shipped over the last few files, powered
it down, changed my modem connections...

...and discovered that the $#&^@!! T5100 serial port wouldn't talk to my 
Trailblazer! Aaargh!

After a day and a half of experimentation, (fruitless) phone calls to Toshiba
tech support, and extreme frustration, I finally pinned down the problem. The
T5100 uses the same el cheapo 8251 UART-based port hardware design found in
braindamaged DOS machines everywhere; the chip only supports one handshake
line, and they did *not* wire it to support RTS/CTS handshaking.

Result? The 'blazer has to have S58=0 (no handshake) or S58=3 (XON/XOFF) set
for the T5100 to even *open* it -- and XON/XOFF isn't usable because the start
and stop chars are in-band for UUCP's 'g' protocol. Without handshaking
dropped characters are inevitable. Massive lossage either way.

Sooo...I hauled the 3B1 down from the third floor and moved *everything*
back onto it. You remember this 3B1, it's where I was developing six months ago
when it became subject to fits of unsanity and random kernel panics. But
at least it handshakes to the 'Blazer; the only compromise I had to make was
strapping DCD high (S53=0).

So the two machines are now sitting side-by side; I'm developing on the 3B1
with frequent backups via UUCP to the T5100. Damn. I hope AT&T comes through
with my 6386 WGS *soon*...my contact there says next week but I've heard *that*
song before.

It didn't help, either, that I can't use kermit anymore and thus had to switch
to a new Internet connecton (linc.cis.upenn has no uucp dialins) and that said
new internet connection is proving irritatingly difficult to get configured
properly.

Between all this sturm und drang on the hardware and comm front, having to
field minor MRs, and the demands of organic life (eating, sleeping, that sort
of thing) I've had precious little time to move forward on TMNN. And I've
doubtless got *another* siege coming up when the new hardware comes in. But
for now things have quieted down enough for me at least to catch up on
*reading* news :-) and repair some documentation glitches in 7.4.

Meanwhile, I'm waiting on one last set of fixes from Ted Ts'o at MIT. He's been
fine-toothing the code with a copy of the C interpreter Sabre, which helps
catch pointer-corruption bugs and the other kinds of subtle run-time michigoss
for which C is so justly famed.

As soon as these patches come in and I can integrate them, I will release
TMNN7.5 to the whole beta list. Promise!

      Eric S. Raymond                      (the mad mastermind of TMN-Netnews)
      UUCP: {uunet!vu-vlsi!cbmvax}!snark!eric      INTERNET: eric@snark.uu.net
      Post: 22 S. Warren Avenue, Malvern PA 19355  Phone: (215)-296-5718

henry@utzoo.uucp (Henry Spencer) (04/30/89)

In article <1RH0R8#4BF6fX=eric@snark.uu.net> eric@snark.uu.net (Eric S. Raymond) writes:
>Result? The 'blazer has to have S58=0 (no handshake) or S58=3 (XON/XOFF) set
>for the T5100 to even *open* it -- and XON/XOFF isn't usable because the start
>and stop chars are in-band for UUCP's 'g' protocol. Without handshaking
>dropped characters are inevitable. Massive lossage either way.

Aha, a chance to catch Eric in an error! :-)  The uucp-spoofing mode in the
Trailblazer, when it kicks in, shuts XON/XOFF off, so there is no conflict.
With a packet protocol running between host and modem, you don't need any
low-level handshaking if your host interface is halfway well built.
-- 
Mars in 1980s:  USSR, 2 tries, |     Henry Spencer at U of Toronto Zoology
2 failures; USA, 0 tries.      | uunet!attcan!utzoo!henry henry@zoo.toronto.edu

sl@unifax.UUCP (Stuart Lynne) (05/02/89)

In article <1989Apr29.224526.22914@utzoo.uucp> henry@utzoo.uucp (Henry Spencer) writes:
>In article <1RH0R8#4BF6fX=eric@snark.uu.net> eric@snark.uu.net (Eric S. Raymond) writes:
>>Result? The 'blazer has to have S58=0 (no handshake) or S58=3 (XON/XOFF) set
>>for the T5100 to even *open* it -- and XON/XOFF isn't usable because the start
>>and stop chars are in-band for UUCP's 'g' protocol. Without handshaking
>>dropped characters are inevitable. Massive lossage either way.
>
>Aha, a chance to catch Eric in an error! :-)  The uucp-spoofing mode in the
>Trailblazer, when it kicks in, shuts XON/XOFF off, so there is no conflict.
>With a packet protocol running between host and modem, you don't need any
>low-level handshaking if your host interface is halfway well built.

There are two types of character losses. First from not being able to
service the received character interrupts fast enough, and second running
out of room for the data in the driver buffers (clists). If the driver runs
out of room it will flush the data. Prior to actually running out of room it
will attempt to flow control.

With uucp protocol "g", with a window size of 3 you will not overrun the
CLISTS (at least not in standard system v). So the only problem is whether
you can actually service interrupts fast enough to actually receive the
data.

This can be partially helped by designing the interrupt levels so that
serial drivers have the highest priority. In fact higher than the kernel is
protected from (effectively making allmost all of the kernel interruptable).
Then have the serial drivers only send and receive data from it's own data
areas (not from the systems clists). Fill or empty the drivers data areas
from a clock interrupt service routine.

If you then allow that routine to do (for example) hardware handshaking you
can handle fairly high data transfers without huge buffers. If the device
you are talking to doesn't handle RTS/CTS type flow control you have to
provide enough data space to handle the worst case. On Xenix for example at
19.2 you have to buffer about 60 chars to be safe (the clock poll should
empty the data every 2 milli seconds, you can receive something like 20
char's per millisecond at 19.2).

The bottom line is that if you have a decent serial driver you can run the
TB's without *any* flow control because the windowsize of three prevents the
standard drivers from overflowing the clists and flushing them. And if you
*really* do need flow control it can be done by using hardware (RTS/CTS)
full duplex flow control. Anyone who has a Trailblazer hooked up to an SCO
286 system can demonstrate this fact to you. 

-- 
Stuart.Lynne@wimsey.bc.ca uunet!van-bc!sl 604-937-7532(voice) 604-939-4768(fax)