Subject: Implementation of RFC 1201 arcnet
To: None <tech-net@NetBSD.ORG>
From: Ignatios Souvatzis <>
List: tech-net
Date: 03/11/1995 13:37:14

I'm working on the implementation of the newer RFC 1201 method of IP over
ARCnet, which does link level fragmentation and reassembly.
Unfortunately, the header format (but also packet type number) is changed 
wrt. RFC 1051. My idea was to make the format switchable through the
link0 flag. 

I would like to keep the details of header coding out of the hardware
drivers as much as possible. So, I would 

- add a 

void arcfilter(struct mbuf *m)

to /sys/net/if_arcsubr.c, which would give the recoded (to 1051 format)
packet to the packetfilter input, if it was a "first" packet, and else
ignore it. The hardware drivers would no longer call the bpf stuff themselves.

However, one issue stays unresolved: The two types of headers have
different alignments. The hardware driver would have to switch alignment
if the flag is changed but this would work only for IP and IP-ARP.
Should the hardware driver look at the packet type itself before
deciding on the alignment? Should it ask a function (or an array) in
if_arcsubr for the preferable alignent? (Array would be 256 bytes). 

The question is not totally academic. The biggest installed and used
base of ARCnet nowadays is the Amiga, (using the old 1051 format, but
this is changeble if s.b. writes a new "SANA-2 driver" ... there is only
one kind of hardware). We would like to stay compatible with that, so
have to be switchable (I started the whole ARCnet business to be able to
play NetBSD on Amiga developer parties :-). The PC ARCnet users are:

hm... Novell (1201like coding for their own packets, also wrote an IP
packet driver which does 1201; and they developed the whole linklevel 
packet dis-/assembly stuff together with two other companies), IP over
ARCnet with another packet driver which does 1051, IP over ARCnet with 
KA9Q, which does 1051, as far as I looked at the code.

However, we could totally ignore other protocols over ARCnet, as none of
them is implemented in NetBSD, and just switch the alignment as we like
for IP.

What do you think? I'd prefer the array solution, if 256 bytes isn't too
much for that.

Feel free to forward this to tech-net, if you think this is so important.
Else drop me a line.

	Ignatios Souvatzis