Subject: Cabletron "etherd" program for NetBSD
To: None <port-mac68k@NetBSD.ORG, port-pc532@NetBSD.ORG>
From: Phil Budne <budd@cs.bu.edu>
List: port-pc532
Date: 07/12/1996 17:24:33
As promissed I've put together a package.
	ftp://alpha.gnu.ai.mit.edu/budne/pc532/etherd.*

Here is the README file (It sounds like Steve has found a friendly at
Cabletron, new info since I wrote this an hour ago!);

etherd README
Phil Budne <budd@cs.bu.edu>
July 12, 1996

etherd is a user program that tries to drive a Cabletron EA41x SCSI to
Ethernet adaptor from a NetBSD (or other 4.4-based system).  It should
also be applicable to other devices and operating systems with raw
scsi access and a tunnel interface driver.

The scsi.txt file available on ftp.ctron.com was a useful start, but
appears to be dated. I had to resort to disassebling my PROM (before I
found the EA412 image file) to get protocol filters to work (and thus
transfer packets when not in promiscuous mode).

INSTALATION
===========

It looks like the EA41x may disregard the "read allocation" on
INQUIRY.  Solution; use padded struct (and thus large allocation) for
scsi_inquiry (hence scsi_xxx.c.diff).

Patches also needed to add "uk" driver support to pc532 port (see
*.pc532.diff).  You must have "uk" and "tun" drivers configured.

USAGE
=====

You MUST edit the "netstart" the script for your local configuration.

netstart also passes any command line arguments to etherd (ie; for
options).  I still haven't gotten routing quite right, it would be
nice to have a way to control (ie; using ifconfig linkX) whether a
given instance of the tunnel interface appears as a POINTTOPOINT or
multidrop interface!

etherd uses traditional (net2) Berkeley arp code (requires no routing
table support routines), and takes the following arguments;

options;
	-d	increment debug level (only levels 0, 1, & 2 are meaningful)
	-p	use promiscuous mode
	-r RATE	poll cabletron RATE times a second. The default is 25,
		which has reasonable overhead, and introduces a
		maximum of 40ms latency (well below human tolerance).

required;
	ukX	name of the "unknown SCSI driver" instance attached to
		Cabletron as shown in boot messages.

	tunY	name of the tunnel driver instance to use.  must be
		pre-configured.  No dest addr needed?

PROBLEMS
========

1. I cannot send large amounts of data out on the ether using the
cabletron. I see messages like;

    ncr0: can not transfer more data
    ncr0: aborting, but phase=DATA_IN (reset)
    ncr0: reset SCSI bus for TID=6 LUN=0

It may be that my scsi bus is a mess.  The cabletron only works when
termination is selected.  Reception works fine (I've seen up to
95000B/s sending /usr/share/misc/termcap).

2. I cannot recieve back-to back packets (ie; fragmented IP packets).
"ping -s 1472" works, "ping -s 1473" does not.  This works when the
box is hooked to my Mac, in fact I'm able to do; "spray -i -c 227 mac"
and "spray -i -c 10 -l 2000 mac" from my Sun running 4.1.4.  I see
123KB/s on the latter spray.

3. I sometimes get into a screwed up state (usuallu after seeing
problem #1) where I ping the box and packets arrive 1, 2 or 3 seconds
late.  This and problem #2 suggest I'm doing something that is
effecting the input buffering of packets!

4. Need to figure out how to use undocumented opcode 9 to download new
01.00.00 image file (my PROM is 00.00.19)!

Any of all of the above might be answered by peeking inside the
Macintosh driver!