commit message from Bill Fenner:
Turn on TCP_NODELAY on the remote socket, to turn off sender silly window
syndrome avoidance. The combination of SWS avoidance and ack-every-other
causes low throughput if the block size divided by the MSS is odd (which
is true with the default block size and MSS).
Turning on TCP_NODELAY disables the Nagle algorithm and sender SWS avoidance.
The rdump request/response protocol can not invoke Nagle and cannot cause
SWS, so this has no negative effects.
Also, put back the code that sets the TOS to "throughput", which seems to
have been erroneously removed during the Lite-2 merge.
Also- to be fair and on review, kern/391 isn't really addressed by
the previous commits. In reviewing, I'm embarassed to find that this
talks about reading at EOT. I'm actually going to claim that this
is 'not a bug' or 'fixed already' in that at the end of media (at the
edge of recorded media), you may continuously open the tape (should
you choose to) issue a read, and zero bytes will transfer- this is a
sufficient EOF indicator.
1. Document CONTROL MODE (and the fact that you can do I/O now if
the device is opened in control mode- the actual close behaviour
is akin to normal mode (i.e., it rewinds)). This should probably
either be a separate bit, or O_NDELAY on the open as well.
2. Document new MTEWARN subcommand to MTIOCTOP (enable/disable
early warning behaviour).
3. Document EOM handling more fully.
4. Note that for DENSITY and BLOCKSIZE values that the values you
set aren't persistent past the current mount session unless you have
the CONTROL MODE device opened.
5. Remove the old EOM handling BUG notice and instead note that having
a minor bit for compression selection wouldn't be a bad thing.
Flame on!
a now unused variable. Also, remove the restriction against at density
code being greater than the max SCSI 2 density code: 0x80..0xff are the
Vendor Unique codes and most certainly should be allowed. The check for
invalid values should be less than 0 or greater than 255.
Oh- yeah, the previous commit addressed kern/391.
EOM_PENDING. Set up a persistent EARLYWARNING behaviour flag. If
set, EOM behaviour forces a 'short read' to signal logical (as
opposed to physical) end of media. The user application may, of
course, do with this information what it will.
The EARLYWARNING behaviour may be enabled/disabled by a MTIOCTOP
operation. The default action is to not have EARLYWARNING enabled-
but this may be reversed by an option ST_ENABLE_EARLYWARN in
the kernel build.
interrupt context.
[I had some feline debugging help here. I noticed that every time Kem,
our kitty, jumped onto the USB keyboard the machine crashed.]