xref: /openbmc/linux/Documentation/networking/arcnet.rst (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
108bab46fSMauro Carvalho Chehab.. SPDX-License-Identifier: GPL-2.0
208bab46fSMauro Carvalho Chehab
308bab46fSMauro Carvalho Chehab======
408bab46fSMauro Carvalho ChehabARCnet
508bab46fSMauro Carvalho Chehab======
608bab46fSMauro Carvalho Chehab
708bab46fSMauro Carvalho Chehab.. note::
808bab46fSMauro Carvalho Chehab
908bab46fSMauro Carvalho Chehab   See also arcnet-hardware.txt in this directory for jumper-setting
1008bab46fSMauro Carvalho Chehab   and cabling information if you're like many of us and didn't happen to get a
1108bab46fSMauro Carvalho Chehab   manual with your ARCnet card.
1208bab46fSMauro Carvalho Chehab
1308bab46fSMauro Carvalho ChehabSince no one seems to listen to me otherwise, perhaps a poem will get your
1408bab46fSMauro Carvalho Chehabattention::
1508bab46fSMauro Carvalho Chehab
1608bab46fSMauro Carvalho Chehab		This driver's getting fat and beefy,
1708bab46fSMauro Carvalho Chehab		But my cat is still named Fifi.
1808bab46fSMauro Carvalho Chehab
1908bab46fSMauro Carvalho ChehabHmm, I think I'm allowed to call that a poem, even though it's only two
2008bab46fSMauro Carvalho Chehablines.  Hey, I'm in Computer Science, not English.  Give me a break.
2108bab46fSMauro Carvalho Chehab
2208bab46fSMauro Carvalho ChehabThe point is:  I REALLY REALLY REALLY REALLY REALLY want to hear from you if
2308bab46fSMauro Carvalho Chehabyou test this and get it working.  Or if you don't.  Or anything.
2408bab46fSMauro Carvalho Chehab
2508bab46fSMauro Carvalho ChehabARCnet 0.32 ALPHA first made it into the Linux kernel 1.1.80 - this was
2608bab46fSMauro Carvalho Chehabnice, but after that even FEWER people started writing to me because they
2708bab46fSMauro Carvalho Chehabdidn't even have to install the patch.  <sigh>
2808bab46fSMauro Carvalho Chehab
2908bab46fSMauro Carvalho ChehabCome on, be a sport!  Send me a success report!
3008bab46fSMauro Carvalho Chehab
3108bab46fSMauro Carvalho Chehab(hey, that was even better than my original poem... this is getting bad!)
3208bab46fSMauro Carvalho Chehab
3308bab46fSMauro Carvalho Chehab
3408bab46fSMauro Carvalho Chehab.. warning::
3508bab46fSMauro Carvalho Chehab
3608bab46fSMauro Carvalho Chehab   If you don't e-mail me about your success/failure soon, I may be forced to
3708bab46fSMauro Carvalho Chehab   start SINGING.  And we don't want that, do we?
3808bab46fSMauro Carvalho Chehab
3908bab46fSMauro Carvalho Chehab   (You know, it might be argued that I'm pushing this point a little too much.
4008bab46fSMauro Carvalho Chehab   If you think so, why not flame me in a quick little e-mail?  Please also
4108bab46fSMauro Carvalho Chehab   include the type of card(s) you're using, software, size of network, and
4208bab46fSMauro Carvalho Chehab   whether it's working or not.)
4308bab46fSMauro Carvalho Chehab
4408bab46fSMauro Carvalho Chehab   My e-mail address is: apenwarr@worldvisions.ca
4508bab46fSMauro Carvalho Chehab
4608bab46fSMauro Carvalho ChehabThese are the ARCnet drivers for Linux.
4708bab46fSMauro Carvalho Chehab
4808bab46fSMauro Carvalho ChehabThis new release (2.91) has been put together by David Woodhouse
4908bab46fSMauro Carvalho Chehab<dwmw2@infradead.org>, in an attempt to tidy up the driver after adding support
5008bab46fSMauro Carvalho Chehabfor yet another chipset. Now the generic support has been separated from the
5108bab46fSMauro Carvalho Chehabindividual chipset drivers, and the source files aren't quite so packed with
5208bab46fSMauro Carvalho Chehab#ifdefs! I've changed this file a bit, but kept it in the first person from
5308bab46fSMauro Carvalho ChehabAvery, because I didn't want to completely rewrite it.
5408bab46fSMauro Carvalho Chehab
5508bab46fSMauro Carvalho ChehabThe previous release resulted from many months of on-and-off effort from me
5608bab46fSMauro Carvalho Chehab(Avery Pennarun), many bug reports/fixes and suggestions from others, and in
5708bab46fSMauro Carvalho Chehabparticular a lot of input and coding from Tomasz Motylewski.  Starting with
5808bab46fSMauro Carvalho ChehabARCnet 2.10 ALPHA, Tomasz's all-new-and-improved RFC1051 support has been
5908bab46fSMauro Carvalho Chehabincluded and seems to be working fine!
6008bab46fSMauro Carvalho Chehab
6108bab46fSMauro Carvalho Chehab
6208bab46fSMauro Carvalho ChehabWhere do I discuss these drivers?
6308bab46fSMauro Carvalho Chehab---------------------------------
6408bab46fSMauro Carvalho Chehab
6508bab46fSMauro Carvalho ChehabTomasz has been so kind as to set up a new and improved mailing list.
6608bab46fSMauro Carvalho ChehabSubscribe by sending a message with the BODY "subscribe linux-arcnet YOUR
6708bab46fSMauro Carvalho ChehabREAL NAME" to listserv@tichy.ch.uj.edu.pl.  Then, to submit messages to the
6808bab46fSMauro Carvalho Chehablist, mail to linux-arcnet@tichy.ch.uj.edu.pl.
6908bab46fSMauro Carvalho Chehab
7008bab46fSMauro Carvalho ChehabThere are archives of the mailing list at:
7108bab46fSMauro Carvalho Chehab
7208bab46fSMauro Carvalho Chehab	http://epistolary.org/mailman/listinfo.cgi/arcnet
7308bab46fSMauro Carvalho Chehab
7408bab46fSMauro Carvalho ChehabThe people on linux-net@vger.kernel.org (now defunct, replaced by
7508bab46fSMauro Carvalho Chehabnetdev@vger.kernel.org) have also been known to be very helpful, especially
7608bab46fSMauro Carvalho Chehabwhen we're talking about ALPHA Linux kernels that may or may not work right
7708bab46fSMauro Carvalho Chehabin the first place.
7808bab46fSMauro Carvalho Chehab
7908bab46fSMauro Carvalho Chehab
8008bab46fSMauro Carvalho ChehabOther Drivers and Info
8108bab46fSMauro Carvalho Chehab----------------------
8208bab46fSMauro Carvalho Chehab
8308bab46fSMauro Carvalho ChehabYou can try my ARCNET page on the World Wide Web at:
8408bab46fSMauro Carvalho Chehab
8508bab46fSMauro Carvalho Chehab	http://www.qis.net/~jschmitz/arcnet/
8608bab46fSMauro Carvalho Chehab
8708bab46fSMauro Carvalho ChehabAlso, SMC (one of the companies that makes ARCnet cards) has a WWW site you
8808bab46fSMauro Carvalho Chehabmight be interested in, which includes several drivers for various cards
8908bab46fSMauro Carvalho Chehabincluding ARCnet.  Try:
9008bab46fSMauro Carvalho Chehab
9108bab46fSMauro Carvalho Chehab	http://www.smc.com/
9208bab46fSMauro Carvalho Chehab
9308bab46fSMauro Carvalho ChehabPerformance Technologies makes various network software that supports
9408bab46fSMauro Carvalho ChehabARCnet:
9508bab46fSMauro Carvalho Chehab
9608bab46fSMauro Carvalho Chehab	http://www.perftech.com/ or ftp to ftp.perftech.com.
9708bab46fSMauro Carvalho Chehab
9808bab46fSMauro Carvalho ChehabNovell makes a networking stack for DOS which includes ARCnet drivers.  Try
9908bab46fSMauro Carvalho ChehabFTPing to ftp.novell.com.
10008bab46fSMauro Carvalho Chehab
10108bab46fSMauro Carvalho ChehabYou can get the Crynwr packet driver collection (including arcether.com, the
10208bab46fSMauro Carvalho Chehabone you'll want to use with ARCnet cards) from
10308bab46fSMauro Carvalho Chehaboak.oakland.edu:/simtel/msdos/pktdrvr. It won't work perfectly on a 386+
10408bab46fSMauro Carvalho Chehabwithout patches, though, and also doesn't like several cards.  Fixed
10508bab46fSMauro Carvalho Chehabversions are available on my WWW page, or via e-mail if you don't have WWW
10608bab46fSMauro Carvalho Chehabaccess.
10708bab46fSMauro Carvalho Chehab
10808bab46fSMauro Carvalho Chehab
10908bab46fSMauro Carvalho ChehabInstalling the Driver
11008bab46fSMauro Carvalho Chehab---------------------
11108bab46fSMauro Carvalho Chehab
11208bab46fSMauro Carvalho ChehabAll you will need to do in order to install the driver is::
11308bab46fSMauro Carvalho Chehab
11408bab46fSMauro Carvalho Chehab	make config
11508bab46fSMauro Carvalho Chehab		(be sure to choose ARCnet in the network devices
11608bab46fSMauro Carvalho Chehab		and at least one chipset driver.)
11708bab46fSMauro Carvalho Chehab	make clean
11808bab46fSMauro Carvalho Chehab	make zImage
11908bab46fSMauro Carvalho Chehab
12008bab46fSMauro Carvalho ChehabIf you obtained this ARCnet package as an upgrade to the ARCnet driver in
12108bab46fSMauro Carvalho Chehabyour current kernel, you will need to first copy arcnet.c over the one in
12208bab46fSMauro Carvalho Chehabthe linux/drivers/net directory.
12308bab46fSMauro Carvalho Chehab
12408bab46fSMauro Carvalho ChehabYou will know the driver is installed properly if you get some ARCnet
12508bab46fSMauro Carvalho Chehabmessages when you reboot into the new Linux kernel.
12608bab46fSMauro Carvalho Chehab
12708bab46fSMauro Carvalho ChehabThere are four chipset options:
12808bab46fSMauro Carvalho Chehab
12908bab46fSMauro Carvalho Chehab 1. Standard ARCnet COM90xx chipset.
13008bab46fSMauro Carvalho Chehab
13108bab46fSMauro Carvalho ChehabThis is the normal ARCnet card, which you've probably got. This is the only
13208bab46fSMauro Carvalho Chehabchipset driver which will autoprobe if not told where the card is.
13308bab46fSMauro Carvalho ChehabIt following options on the command line::
13408bab46fSMauro Carvalho Chehab
13508bab46fSMauro Carvalho Chehab com90xx=[<io>[,<irq>[,<shmem>]]][,<name>] | <name>
13608bab46fSMauro Carvalho Chehab
13708bab46fSMauro Carvalho ChehabIf you load the chipset support as a module, the options are::
13808bab46fSMauro Carvalho Chehab
13908bab46fSMauro Carvalho Chehab io=<io> irq=<irq> shmem=<shmem> device=<name>
14008bab46fSMauro Carvalho Chehab
14108bab46fSMauro Carvalho ChehabTo disable the autoprobe, just specify "com90xx=" on the kernel command line.
14208bab46fSMauro Carvalho ChehabTo specify the name alone, but allow autoprobe, just put "com90xx=<name>"
14308bab46fSMauro Carvalho Chehab
14408bab46fSMauro Carvalho Chehab 2. ARCnet COM20020 chipset.
14508bab46fSMauro Carvalho Chehab
14608bab46fSMauro Carvalho ChehabThis is the new chipset from SMC with support for promiscuous mode (packet
14708bab46fSMauro Carvalho Chehabsniffing), extra diagnostic information, etc. Unfortunately, there is no
14808bab46fSMauro Carvalho Chehabsensible method of autoprobing for these cards. You must specify the I/O
14908bab46fSMauro Carvalho Chehabaddress on the kernel command line.
15008bab46fSMauro Carvalho Chehab
15108bab46fSMauro Carvalho ChehabThe command line options are::
15208bab46fSMauro Carvalho Chehab
15308bab46fSMauro Carvalho Chehab com20020=<io>[,<irq>[,<node_ID>[,backplane[,CKP[,timeout]]]]][,name]
15408bab46fSMauro Carvalho Chehab
15508bab46fSMauro Carvalho ChehabIf you load the chipset support as a module, the options are::
15608bab46fSMauro Carvalho Chehab
15708bab46fSMauro Carvalho Chehab io=<io> irq=<irq> node=<node_ID> backplane=<backplane> clock=<CKP>
15808bab46fSMauro Carvalho Chehab timeout=<timeout> device=<name>
15908bab46fSMauro Carvalho Chehab
16008bab46fSMauro Carvalho ChehabThe COM20020 chipset allows you to set the node ID in software, overriding the
16108bab46fSMauro Carvalho Chehabdefault which is still set in DIP switches on the card. If you don't have the
16208bab46fSMauro Carvalho ChehabCOM20020 data sheets, and you don't know what the other three options refer
16308bab46fSMauro Carvalho Chehabto, then they won't interest you - forget them.
16408bab46fSMauro Carvalho Chehab
16508bab46fSMauro Carvalho Chehab 3. ARCnet COM90xx chipset in IO-mapped mode.
16608bab46fSMauro Carvalho Chehab
16708bab46fSMauro Carvalho ChehabThis will also work with the normal ARCnet cards, but doesn't use the shared
16808bab46fSMauro Carvalho Chehabmemory. It performs less well than the above driver, but is provided in case
16908bab46fSMauro Carvalho Chehabyou have a card which doesn't support shared memory, or (strangely) in case
17008bab46fSMauro Carvalho Chehabyou have so many ARCnet cards in your machine that you run out of shmem slots.
17108bab46fSMauro Carvalho ChehabIf you don't give the IO address on the kernel command line, then the driver
17208bab46fSMauro Carvalho Chehabwill not find the card.
17308bab46fSMauro Carvalho Chehab
17408bab46fSMauro Carvalho ChehabThe command line options are::
17508bab46fSMauro Carvalho Chehab
17608bab46fSMauro Carvalho Chehab com90io=<io>[,<irq>][,<name>]
17708bab46fSMauro Carvalho Chehab
17808bab46fSMauro Carvalho ChehabIf you load the chipset support as a module, the options are:
17908bab46fSMauro Carvalho Chehab io=<io> irq=<irq> device=<name>
18008bab46fSMauro Carvalho Chehab
18108bab46fSMauro Carvalho Chehab 4. ARCnet RIM I cards.
18208bab46fSMauro Carvalho Chehab
18308bab46fSMauro Carvalho ChehabThese are COM90xx chips which are _completely_ memory mapped. The support for
18408bab46fSMauro Carvalho Chehabthese is not tested. If you have one, please mail the author with a success
18508bab46fSMauro Carvalho Chehabreport. All options must be specified, except the device name.
18608bab46fSMauro Carvalho ChehabCommand line options::
18708bab46fSMauro Carvalho Chehab
18808bab46fSMauro Carvalho Chehab arcrimi=<shmem>,<irq>,<node_ID>[,<name>]
18908bab46fSMauro Carvalho Chehab
19008bab46fSMauro Carvalho ChehabIf you load the chipset support as a module, the options are::
19108bab46fSMauro Carvalho Chehab
19208bab46fSMauro Carvalho Chehab shmem=<shmem> irq=<irq> node=<node_ID> device=<name>
19308bab46fSMauro Carvalho Chehab
19408bab46fSMauro Carvalho Chehab
19508bab46fSMauro Carvalho ChehabLoadable Module Support
19608bab46fSMauro Carvalho Chehab-----------------------
19708bab46fSMauro Carvalho Chehab
19808bab46fSMauro Carvalho ChehabConfigure and rebuild Linux.  When asked, answer 'm' to "Generic ARCnet
19908bab46fSMauro Carvalho Chehabsupport" and to support for your ARCnet chipset if you want to use the
20008bab46fSMauro Carvalho Chehabloadable module. You can also say 'y' to "Generic ARCnet support" and 'm'
20108bab46fSMauro Carvalho Chehabto the chipset support if you wish.
20208bab46fSMauro Carvalho Chehab
20308bab46fSMauro Carvalho Chehab::
20408bab46fSMauro Carvalho Chehab
20508bab46fSMauro Carvalho Chehab	make config
20608bab46fSMauro Carvalho Chehab	make clean
20708bab46fSMauro Carvalho Chehab	make zImage
20808bab46fSMauro Carvalho Chehab	make modules
20908bab46fSMauro Carvalho Chehab
21008bab46fSMauro Carvalho ChehabIf you're using a loadable module, you need to use insmod to load it, and
21108bab46fSMauro Carvalho Chehabyou can specify various characteristics of your card on the command
21208bab46fSMauro Carvalho Chehabline.  (In recent versions of the driver, autoprobing is much more reliable
21308bab46fSMauro Carvalho Chehaband works as a module, so most of this is now unnecessary.)
21408bab46fSMauro Carvalho Chehab
21508bab46fSMauro Carvalho ChehabFor example::
21608bab46fSMauro Carvalho Chehab
21708bab46fSMauro Carvalho Chehab	cd /usr/src/linux/modules
21808bab46fSMauro Carvalho Chehab	insmod arcnet.o
21908bab46fSMauro Carvalho Chehab	insmod com90xx.o
22008bab46fSMauro Carvalho Chehab	insmod com20020.o io=0x2e0 device=eth1
22108bab46fSMauro Carvalho Chehab
22208bab46fSMauro Carvalho Chehab
22308bab46fSMauro Carvalho ChehabUsing the Driver
22408bab46fSMauro Carvalho Chehab----------------
22508bab46fSMauro Carvalho Chehab
22608bab46fSMauro Carvalho ChehabIf you build your kernel with ARCnet COM90xx support included, it should
22708bab46fSMauro Carvalho Chehabprobe for your card automatically when you boot. If you use a different
22808bab46fSMauro Carvalho Chehabchipset driver complied into the kernel, you must give the necessary options
22908bab46fSMauro Carvalho Chehabon the kernel command line, as detailed above.
23008bab46fSMauro Carvalho Chehab
23108bab46fSMauro Carvalho ChehabGo read the NET-2-HOWTO and ETHERNET-HOWTO for Linux; they should be
23208bab46fSMauro Carvalho Chehabavailable where you picked up this driver.  Think of your ARCnet as a
23308bab46fSMauro Carvalho Chehabsouped-up (or down, as the case may be) Ethernet card.
23408bab46fSMauro Carvalho Chehab
23508bab46fSMauro Carvalho ChehabBy the way, be sure to change all references from "eth0" to "arc0" in the
23608bab46fSMauro Carvalho ChehabHOWTOs.  Remember that ARCnet isn't a "true" Ethernet, and the device name
23708bab46fSMauro Carvalho Chehabis DIFFERENT.
23808bab46fSMauro Carvalho Chehab
23908bab46fSMauro Carvalho Chehab
24008bab46fSMauro Carvalho ChehabMultiple Cards in One Computer
24108bab46fSMauro Carvalho Chehab------------------------------
24208bab46fSMauro Carvalho Chehab
24308bab46fSMauro Carvalho ChehabLinux has pretty good support for this now, but since I've been busy, the
24408bab46fSMauro Carvalho ChehabARCnet driver has somewhat suffered in this respect. COM90xx support, if
24508bab46fSMauro Carvalho Chehabcompiled into the kernel, will (try to) autodetect all the installed cards.
24608bab46fSMauro Carvalho Chehab
24708bab46fSMauro Carvalho ChehabIf you have other cards, with support compiled into the kernel, then you can
24808bab46fSMauro Carvalho Chehabjust repeat the options on the kernel command line, e.g.::
24908bab46fSMauro Carvalho Chehab
25008bab46fSMauro Carvalho Chehab	LILO: linux com20020=0x2e0 com20020=0x380 com90io=0x260
25108bab46fSMauro Carvalho Chehab
25208bab46fSMauro Carvalho ChehabIf you have the chipset support built as a loadable module, then you need to
25308bab46fSMauro Carvalho Chehabdo something like this::
25408bab46fSMauro Carvalho Chehab
25508bab46fSMauro Carvalho Chehab	insmod -o arc0 com90xx
25608bab46fSMauro Carvalho Chehab	insmod -o arc1 com20020 io=0x2e0
25708bab46fSMauro Carvalho Chehab	insmod -o arc2 com90xx
25808bab46fSMauro Carvalho Chehab
25908bab46fSMauro Carvalho ChehabThe ARCnet drivers will now sort out their names automatically.
26008bab46fSMauro Carvalho Chehab
26108bab46fSMauro Carvalho Chehab
26208bab46fSMauro Carvalho ChehabHow do I get it to work with...?
26308bab46fSMauro Carvalho Chehab--------------------------------
26408bab46fSMauro Carvalho Chehab
26508bab46fSMauro Carvalho ChehabNFS:
26608bab46fSMauro Carvalho Chehab	Should be fine linux->linux, just pretend you're using Ethernet cards.
26708bab46fSMauro Carvalho Chehab	oak.oakland.edu:/simtel/msdos/nfs has some nice DOS clients.  There
26808bab46fSMauro Carvalho Chehab	is also a DOS-based NFS server called SOSS.  It doesn't multitask
26908bab46fSMauro Carvalho Chehab	quite the way Linux does (actually, it doesn't multitask AT ALL) but
27008bab46fSMauro Carvalho Chehab	you never know what you might need.
27108bab46fSMauro Carvalho Chehab
27208bab46fSMauro Carvalho Chehab	With AmiTCP (and possibly others), you may need to set the following
27308bab46fSMauro Carvalho Chehab	options in your Amiga nfstab:  MD 1024 MR 1024 MW 1024
27408bab46fSMauro Carvalho Chehab	(Thanks to Christian Gottschling <ferksy@indigo.tng.oche.de>
27508bab46fSMauro Carvalho Chehab	for this.)
27608bab46fSMauro Carvalho Chehab
27708bab46fSMauro Carvalho Chehab	Probably these refer to maximum NFS data/read/write block sizes.  I
27808bab46fSMauro Carvalho Chehab	don't know why the defaults on the Amiga didn't work; write to me if
27908bab46fSMauro Carvalho Chehab	you know more.
28008bab46fSMauro Carvalho Chehab
28108bab46fSMauro Carvalho ChehabDOS:
28208bab46fSMauro Carvalho Chehab	If you're using the freeware arcether.com, you might want to install
28308bab46fSMauro Carvalho Chehab	the driver patch from my web page.  It helps with PC/TCP, and also
28408bab46fSMauro Carvalho Chehab	can get arcether to load if it timed out too quickly during
28508bab46fSMauro Carvalho Chehab	initialization.  In fact, if you use it on a 386+ you REALLY need
28608bab46fSMauro Carvalho Chehab	the patch, really.
28708bab46fSMauro Carvalho Chehab
28808bab46fSMauro Carvalho ChehabWindows:
28908bab46fSMauro Carvalho Chehab	See DOS :)  Trumpet Winsock works fine with either the Novell or
29008bab46fSMauro Carvalho Chehab	Arcether client, assuming you remember to load winpkt of course.
29108bab46fSMauro Carvalho Chehab
29208bab46fSMauro Carvalho ChehabLAN Manager and Windows for Workgroups:
29308bab46fSMauro Carvalho Chehab	These programs use protocols that
29408bab46fSMauro Carvalho Chehab	are incompatible with the Internet standard.  They try to pretend
29508bab46fSMauro Carvalho Chehab	the cards are Ethernet, and confuse everyone else on the network.
29608bab46fSMauro Carvalho Chehab
29708bab46fSMauro Carvalho Chehab	However, v2.00 and higher of the Linux ARCnet driver supports this
29808bab46fSMauro Carvalho Chehab	protocol via the 'arc0e' device.  See the section on "Multiprotocol
29908bab46fSMauro Carvalho Chehab	Support" for more information.
30008bab46fSMauro Carvalho Chehab
30108bab46fSMauro Carvalho Chehab	Using the freeware Samba server and clients for Linux, you can now
30208bab46fSMauro Carvalho Chehab	interface quite nicely with TCP/IP-based WfWg or Lan Manager
30308bab46fSMauro Carvalho Chehab	networks.
30408bab46fSMauro Carvalho Chehab
30508bab46fSMauro Carvalho ChehabWindows 95:
30608bab46fSMauro Carvalho Chehab	Tools are included with Win95 that let you use either the LANMAN
30708bab46fSMauro Carvalho Chehab	style network drivers (NDIS) or Novell drivers (ODI) to handle your
30808bab46fSMauro Carvalho Chehab	ARCnet packets.  If you use ODI, you'll need to use the 'arc0'
30908bab46fSMauro Carvalho Chehab	device with Linux.  If you use NDIS, then try the 'arc0e' device.
31008bab46fSMauro Carvalho Chehab	See the "Multiprotocol Support" section below if you need arc0e,
31108bab46fSMauro Carvalho Chehab	you're completely insane, and/or you need to build some kind of
31208bab46fSMauro Carvalho Chehab	hybrid network that uses both encapsulation types.
31308bab46fSMauro Carvalho Chehab
31408bab46fSMauro Carvalho ChehabOS/2:
31508bab46fSMauro Carvalho Chehab	I've been told it works under Warp Connect with an ARCnet driver from
31608bab46fSMauro Carvalho Chehab	SMC.  You need to use the 'arc0e' interface for this.  If you get
31708bab46fSMauro Carvalho Chehab	the SMC driver to work with the TCP/IP stuff included in the
31808bab46fSMauro Carvalho Chehab	"normal" Warp Bonus Pack, let me know.
31908bab46fSMauro Carvalho Chehab
32008bab46fSMauro Carvalho Chehab	ftp.microsoft.com also has a freeware "Lan Manager for OS/2" client
32108bab46fSMauro Carvalho Chehab	which should use the same protocol as WfWg does.  I had no luck
32208bab46fSMauro Carvalho Chehab	installing it under Warp, however.  Please mail me with any results.
32308bab46fSMauro Carvalho Chehab
32408bab46fSMauro Carvalho ChehabNetBSD/AmiTCP:
32508bab46fSMauro Carvalho Chehab	These use an old version of the Internet standard ARCnet
32608bab46fSMauro Carvalho Chehab	protocol (RFC1051) which is compatible with the Linux driver v2.10
32708bab46fSMauro Carvalho Chehab	ALPHA and above using the arc0s device. (See "Multiprotocol ARCnet"
32808bab46fSMauro Carvalho Chehab	below.)  ** Newer versions of NetBSD apparently support RFC1201.
32908bab46fSMauro Carvalho Chehab
33008bab46fSMauro Carvalho Chehab
33108bab46fSMauro Carvalho ChehabUsing Multiprotocol ARCnet
33208bab46fSMauro Carvalho Chehab--------------------------
33308bab46fSMauro Carvalho Chehab
33408bab46fSMauro Carvalho ChehabThe ARCnet driver v2.10 ALPHA supports three protocols, each on its own
33508bab46fSMauro Carvalho Chehab"virtual network device":
33608bab46fSMauro Carvalho Chehab
33708bab46fSMauro Carvalho Chehab	======  ===============================================================
33808bab46fSMauro Carvalho Chehab	arc0	RFC1201 protocol, the official Internet standard which just
33908bab46fSMauro Carvalho Chehab		happens to be 100% compatible with Novell's TRXNET driver.
34008bab46fSMauro Carvalho Chehab		Version 1.00 of the ARCnet driver supported _only_ this
34108bab46fSMauro Carvalho Chehab		protocol.  arc0 is the fastest of the three protocols (for
34208bab46fSMauro Carvalho Chehab		whatever reason), and allows larger packets to be used
34308bab46fSMauro Carvalho Chehab		because it supports RFC1201 "packet splitting" operations.
34408bab46fSMauro Carvalho Chehab		Unless you have a specific need to use a different protocol,
34508bab46fSMauro Carvalho Chehab		I strongly suggest that you stick with this one.
34608bab46fSMauro Carvalho Chehab
34708bab46fSMauro Carvalho Chehab	arc0e	"Ethernet-Encapsulation" which sends packets over ARCnet
34808bab46fSMauro Carvalho Chehab		that are actually a lot like Ethernet packets, including the
34908bab46fSMauro Carvalho Chehab		6-byte hardware addresses.  This protocol is compatible with
35008bab46fSMauro Carvalho Chehab		Microsoft's NDIS ARCnet driver, like the one in WfWg and
35108bab46fSMauro Carvalho Chehab		LANMAN.  Because the MTU of 493 is actually smaller than the
35208bab46fSMauro Carvalho Chehab		one "required" by TCP/IP (576), there is a chance that some
35308bab46fSMauro Carvalho Chehab		network operations will not function properly.  The Linux
35408bab46fSMauro Carvalho Chehab		TCP/IP layer can compensate in most cases, however, by
35508bab46fSMauro Carvalho Chehab		automatically fragmenting the TCP/IP packets to make them
35608bab46fSMauro Carvalho Chehab		fit.  arc0e also works slightly more slowly than arc0, for
35708bab46fSMauro Carvalho Chehab		reasons yet to be determined.  (Probably it's the smaller
35808bab46fSMauro Carvalho Chehab		MTU that does it.)
35908bab46fSMauro Carvalho Chehab
36008bab46fSMauro Carvalho Chehab	arc0s	The "[s]imple" RFC1051 protocol is the "previous" Internet
36108bab46fSMauro Carvalho Chehab		standard that is completely incompatible with the new
36208bab46fSMauro Carvalho Chehab		standard.  Some software today, however, continues to
36308bab46fSMauro Carvalho Chehab		support the old standard (and only the old standard)
36408bab46fSMauro Carvalho Chehab		including NetBSD and AmiTCP.  RFC1051 also does not support
36508bab46fSMauro Carvalho Chehab		RFC1201's packet splitting, and the MTU of 507 is still
36608bab46fSMauro Carvalho Chehab		smaller than the Internet "requirement," so it's quite
36708bab46fSMauro Carvalho Chehab		possible that you may run into problems.  It's also slower
36808bab46fSMauro Carvalho Chehab		than RFC1201 by about 25%, for the same reason as arc0e.
36908bab46fSMauro Carvalho Chehab
37008bab46fSMauro Carvalho Chehab		The arc0s support was contributed by Tomasz Motylewski
37108bab46fSMauro Carvalho Chehab		and modified somewhat by me.  Bugs are probably my fault.
37208bab46fSMauro Carvalho Chehab	======  ===============================================================
37308bab46fSMauro Carvalho Chehab
37408bab46fSMauro Carvalho ChehabYou can choose not to compile arc0e and arc0s into the driver if you want -
37508bab46fSMauro Carvalho Chehabthis will save you a bit of memory and avoid confusion when eg. trying to
37608bab46fSMauro Carvalho Chehabuse the "NFS-root" stuff in recent Linux kernels.
37708bab46fSMauro Carvalho Chehab
37808bab46fSMauro Carvalho ChehabThe arc0e and arc0s devices are created automatically when you first
37908bab46fSMauro Carvalho Chehabifconfig the arc0 device.  To actually use them, though, you need to also
38008bab46fSMauro Carvalho Chehabifconfig the other virtual devices you need.  There are a number of ways you
38108bab46fSMauro Carvalho Chehabcan set up your network then:
38208bab46fSMauro Carvalho Chehab
38308bab46fSMauro Carvalho Chehab
38408bab46fSMauro Carvalho Chehab1. Single Protocol.
38508bab46fSMauro Carvalho Chehab
38608bab46fSMauro Carvalho Chehab   This is the simplest way to configure your network: use just one of the
38708bab46fSMauro Carvalho Chehab   two available protocols.  As mentioned above, it's a good idea to use
38808bab46fSMauro Carvalho Chehab   only arc0 unless you have a good reason (like some other software, ie.
38908bab46fSMauro Carvalho Chehab   WfWg, that only works with arc0e).
39008bab46fSMauro Carvalho Chehab
39108bab46fSMauro Carvalho Chehab   If you need only arc0, then the following commands should get you going::
39208bab46fSMauro Carvalho Chehab
39308bab46fSMauro Carvalho Chehab	ifconfig arc0 MY.IP.ADD.RESS
39408bab46fSMauro Carvalho Chehab	route add MY.IP.ADD.RESS arc0
39508bab46fSMauro Carvalho Chehab	route add -net SUB.NET.ADD.RESS arc0
39608bab46fSMauro Carvalho Chehab	[add other local routes here]
39708bab46fSMauro Carvalho Chehab
39808bab46fSMauro Carvalho Chehab   If you need arc0e (and only arc0e), it's a little different::
39908bab46fSMauro Carvalho Chehab
40008bab46fSMauro Carvalho Chehab	ifconfig arc0 MY.IP.ADD.RESS
40108bab46fSMauro Carvalho Chehab	ifconfig arc0e MY.IP.ADD.RESS
40208bab46fSMauro Carvalho Chehab	route add MY.IP.ADD.RESS arc0e
40308bab46fSMauro Carvalho Chehab	route add -net SUB.NET.ADD.RESS arc0e
40408bab46fSMauro Carvalho Chehab
40508bab46fSMauro Carvalho Chehab   arc0s works much the same way as arc0e.
40608bab46fSMauro Carvalho Chehab
40708bab46fSMauro Carvalho Chehab
40808bab46fSMauro Carvalho Chehab2. More than one protocol on the same wire.
40908bab46fSMauro Carvalho Chehab
41008bab46fSMauro Carvalho Chehab   Now things start getting confusing.  To even try it, you may need to be
41108bab46fSMauro Carvalho Chehab   partly crazy.  Here's what *I* did. :) Note that I don't include arc0s in
41208bab46fSMauro Carvalho Chehab   my home network; I don't have any NetBSD or AmiTCP computers, so I only
41308bab46fSMauro Carvalho Chehab   use arc0s during limited testing.
41408bab46fSMauro Carvalho Chehab
41508bab46fSMauro Carvalho Chehab   I have three computers on my home network; two Linux boxes (which prefer
41608bab46fSMauro Carvalho Chehab   RFC1201 protocol, for reasons listed above), and one XT that can't run
41708bab46fSMauro Carvalho Chehab   Linux but runs the free Microsoft LANMAN Client instead.
41808bab46fSMauro Carvalho Chehab
41908bab46fSMauro Carvalho Chehab   Worse, one of the Linux computers (freedom) also has a modem and acts as
42008bab46fSMauro Carvalho Chehab   a router to my Internet provider.  The other Linux box (insight) also has
42108bab46fSMauro Carvalho Chehab   its own IP address and needs to use freedom as its default gateway.  The
42208bab46fSMauro Carvalho Chehab   XT (patience), however, does not have its own Internet IP address and so
42308bab46fSMauro Carvalho Chehab   I assigned it one on a "private subnet" (as defined by RFC1597).
42408bab46fSMauro Carvalho Chehab
42508bab46fSMauro Carvalho Chehab   To start with, take a simple network with just insight and freedom.
42608bab46fSMauro Carvalho Chehab   Insight needs to:
42708bab46fSMauro Carvalho Chehab
42808bab46fSMauro Carvalho Chehab	- talk to freedom via RFC1201 (arc0) protocol, because I like it
42908bab46fSMauro Carvalho Chehab	  more and it's faster.
43008bab46fSMauro Carvalho Chehab	- use freedom as its Internet gateway.
43108bab46fSMauro Carvalho Chehab
43208bab46fSMauro Carvalho Chehab   That's pretty easy to do.  Set up insight like this::
43308bab46fSMauro Carvalho Chehab
43408bab46fSMauro Carvalho Chehab	ifconfig arc0 insight
43508bab46fSMauro Carvalho Chehab	route add insight arc0
43608bab46fSMauro Carvalho Chehab	route add freedom arc0	/* I would use the subnet here (like I said
437*caebecb0SRandy Dunlap					to in "single protocol" above),
43808bab46fSMauro Carvalho Chehab					but the rest of the subnet
43908bab46fSMauro Carvalho Chehab					unfortunately lies across the PPP
44008bab46fSMauro Carvalho Chehab					link on freedom, which confuses
44108bab46fSMauro Carvalho Chehab					things. */
44208bab46fSMauro Carvalho Chehab	route add default gw freedom
44308bab46fSMauro Carvalho Chehab
44408bab46fSMauro Carvalho Chehab   And freedom gets configured like so::
44508bab46fSMauro Carvalho Chehab
44608bab46fSMauro Carvalho Chehab	ifconfig arc0 freedom
44708bab46fSMauro Carvalho Chehab	route add freedom arc0
44808bab46fSMauro Carvalho Chehab	route add insight arc0
44908bab46fSMauro Carvalho Chehab	/* and default gateway is configured by pppd */
45008bab46fSMauro Carvalho Chehab
45108bab46fSMauro Carvalho Chehab   Great, now insight talks to freedom directly on arc0, and sends packets
45208bab46fSMauro Carvalho Chehab   to the Internet through freedom.  If you didn't know how to do the above,
45308bab46fSMauro Carvalho Chehab   you should probably stop reading this section now because it only gets
45408bab46fSMauro Carvalho Chehab   worse.
45508bab46fSMauro Carvalho Chehab
45608bab46fSMauro Carvalho Chehab   Now, how do I add patience into the network?  It will be using LANMAN
45708bab46fSMauro Carvalho Chehab   Client, which means I need the arc0e device.  It needs to be able to talk
45808bab46fSMauro Carvalho Chehab   to both insight and freedom, and also use freedom as a gateway to the
45908bab46fSMauro Carvalho Chehab   Internet.  (Recall that patience has a "private IP address" which won't
46008bab46fSMauro Carvalho Chehab   work on the Internet; that's okay, I configured Linux IP masquerading on
46108bab46fSMauro Carvalho Chehab   freedom for this subnet).
46208bab46fSMauro Carvalho Chehab
46308bab46fSMauro Carvalho Chehab   So patience (necessarily; I don't have another IP number from my
46408bab46fSMauro Carvalho Chehab   provider) has an IP address on a different subnet than freedom and
46508bab46fSMauro Carvalho Chehab   insight, but needs to use freedom as an Internet gateway.  Worse, most
46608bab46fSMauro Carvalho Chehab   DOS networking programs, including LANMAN, have braindead networking
46708bab46fSMauro Carvalho Chehab   schemes that rely completely on the netmask and a 'default gateway' to
46808bab46fSMauro Carvalho Chehab   determine how to route packets.  This means that to get to freedom or
46908bab46fSMauro Carvalho Chehab   insight, patience WILL send through its default gateway, regardless of
47008bab46fSMauro Carvalho Chehab   the fact that both freedom and insight (courtesy of the arc0e device)
47108bab46fSMauro Carvalho Chehab   could understand a direct transmission.
47208bab46fSMauro Carvalho Chehab
47308bab46fSMauro Carvalho Chehab   I compensate by giving freedom an extra IP address - aliased 'gatekeeper' -
47408bab46fSMauro Carvalho Chehab   that is on my private subnet, the same subnet that patience is on.  I
47508bab46fSMauro Carvalho Chehab   then define gatekeeper to be the default gateway for patience.
47608bab46fSMauro Carvalho Chehab
47708bab46fSMauro Carvalho Chehab   To configure freedom (in addition to the commands above)::
47808bab46fSMauro Carvalho Chehab
47908bab46fSMauro Carvalho Chehab	ifconfig arc0e gatekeeper
48008bab46fSMauro Carvalho Chehab	route add gatekeeper arc0e
48108bab46fSMauro Carvalho Chehab	route add patience arc0e
48208bab46fSMauro Carvalho Chehab
48308bab46fSMauro Carvalho Chehab   This way, freedom will send all packets for patience through arc0e,
48408bab46fSMauro Carvalho Chehab   giving its IP address as gatekeeper (on the private subnet).  When it
48508bab46fSMauro Carvalho Chehab   talks to insight or the Internet, it will use its "freedom" Internet IP
48608bab46fSMauro Carvalho Chehab   address.
48708bab46fSMauro Carvalho Chehab
48808bab46fSMauro Carvalho Chehab   You will notice that we haven't configured the arc0e device on insight.
48908bab46fSMauro Carvalho Chehab   This would work, but is not really necessary, and would require me to
49008bab46fSMauro Carvalho Chehab   assign insight another special IP number from my private subnet.  Since
49108bab46fSMauro Carvalho Chehab   both insight and patience are using freedom as their default gateway, the
49208bab46fSMauro Carvalho Chehab   two can already talk to each other.
49308bab46fSMauro Carvalho Chehab
49408bab46fSMauro Carvalho Chehab   It's quite fortunate that I set things up like this the first time (cough
49508bab46fSMauro Carvalho Chehab   cough) because it's really handy when I boot insight into DOS.  There, it
49608bab46fSMauro Carvalho Chehab   runs the Novell ODI protocol stack, which only works with RFC1201 ARCnet.
49708bab46fSMauro Carvalho Chehab   In this mode it would be impossible for insight to communicate directly
49808bab46fSMauro Carvalho Chehab   with patience, since the Novell stack is incompatible with Microsoft's
49908bab46fSMauro Carvalho Chehab   Ethernet-Encap.  Without changing any settings on freedom or patience, I
50008bab46fSMauro Carvalho Chehab   simply set freedom as the default gateway for insight (now in DOS,
50108bab46fSMauro Carvalho Chehab   remember) and all the forwarding happens "automagically" between the two
50208bab46fSMauro Carvalho Chehab   hosts that would normally not be able to communicate at all.
50308bab46fSMauro Carvalho Chehab
50408bab46fSMauro Carvalho Chehab   For those who like diagrams, I have created two "virtual subnets" on the
50508bab46fSMauro Carvalho Chehab   same physical ARCnet wire.  You can picture it like this::
50608bab46fSMauro Carvalho Chehab
50708bab46fSMauro Carvalho Chehab
50808bab46fSMauro Carvalho Chehab	  [RFC1201 NETWORK]                   [ETHER-ENCAP NETWORK]
50908bab46fSMauro Carvalho Chehab      (registered Internet subnet)           (RFC1597 private subnet)
51008bab46fSMauro Carvalho Chehab
51108bab46fSMauro Carvalho Chehab			     (IP Masquerade)
51208bab46fSMauro Carvalho Chehab	  /---------------\         *            /---------------\
51308bab46fSMauro Carvalho Chehab	  |               |         *            |               |
51408bab46fSMauro Carvalho Chehab	  |               +-Freedom-*-Gatekeeper-+               |
51508bab46fSMauro Carvalho Chehab	  |               |    |    *            |               |
51608bab46fSMauro Carvalho Chehab	  \-------+-------/    |    *            \-------+-------/
51708bab46fSMauro Carvalho Chehab		  |            |                         |
51808bab46fSMauro Carvalho Chehab	       Insight         |                      Patience
51908bab46fSMauro Carvalho Chehab			   (Internet)
52008bab46fSMauro Carvalho Chehab
52108bab46fSMauro Carvalho Chehab
52208bab46fSMauro Carvalho Chehab
52308bab46fSMauro Carvalho ChehabIt works: what now?
52408bab46fSMauro Carvalho Chehab-------------------
52508bab46fSMauro Carvalho Chehab
52608bab46fSMauro Carvalho ChehabSend mail describing your setup, preferably including driver version, kernel
52708bab46fSMauro Carvalho Chehabversion, ARCnet card model, CPU type, number of systems on your network, and
52808bab46fSMauro Carvalho Chehablist of software in use to me at the following address:
52908bab46fSMauro Carvalho Chehab
53008bab46fSMauro Carvalho Chehab	apenwarr@worldvisions.ca
53108bab46fSMauro Carvalho Chehab
53208bab46fSMauro Carvalho ChehabI do send (sometimes automated) replies to all messages I receive.  My email
53308bab46fSMauro Carvalho Chehabcan be weird (and also usually gets forwarded all over the place along the
53408bab46fSMauro Carvalho Chehabway to me), so if you don't get a reply within a reasonable time, please
53508bab46fSMauro Carvalho Chehabresend.
53608bab46fSMauro Carvalho Chehab
53708bab46fSMauro Carvalho Chehab
53808bab46fSMauro Carvalho ChehabIt doesn't work: what now?
53908bab46fSMauro Carvalho Chehab--------------------------
54008bab46fSMauro Carvalho Chehab
54108bab46fSMauro Carvalho ChehabDo the same as above, but also include the output of the ifconfig and route
54208bab46fSMauro Carvalho Chehabcommands, as well as any pertinent log entries (ie. anything that starts
54308bab46fSMauro Carvalho Chehabwith "arcnet:" and has shown up since the last reboot) in your mail.
54408bab46fSMauro Carvalho Chehab
54508bab46fSMauro Carvalho ChehabIf you want to try fixing it yourself (I strongly recommend that you mail me
54608bab46fSMauro Carvalho Chehababout the problem first, since it might already have been solved) you may
54708bab46fSMauro Carvalho Chehabwant to try some of the debug levels available.  For heavy testing on
54808bab46fSMauro Carvalho ChehabD_DURING or more, it would be a REALLY good idea to kill your klogd daemon
54908bab46fSMauro Carvalho Chehabfirst!  D_DURING displays 4-5 lines for each packet sent or received.  D_TX,
55008bab46fSMauro Carvalho ChehabD_RX, and D_SKB actually DISPLAY each packet as it is sent or received,
55108bab46fSMauro Carvalho Chehabwhich is obviously quite big.
55208bab46fSMauro Carvalho Chehab
55308bab46fSMauro Carvalho ChehabStarting with v2.40 ALPHA, the autoprobe routines have changed
55408bab46fSMauro Carvalho Chehabsignificantly.  In particular, they won't tell you why the card was not
55508bab46fSMauro Carvalho Chehabfound unless you turn on the D_INIT_REASONS debugging flag.
55608bab46fSMauro Carvalho Chehab
55708bab46fSMauro Carvalho ChehabOnce the driver is running, you can run the arcdump shell script (available
55808bab46fSMauro Carvalho Chehabfrom me or in the full ARCnet package, if you have it) as root to list the
55908bab46fSMauro Carvalho Chehabcontents of the arcnet buffers at any time.  To make any sense at all out of
56008bab46fSMauro Carvalho Chehabthis, you should grab the pertinent RFCs. (some are listed near the top of
56108bab46fSMauro Carvalho Chehabarcnet.c).  arcdump assumes your card is at 0xD0000.  If it isn't, edit the
56208bab46fSMauro Carvalho Chehabscript.
56308bab46fSMauro Carvalho Chehab
56408bab46fSMauro Carvalho ChehabBuffers 0 and 1 are used for receiving, and Buffers 2 and 3 are for sending.
56508bab46fSMauro Carvalho ChehabPing-pong buffers are implemented both ways.
56608bab46fSMauro Carvalho Chehab
56708bab46fSMauro Carvalho ChehabIf your debug level includes D_DURING and you did NOT define SLOW_XMIT_COPY,
56808bab46fSMauro Carvalho Chehabthe buffers are cleared to a constant value of 0x42 every time the card is
56908bab46fSMauro Carvalho Chehabreset (which should only happen when you do an ifconfig up, or when Linux
57008bab46fSMauro Carvalho Chehabdecides that the driver is broken).  During a transmit, unused parts of the
57108bab46fSMauro Carvalho Chehabbuffer will be cleared to 0x42 as well.  This is to make it easier to figure
57208bab46fSMauro Carvalho Chehabout which bytes are being used by a packet.
57308bab46fSMauro Carvalho Chehab
57408bab46fSMauro Carvalho ChehabYou can change the debug level without recompiling the kernel by typing::
57508bab46fSMauro Carvalho Chehab
57608bab46fSMauro Carvalho Chehab	ifconfig arc0 down metric 1xxx
57708bab46fSMauro Carvalho Chehab	/etc/rc.d/rc.inet1
57808bab46fSMauro Carvalho Chehab
57908bab46fSMauro Carvalho Chehabwhere "xxx" is the debug level you want.  For example, "metric 1015" would put
58008bab46fSMauro Carvalho Chehabyou at debug level 15.  Debug level 7 is currently the default.
58108bab46fSMauro Carvalho Chehab
58208bab46fSMauro Carvalho ChehabNote that the debug level is (starting with v1.90 ALPHA) a binary
58308bab46fSMauro Carvalho Chehabcombination of different debug flags; so debug level 7 is really 1+2+4 or
58408bab46fSMauro Carvalho ChehabD_NORMAL+D_EXTRA+D_INIT.  To include D_DURING, you would add 16 to this,
58508bab46fSMauro Carvalho Chehabresulting in debug level 23.
58608bab46fSMauro Carvalho Chehab
58708bab46fSMauro Carvalho ChehabIf you don't understand that, you probably don't want to know anyway.
58808bab46fSMauro Carvalho ChehabE-mail me about your problem.
58908bab46fSMauro Carvalho Chehab
59008bab46fSMauro Carvalho Chehab
59108bab46fSMauro Carvalho ChehabI want to send money: what now?
59208bab46fSMauro Carvalho Chehab-------------------------------
59308bab46fSMauro Carvalho Chehab
59408bab46fSMauro Carvalho ChehabGo take a nap or something.  You'll feel better in the morning.
595