home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / DOC / HOWTO / OTHER_FO / SGML / ETHERNET.GZ / Ethernet-HOWTO.sgml
Encoding:
SGML Document  |  1996-02-11  |  174.9 KB  |  4,812 lines

  1. <!--
  2.  
  3.     The SGML source of the Ethernet-Howto
  4.     =====================================
  5.  
  6.     Maintained by Paul Gortmaker.
  7.  
  8.     Modification Date: Nov 18th, 1995
  9.  
  10.     (Don't forget to update the reference to the current kernel version
  11.     in the Introduction section, and the date/version in the abstract!)
  12.  
  13.     The "==" are because two dashes together inside an SGML comment 
  14.     will crash it.  :-(
  15.  
  16.     History:
  17.  
  18.     1) About July '93 == I was looking for info for e'net support for
  19.        a notebook, and was browsing the files on Don's ftp site
  20.        (was ftp.super.org then) == Don had a bunch of informational
  21.        files scattered about, and while talking to him, he mentioned
  22.        that someday it would be good if all that info was rolled 
  23.        into one document. The Howto project was just started, with
  24.        the NET-Howto being the first howto, (grown from all the
  25.        confusion of the big net-switch at 0.99pl10). I rolled
  26.        all Don's info into one, added a bunch of info that I had
  27.        gleaned from postings, copied the general style of the
  28.        NET-Howto, and the first Ethernet-Howto hit the internet
  29.        sometime in August 93.
  30.  
  31.     2) About December 93, Don hacked together a HTML version of the
  32.        Ethernet-Howto, but it didn't get much distribution, and
  33.        I only kept the ASCII version up to date.
  34.  
  35.     3) Spring 94, and the Ethernet-Howto gets published in the 
  36.        Linux Bible  == 30 pages of a ~750 page book, published
  37.        by Linux System Labs.
  38.  
  39.     4) Don moves jobs, and sets up a WWW home page with up-to-date
  40.        information on new linux drivers, and other ethernet news.
  41.        Look for the url contained in this document.
  42.  
  43.     5) A year (July 94) after its beginning, and the ugly tab+space 
  44.        formatting is dead.  The last ASCII version that was maintained 
  45.        by hand was called version 1.03, and dated June 22/94. Any ASCII 
  46.        versions newer than that were generated from this SGML source.
  47.  
  48.     6) I sat on the converted doc until Oct 94 because of a bug in the
  49.        cross-referencing with HTML. A fix was to be forthcoming, but
  50.        didn't eventuate. I eventually found a work-around.
  51.  
  52.     7) Nov 95 sees a major reorganization, which puts the FAQ section
  53.        and all the interesting bits first. People never read more
  54.        than the first few pages anyway... :-)
  55.  
  56. TODO:
  57.  
  58.     Add more URLs to this and that?
  59.  
  60.  
  61. -->
  62.  
  63. <!doctype linuxdoc system>
  64.  
  65. <article>
  66.  
  67. <title>Linux Ethernet-Howto
  68. <author>Paul Gortmaker, Editor.
  69. <date>v2.5, 18 November 1995
  70.  
  71. <abstract>
  72.     This is the Ethernet-Howto, which is a compilation of information
  73.     about which ethernet devices can be used for Linux, and how to
  74.     set them up. It hopefully answers all the frequently asked questions
  75.     about using ethernet cards with Linux. Note that this Howto is focused
  76.     on the hardware and low level driver aspect of the ethernet cards,
  77.     and does not cover the software end of things. See the NET2-Howto
  78.     for that stuff.
  79. </abstract>
  80.  
  81. <toc>
  82.  
  83. <sect>Introduction<label id="main-intro">
  84. <p>
  85.  
  86.     The Ethernet-Howto covers what cards you should and 
  87.     shouldn't buy; how to set
  88.     them up, how to run more than one, and other common problems and
  89.     questions. It contains detailed information on the current level
  90.     of support for <em/all of the most common ethernet cards available./
  91.     It does <em/not/ cover the software end of things, as that
  92.     is covered in the NET-2 Howto. Also note that general non-Linux
  93.     specific questions about Ethernet are not (or at least they should
  94.     not be) answered here. For those types of questions, see the
  95.     excellent amount of information in the <em/comp.dcom.lans.ethernet/
  96.     FAQ. You can FTP it from <tt/dorm.rutgers.edu/ in the directory
  97.     <tt>/pub/novell/info_and_docs/</tt>
  98.  
  99.     This present revision covers distribution kernels up to and 
  100.     including v1.2.13. Information pertaining to development
  101.     kernels up to version 1.3.42 is also documented.
  102.  
  103.     The Ethernet-Howto is edited and maintained by:
  104. <quote>
  105.     Paul Gortmaker, <tt/Paul.Gortmaker@anu.edu.au/
  106. </quote>
  107.  
  108.     The primary source of the information for the initial
  109.     Ethernet-Howto was from:
  110. <quote>
  111.     Donald J. Becker, <tt/becker@cesdis.gsfc.nasa.gov/
  112. </quote>
  113.  
  114.     who we have to thank for writing the vast majority of ethernet
  115.     card drivers that are presently available for Linux. He also
  116.     is the original author of the NFS server too. Thanks Donald! We 
  117.     owe ya one!  :-)
  118.  
  119.     Net-surfers may wish to check out the following URL:
  120.  
  121.     <url url="http://cesdis.gsfc.nasa.gov/pub/people/becker/whoiam.html"
  122.         name="Donald Becker">
  123.  
  124. <sect1>New Versions of this Document<label id="new-doc">
  125. <p>
  126.  
  127.     New versions of this document can be retrieved via anonymous
  128.     FTP from:
  129.  
  130.     <url url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/"
  131.         name="Sunsite HOWTO Archive"> 
  132.  
  133.     and various Linux ftp mirror sites. Updates will be made
  134.     as new information and/or drivers becomes available. If this copy
  135.     that you are reading is more than 4 months old, it is either out of
  136.     date, or it means that I have been lazy and haven't updated it.
  137.     This document was produced by using the SGML system that was
  138.     specifically set up for the Linux Howto project, and there are
  139.     various output formats available, including, postscript, dvi,
  140.     ascii, html, and soon TeXinfo.
  141.  
  142.     I would recommend viewing it in the html (via a WWW browser) or the
  143.     Postscript/dvi format. Both of these contain cross-references
  144.     that are lost in the ascii translation.
  145.  
  146.     If you want to get the official copy off sunsite, here is URL.
  147.  
  148.     <url url="http://sunsite.unc.edu/mdw/HOWTO/Ethernet-HOWTO.html"
  149.         name="Ethernet-HOWTO">
  150.  
  151.     If minor additions and changes have been made, you can view the 
  152.     latest working copy from this URL.
  153.  
  154.     <url url="http://rsphy1.anu.edu.au/˜gpg109/Ethernet-HOWTO.html"
  155.         name="Working Copy">
  156.  
  157. <sect1>Using the Ethernet-Howto<label id="using">
  158. <p>
  159.  
  160.     As this guide is getting bigger and bigger, you probably don't want
  161.     to spend the rest of your afternoon reading the whole thing. And you
  162.     don't <em/have/ to read it all. If you haven't got an ethernet card, then
  163.     you will want to start with 
  164.     <ref id="what-card" name="What card should I buy...">
  165.     to see what you should buy,
  166.     and what you should avoid. If you have already got an ethernet card,
  167.     but are not sure if you can use it with Linux, then you will want to
  168.     read <ref id="card-intro" name="Vendor Specific...">
  169.     which contains specific information on each
  170.     manufacturer, and their cards. If you are having trouble with your
  171.     card, then you will want to read the specific information about
  172.     your card mentioned above, and the troubleshooting information in
  173.     <ref id="faq" name="the FAQ section">.
  174.     If you are interested in some of the technical aspects
  175.     of the device drivers, then you can find that information in
  176.     <ref id="tech-intro" name="Technical Information">
  177.  
  178. <sect1>Disclaimer and Copyright<label id="copyright">
  179. <p>
  180.  
  181.     This document is <em/not/ gospel. However, it is probably the most
  182.     up to date info that you will be able to find. Nobody is responsible
  183.     for what happens to your hardware but yourself. If your ethercard
  184.     or any other hardware goes up in smoke (...nearly impossible!)
  185.     we take no responsibility. ie. THE AUTHORS ARE NOT RESPONSIBLE
  186.     FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THE
  187.     INFORMATION INCLUDED IN THIS DOCUMENT.
  188.  
  189.     This document is Copyright (c) 1993, 1994, 1995 by Donald Becker and
  190.     Paul Gortmaker. Permission is granted to make and distribute
  191.     verbatim copies of this manual provided the copyright notice
  192.     and this permission notice are preserved on all copies.
  193.  
  194.     Permission is granted to copy and distribute modified versions
  195.     of this document under the conditions for verbatim copying,
  196.     provided that this copyright notice is included exactly as in
  197.     the original, and that the entire resulting derived work is
  198.     distributed under the terms of a permission notice identical
  199.     to this one.
  200.  
  201.     Permission is granted to copy and distribute translations
  202.     of this document into another language, under the above
  203.     conditions for modified versions.
  204.  
  205.     If you are intending to incorporate this document into a
  206.     published work, please contact me, and I will make an effort
  207.     to ensure that you have the most up to date information
  208.     available. In the past, out of date versions of the Linux
  209.     howto documents have been published, which caused the developers
  210.     undue grief from being plagued with questions that were already
  211.     answered in the up to date versions.
  212.  
  213. <sect>What card should I buy for Linux?<label id="what-card">
  214. <p>
  215.  
  216.     The answer to this question depends heavily on exactly what
  217.     you intend on doing with your net connection, and how much 
  218.     traffic it will see.
  219.  
  220.     If you only expect a single user to be doing the occasional
  221.     ftp session or WWW connection, then an old 8 bit wd8003 card 
  222.     will keep you happy.
  223.  
  224.     If you intend to set up a server, and you require the CPU 
  225.     overhead of Rx'ing and Tx'ing ether packets to be kept
  226.     at a minimum, you probably want to look at one of the 
  227.     newer PCI cards with the DEC 21040 chip, or the 
  228.     AMD PCnet-PCI chip.
  229.  
  230.     If you fall somewhere in the middle of the above, then any
  231.     one of the 16 bit ISA cards with stable drivers will do the
  232.     job for you.
  233.  
  234. <sect1>So What Drivers are Stable?
  235. <p>
  236.  
  237.     Of the 16 bit ISA cards, the following drivers are very
  238.     mature, and you shouldn't have any problems if you buy
  239.     a card that uses these drivers.
  240.  
  241.     SMC-Ultra/EtherEZ, WD80x3, 3c509, 3c503/16, Lance, NE2000.
  242.  
  243.     This is not to say that all the other drivers are unstable.
  244.     It just happens that the above are the oldest and most
  245.     used of all the linux drivers, making them the safest
  246.     choice.
  247.  
  248.     Note that some el-cheapo motherboards can have trouble
  249.     with the bus-mastering that the lance cards do, and
  250.     some el-cheapo NE2000 clones can have trouble getting
  251.     detected at boot.
  252.  
  253.     As for PCI cards, the PCnet-PCI cards that use the 
  254.     lance driver are a safe choice (except for the Boca
  255.     cards as they have hardware flaws). The Allied Telsyn AT2450
  256.     is a PCnet-PCI implementation that is known to work well.
  257.  
  258.     The DEC 21040 `tulip' driver and the 3c59x `vortex' driver 
  259.     are relatively new drivers, but have proven themselves to be quite
  260.     stable already. (The newer 21041 based cards may be slightly 
  261.     problematic at the moment, but this will no doubt be 
  262.     resolved quickly.)
  263.  
  264. <sect1>Eight bit vs 16 bit Cards<label id="8-vs-16">
  265. <p>
  266.  
  267.     You probably can't buy a new 8 bit ISA ethercard anymore,
  268.     but you will find lots of them turning up at computer swap
  269.     meets and the like for the next few years, at very low prices.
  270.     This will make them popular for ``home-ethernet'' systems.
  271.  
  272.     Some 8 bit cards that will provide adequate performance for 
  273.     light to average use are the wd8003, the 3c503 and the ne1000.
  274.     The 3c501 provides poor performance, and these poor 10 year
  275.     old relics of the XT days should be avoided.
  276.     
  277.     The 8 bit data path doesn't hurt performance that much, as you
  278.     can still expect to get about 500 to 800kB/s ftp download speed 
  279.     to an 8 bit wd8003 card (on a fast ISA bus) from a fast host.
  280.     And if most of your net-traffic is going to remote sites, then 
  281.     the bottleneck in the path will be elsewhere, and the only speed
  282.     difference you will notice is during net activity on your local
  283.     subnet.
  284.  
  285. <sect1>32 Bit / VLB / PCI Ethernet Cards
  286. <p>
  287.  
  288.     There aren't many 32 bit ethercard device drivers because there
  289.     aren't that many 32 bit ethercards.
  290.     There aren't many 32 bit ethercards out there because a 10Mbs 
  291.     network doesn't justify spending the 5x price increment for 
  292.     the 32 bit interface. (For a 100Mbs network, it is a different
  293.     story though.)
  294.  
  295.     See <ref id="data-xfer" name="Programmed I/O vs. ..."> as to why
  296.     having an ethercard on an 8MHz ISA bus is really not a
  297.     bottleneck. Even though having the ethercard on a fast bus won't
  298.     necessarily mean faster transfers, it will usually mean reduced
  299.     CPU overhead, which is good for multi-user systems.
  300.  
  301.     AMD has the 32 bit PCnet-VLB and PCnet-PCI chips.
  302.     See <ref id="pcnet-32" name="AMD PCnet-32"> for info on the
  303.     32 bit versions of the LANCE / PCnet-ISA chip.
  304.  
  305.     The DEC 21040 PCI chip is another option
  306.     (see <ref id="dec-21040" name="DEC 21040">) for power-users.
  307.     Many manufacturers produce cards that use this chip.
  308.  
  309.     3Com's `Vortex' PCI cards are also another option, and the price
  310.     is quite cheap if you can get one under their evaluation
  311.     deal while it lasts.  (see <ref id="vortex" name="3c590/3c595">)
  312.  
  313. <sect1>Available 100Mbs Cards and Drivers
  314. <p>
  315.  
  316.     The present list of supported 100Mbs hardware is as follows:
  317.      cards with the DEC 21140 chip; the 3c595 Vortex card;
  318.     and the HP 100VG ANY-LAN. The drivers for the first two are
  319.     quite stable, but feedback on the HP driver has been low
  320.     so far as it has only been around since early 1.3.x kernels.
  321.  
  322.     The EtherExpressPro10/100 is not presently supported.
  323.     Getting documentation out of intel is difficult to
  324.     impossible, which is the main reason.
  325.  
  326.     The 21140 100Base-? chip is supported with the same driver as 
  327.     its 10Mbs counterpart, the 21040. SMC's 100Mbs EtherPower PCI 
  328.     card uses this chip. As with the 21040, you have a choice of
  329.     two drivers to pick from.
  330.  
  331.     Also have a look at the information on Donald's WWW site,
  332.     at the following URL:
  333.  
  334.     <url url="http://cesdis.gsfc.nasa.gov/linux/misc/100mbs.html"
  335.         name="100Mbs Ethernet">
  336.  
  337.     Donald has been doing most of his work with the 
  338.     SMC EtherPower-10/100 cards, and reports getting about 4.6MB/s
  339.     application to application with TCP on P5-100 Triton machines.
  340.  
  341.     (See <ref id="vortex" name="3c595"> and 
  342.     <ref id="dec-21040" name="DEC 21140"> for more details.)
  343.  
  344.     For 100VG information, see 
  345.     <url url="http://cesdis.gsfc.nasa.gov/linux/drivers/100vg.html"
  346.         name="Donald's 100VG Page">
  347.     
  348.     You may also be interested in looking at:
  349.  
  350.     <url url="http://alumni.caltech.edu/~dank/fe/"
  351.         name="Dan Kegel's Fast Ethernet Page">
  352.  
  353. <sect1>Programmed I/O vs. Shared Memory vs. DMA<label id="data-xfer">
  354. <p>
  355.  
  356.     Ethernet is 10Mbs. (Don't be pedantic, 3Mbs and 100Mbs don't count.)
  357.     If you can already send and receive back-to-back packets, you just
  358.     can't put more bits over the wire. Every modern ethercard can receive
  359.     back-to-back packets. The Linux DP8390 drivers come pretty close to
  360.     sending back-to-back packets (depending on the current interrupt
  361.     latency) and the 3c509 and AT1500 hardware has no problem at all
  362.     automatically sending back-to-back packets.
  363.  
  364.     The ISA bus can do 5.3MB/sec (42Mb/sec), which sounds like more than
  365.     enough. You can use that bandwidth in several ways:
  366.  
  367. <sect2>Programmed I/O (e.g. NE2000, HP)
  368. <p>
  369.  
  370.     Pro: Doesn't use any constrained system resources,
  371.     just a few I/O registers, and has no 16M limit.
  372.  
  373.     Con: Usually the slowest transfer rate, the CPU is waiting
  374.     the whole time, and interleaved packet access is usually
  375.     difficult to impossible.
  376.  
  377. <sect2>Shared memory (e.g. WD80x3, SMC-Ultra, 3c503)
  378. <p>
  379.  
  380.     Pro: Simple, faster than programmed I/O, and allows random
  381.     access to packets. The linux drivers compute the checksum of 
  382.     incoming IP packets as they are copied off the card, resulting in 
  383.     a further reduction of CPU usage vs. an equivalent PIO card.
  384.  
  385.     Con: Uses up memory space (a big one for DOS users, only a minor
  386.     issue under Linux), and it still ties up the CPU.
  387.  
  388. <sect2>Slave (normal) Direct Memory Access (e.g. none for Linux!)
  389. <p>
  390.  
  391.     Pro: Frees up the CPU during the actual data transfer.
  392.  
  393.     Con: Checking boundary conditions, allocating contiguous buffers,
  394.     and programming the DMA registers makes it the slowest
  395.     of all techniques.  It also uses up a scarce DMA
  396.     channel, and requires aligned low memory buffers.
  397.  
  398. <sect2>Bus Master Direct Memory Access (e.g. LANCE, DEC 21040) <label id="master">
  399. <p>
  400.  
  401.     Pro: Frees up the CPU during the data transfer, can string 
  402.     together buffers, can require little or no CPU time lost on 
  403.     the ISA bus.
  404.  
  405.     Con: Requires low-memory buffers and a DMA channel. Any
  406.     bus-master will have problems with other bus-masters that
  407.     are bus-hogs, such as some primitive SCSI adaptors. A few
  408.     badly-designed motherboard chipsets have problems with
  409.     bus-masters. And a reason for not using <em/any/ type of
  410.     DMA device is using a 486 processor designed for
  411.     plug-in replacement of a 386: these processors must
  412.     flush their cache with each DMA cycle. (This includes
  413.     the Cx486DLC, Ti486DLC, Cx486SLC, Ti486SLC, etc.)
  414.  
  415. <sect1>Type of cable that your card should support<label id="cable-intro">
  416. <p>
  417.  
  418.     If you are setting up a small ``personal'' network, you will probably
  419.     want to use thinnet or thin ethernet cable. This is the style with the
  420.     standard BNC connectors. See <ref id="cable" name="Cables, Coax...">
  421.     for other concerns with different types of ethernet cable.
  422.  
  423.     Most ethercards also come in a `Combo' version for only 
  424.     $10-$20 more.
  425.     These have both twisted pair and thinnet transceiver built-in,
  426.     allowing you to change your mind later.
  427.  
  428.     The twisted pair cables, with the RJ-45 (giant phone jack)
  429.     connectors is technically called 10BaseT. You may also
  430.     hear it called UTP (Unsheilded Twisted Pair).
  431.  
  432.     The thinnet, or thin ethernet cabling, (RG-58 coaxial cable)
  433.     with the BNC (metal push and turn-to-lock) connectors is 
  434.     technically called 10Base2.
  435.  
  436.     The older thick ethernet (10mm coaxial cable) which is only
  437.     found in older installations is called 10Base5.
  438.  
  439.     Large corporate installations will most likely use 10BaseT
  440.     instead of 10Base2. 10Base2 does not offer an easy upgrade
  441.     path to the new upcoming 100Base-whatever.
  442.  
  443. <sect>Frequently Asked Questions<label id="faq">
  444. <p>
  445.  
  446.     Here are some of the more frequently asked questions about using
  447.     Linux with an Ethernet connection. Some of the more specific
  448.     questions are sorted on a `per manufacturer basis'.
  449.     However, since this
  450.     document is basically `old' by the time you get it, any `new' problems
  451.     will not appear here instantly. For these, I suggest that you make
  452.     efficient use of your newsreader. For example, nn users would type
  453.  
  454. <tscreen>
  455.         nn -xX -s'3c'
  456. </tscreen>
  457.  
  458.     to get all the news articles in your subscribed list that have
  459.     `3c' in the subject. (ie. 3com, 3c509, 3c503, etc.)
  460.     The moral: Read the man page for your newsreader.
  461.  
  462. <sect1>Alpha Drivers -- Getting and Using them<label id="alfa">
  463. <p>
  464.  
  465.     I heard that there is an updated or alpha driver available 
  466.     for my card. Where can I get it?
  467.  
  468.     The newest of the `new' drivers can be found on Donald's new
  469.     ftp site: <tt/cesdis.gsfc.nasa.gov/ in the 
  470.     <tt>/pub/linux/</tt> area. Things 
  471.     change here quite frequently, so just look around for it. 
  472.     There is still all the stuff on the old ftp site <tt/ftp.super.org/
  473.     in <tt>/pub/linux</tt>, but this is not being actively maintained,
  474.     and hence will be of limited value to most people.
  475.  
  476.     Note that most of the `useable' alpha drivers have been
  477.     included in the standard kernel source tree. When running
  478.     <tt/make config/ you will be asked if you want to be offered
  479.     ALPHA test drivers.
  480.  
  481.     Now, if it really is an alpha, or pre-alpha driver, then please 
  482.     treat it as such. In other words, don't complain because you 
  483.     can't figure out what to do with it. If you can't figure out 
  484.     how to install it, then you probably shouldn't be testing it. 
  485.     Also, if it brings your machine down, don't complain. Instead, 
  486.     send us a well documented bug report, or even better, a patch!
  487.  
  488.     People reading this while <em/net-surfing/ may want to check out:
  489.  
  490.     <url url="http://cesdis.gsfc.nasa.gov/pub/linux/linux.html"
  491.         name="Don's Linux Home Page">
  492.  
  493.     for the latest dirt on what is new and upcoming.
  494.  
  495. <sect1>Using More than one Ethernet Card per Machine<label id="two-card">
  496. <p>
  497.  
  498.     What needs to be done so that Linux can run two ethernet cards?
  499.  
  500.     The hooks for multiple ethercards are all there.
  501.     However, note that only <em/one/ ethercard is
  502.     auto-probed for by default.  This avoids a lot of possible 
  503.     boot time hangs caused by probing sensitive cards.  
  504.  
  505.     There are two ways that you can enable auto-probing for
  506.     the second (and third, and...) card. The easiest
  507.     method is to pass boot-time arguments to the kernel,
  508.     which is usually done by LILO. Probing for the 
  509.     second card can be achieved by using a boot-time argument
  510.     as simple as <tt/ether=0,0,eth1/. In this
  511.     case <tt/eth0/ and <tt/eth1/ will be assigned in the order
  512.     that the cards are found at boot.  Say if you want
  513.     the card at <tt/0x300/ to be <tt/eth0/ and
  514.     the card at <tt/0x280/ to be <tt/eth1/ then you could use
  515.  
  516. <tscreen>
  517.     LILO: linux ether=5,0x300,eth0 ether=15,0x280,eth1
  518. </tscreen>
  519.  
  520.     The <tt/ether=/ command accepts more than the IRQ + i/o
  521.     + name shown above. Please have a look at
  522.     <ref id="lilo" name="Passing Ethernet Arguments...">
  523.     for the full syntax, card specific parameters, and LILO tips.
  524.  
  525.     These boot time arguments can be made permanent so that you
  526.     don't have to re-enter them every time. See the LILO 
  527.     configuration option `<tt/append/' in the LILO manual.
  528.  
  529.     The second way (not recommended) is to edit the file
  530.     <tt/Space.c/ and replace the <tt/0xffe0/ entry for the
  531.     i/o address with a zero. The <tt/0xffe0/ entry tells it
  532.     not to probe for that device -- replacing it with a zero
  533.     will enable autoprobing for that device.
  534.     If you <em/really/ need more than four ethernet
  535.     cards in one machine, then you can add an <tt/eth4/ entry
  536.     and an <tt/eth5/ entry and so on.
  537.  
  538.     Note that if you are intending to use Linux as a gateway between
  539.     two networks, you will have to re-compile a kernel with IP
  540.     forwarding enabled. Usually using an old AT/286 with something
  541.     like the `kbridge' software is a better solution.
  542.  
  543.     If you are viewing this while <em/net-surfing/, you may wish
  544.     to look at a mini-howto Donald has on his WWW site. Check out
  545.     <url url="http://cesdis.gsfc.nasa.gov/linux/misc/multicard.html"
  546.         name="Multiple Ethercards">.
  547.  
  548.     For module users with 8390 based cards, you can have a single
  549.     module control multiple cards as well. Please see
  550.     <ref id="multmod8390" name="8390 Based Cards as Modules"> for
  551.     module specific information about using multiple cards.
  552.  
  553.  
  554.  
  555. <sect1>Poor NE2000 Clones<label id="ne2k-clones">
  556. <p>
  557.  
  558.     Here is a list of some of the NE-2000 clones that are known to
  559.     have various problems. Most of them aren't fatal. In the case
  560.     of the ones listed as `bad clones' -- this usually indicates that
  561.     the cards don't have the two NE2000 identifier bytes. NEx000-clones
  562.     have a Station Address PROM (SAPROM) in the packet buffer memory space.
  563.     NE2000 clones have <tt/0x57,0x57/ in bytes <tt/0x0e,0x0f/
  564.     of the SAPROM, while other supposed NE2000 clones must be 
  565.     detected by their SA prefix.  
  566.  
  567.     This is not a comprehensive list of all the NE2000 clones that
  568.     don't have the <tt/0x57,0x57/ in bytes <tt/0x0e,0x0f/
  569.     of the SAPROM. There are probably hundreds of them. If you
  570.     get a card that causes the driver to report an `invalid
  571.     signature' then you will have to add your cards signature
  572.     to the driver. The process for doing this is described 
  573.     below.
  574.  
  575.     <bf/Accton NE2000/
  576.     -- might not get detected at boot, see below.
  577.  
  578.     <bf/Aritsoft LANtastic AE-2/
  579.     -- OK, but has flawed error-reporting registers.
  580.  
  581.     <bf/AT-LAN-TEC NE2000/ 
  582.     -- clone uses Winbond chip that traps SCSI drivers
  583.  
  584.     <bf/ShineNet LCS-8634/ 
  585.     -- clone uses Winbond chip that traps SCSI drivers
  586.  
  587.     <bf/Cabletron E10**, E20**, E10**-x, E20**-x/
  588.     -- bad clones, but the driver checks for them. See 
  589.     <ref id="e10xx" name="E10**">.
  590.  
  591.     <bf/D-Link Ethernet II/
  592.     -- bad clones, but the driver checks for them. See
  593.     <ref id="de-100" name="DE-100 / DE-200">.
  594.  
  595.     <bf/DFI DFINET-300, DFINET-400/
  596.     -- bad clones, but the driver checks for them. See
  597.     <ref id="dfi-300" name="DFI-300 / DFI-400">
  598.  
  599.     <bf/EtherNext UTP8, EtherNext UTP16/
  600.     -- bad clones, but the driver checks for them.
  601.  
  602. <sect1>Problems with NE1000 / NE2000 cards (and clones)<label id="ne2k-probs">
  603. <p>
  604.  
  605.     <bf/Problem:/
  606.     NE*000 card hangs machine, sometimes with a `DMA conflict'
  607.     message, sometimes completely silently.
  608.  
  609.     <bf/Reason:/
  610.     There were some bugs in the driver and the upper networking
  611.     layers that caused this. They have been fixed in kernels
  612.     v1.2.9 and above. Upgrade your kernel.
  613.  
  614.     <bf/Problem:/
  615.     NE*000 card hangs machine during NE probe, or can not
  616.     read station address properly.
  617.  
  618.     <bf/Reason:/
  619.     Kernels previous to v1.3.7 did not fully reset the card
  620.     after finding it at boot. Some cheap cards are not left in
  621.     a reasonable state after power-up and need to be fully
  622.     reset before any attempt is made to use them. Also, a
  623.     previous probe may have upset the NE card prior to the 
  624.     NE probe taking place. In that case, look in to using 
  625.     the  ``reserve='' boot keyword to protect the card from other
  626.     probes.
  627.  
  628.     <bf/Problem:/
  629.     NE*000 driver reports `not found (no reset ack)' during boot
  630.     probe.
  631.  
  632.     <bf/Reason:/
  633.     This is related to the above change. After the initial 
  634.     verification that an 8390 is at the probed i/o address, the
  635.     reset is performed. When the card has completed the reset,
  636.     it is supposed to acknowedge that the reset has completed.
  637.     Your card doesn't, and so the driver assumes that no NE card
  638.     is present.
  639.  
  640.     <bf/Solution:/
  641.     
  642.     Change the two lines as shown below in <tt>drivers/net/ne.c</tt>
  643. <code>
  644. -            printk(" not found (no reset ack).\n");
  645. -            return ENODEV;
  646. +            printk(" (warning: no reset ack)");
  647. +            break;
  648. </code>
  649.  
  650.     This will allow the card detection to continue, even if your
  651.     card doesn't ACK the reset.
  652.  
  653.     <bf/Problem:/
  654.     NE*000 card hangs machine at first network access.
  655.  
  656.     <bf/Reason:/
  657.     This problem has been reported for kernels as old as 1.1.57 
  658.     to the present. It appears confined to the software configurable
  659.     clone cards. It appears that they expect to be initialized in
  660.     some special way.
  661.  
  662.     <bf/Solution:/
  663.     Several people have reported that running the supplied DOS
  664.     software config program and/or the supplied DOS driver prior
  665.     to warm booting (i.e. loadlin or the `three-finger-salute')
  666.     into linux allowed the card to work. This would indicate
  667.     that these cards need to be initialized in a particular
  668.     fashion, slightly different than what the present Linux
  669.     driver does.
  670.  
  671.     <bf/Problem:/
  672.     NE*000 ethercard at <tt/0x360/ doesn't get detected anymore.
  673.  
  674.     <bf/Reason:/
  675.     Recent kernels ( > 1.1.7X) have more sanity checks with respect
  676.     to overlapping i/o regions. Your NE2000 card is <tt/0x20/ wide in
  677.     i/o space, which makes it hit the parallel port at <tt/0x378/.
  678.     Other devices that could be there are the second floppy
  679.     controller (if equipped) at <tt/0x370/ and the secondary
  680.     IDE controller at <tt/0x376--0x377/.
  681.     If the port(s) are already registered by another driver, the 
  682.     kernel will not let the probe happen.
  683.  
  684.     <bf/Solution:/
  685.     Either move your card to an address like <tt/0x280, 0x340, 0x320/
  686.     or compile without parallel printer support.
  687.     
  688.     <bf/Problem:/
  689.     Network `goes away' every time I print something (NE2000)
  690.  
  691.     <bf/Reason:/
  692.     Same problem as above, but you have an older kernel that
  693.     doesn't check for overlapping i/o regions. Use the
  694.     same fix as above, and get a new kernel while you are at it.
  695.  
  696.     <bf/Problem:/
  697.     NE*000 ethercard probe at 0xNNN: 00 00 C5 ... not found. 
  698.     (invalid signature yy zz)
  699.  
  700.     <bf/Reason:/
  701.     First off, do you have a NE1000 or NE2000 card at the addr. 0xNNN?
  702.     And if so, does the hardware address reported look like a valid
  703.     one? If so, then you have a poor NE*000 clone. All NE*000 clones
  704.     are supposed to have the value <tt/0x57/ in bytes 14 and 15 of the 
  705.     SA PROM on the card. Yours doesn't -- it has `yy zz' instead.
  706.  
  707.     <bf/Solution:/
  708.     The driver (/usr/src/linux/drivers/net/ne.c) has a "Hall of Shame" 
  709.     list at about line 42. This list is used to detect poor clones. 
  710.     For example, the DFI cards use `DFI' in the first 3 bytes of the 
  711.     prom, instead of using 0x57 in bytes 14 and 15, like they are
  712.     supposed to.
  713.  
  714.     You can determine what the first 3 bytes of your card PROM are 
  715.     by adding a line like:
  716.  
  717. <verb>
  718.     printk("PROM prefix: %2.2x %2.2x %2.2x\n",SA_prom[0],SA_prom[1],SA_prom[2]);
  719. </verb>
  720.  
  721.     into the driver, right after the error message you got above, and 
  722.     just before the "return ENXIO" at line 227.
  723.  
  724.     Reboot with this change in place, and after the detection fails, you
  725.     will get the three bytes from the PROM like the DFI example above. 
  726.     Then you can add your card to the bad_clone_list&lsqb&rsqb at about 
  727.     line 43. Say the above line printed out:
  728.  
  729. <tscreen>
  730.     PROM prefix: 0x3F 0x2D 0x1C
  731. </tscreen>
  732.  
  733.     after you rebooted. And say that the 8 bit version of your card was
  734.     called the "FOO-1k" and the 16 bit version the "FOO-2k". Then you would
  735.     add the following line to the bad_clone_list&lsqb&rsqb:
  736.  
  737. <tscreen>
  738.     {"FOO-1k", "FOO-2k", {0x3F, 0x2D, 0x1C,}},
  739. </tscreen>
  740.  
  741.     Note that the 2 name strings you add can be anything -- they are just
  742.     printed at boot, and not matched against anything on the card.
  743.     You can also take out the "printk()" that you added above, if you want.
  744.     It shouldn't hit that line anymore anyway. Then recompile once more, 
  745.     and your card should be detected.
  746.  
  747.     <bf/Problem:/
  748.     Errors like <tt/DMA address mismatch/
  749.  
  750.     Is the chip a real NatSemi 8390? (DP8390, DP83901, DP83902 or DP83905)?
  751.     If not, some clone chips don't correctly implement the transfer
  752.     verification register. MS-DOS drivers never do error checking,
  753.     so it doesn't matter to them. (Note: The DMA address check is not done
  754.     by default as of v1.2.4 for performance reasons. Enable it with 
  755.     the `NE_SANITY' define in <tt/ne.c/ if you want the check done.)
  756.  
  757.     Are most of the messages off by a factor of 2?
  758.     If so:  Are you using the NE2000 in a 16 bit slot?
  759.     Is it jumpered to use only 8 bit transfers?
  760.  
  761.     The Linux driver expects a NE2000 to be in a 16 bit slot. A NE1000 can
  762.     be in either size slot. This problem can also occur with some clones,
  763.     notably D-Link 16 bit cards, that don't have the correct ID bytes
  764.     in the station address PROM.
  765.  
  766.     Are you running the bus faster than 8Mhz?
  767.     If you can change the speed (faster or slower), see if that
  768.     makes a difference. Most NE2000 clones will run at 16MHz, but
  769.     some may not. Changing speed can also mask a noisy bus.
  770.  
  771.     What other devices are on the bus?
  772.     If moving the devices around changes the reliability, then you
  773.     have a bus noise problem -- just what that error message was
  774.     designed to detect. Congratulations, you've probably found the
  775.     source of other problems as well.
  776.  
  777.     <bf/Problem:/
  778.     The machine hangs during boot right after the `8390...'  or
  779.     `WD....' message. Removing the NE2000 fixes the problem.
  780.  
  781.     <bf/Solution:/
  782.     Change your NE2000 base address to <tt/0x340/. Alternatively, you 
  783.     can use the device registrar implemented in 0.99pl13 and later 
  784.     kernels.
  785.  
  786.     <bf/Reason:/
  787.     Your NE2000 clone isn't a good enough clone. An active
  788.     NE2000 is a bottomless pit that will trap any driver
  789.     autoprobing in its space. The other ethercard drivers take
  790.     great pain to reset the NE2000 so that it's safe, but some
  791.     clones cannot be reset. Clone chips to watch out for:
  792.     Winbond 83C901. Changing the NE2000 to a less-popular
  793.     address will move it out of the way of other autoprobes,
  794.     allowing your machine to boot.
  795.  
  796.  
  797.     <bf/Problem:/
  798.     The machine hangs during the SCSI probe at boot.
  799.  
  800.     <bf/Reason:/
  801.     It's the same problem as above, change the
  802.     ethercard's address, or use the device registrar.
  803.  
  804.     <bf/Problem:/
  805.     The machine hangs during the soundcard probe at boot.
  806.  
  807.     <bf/Reason:/
  808.     No, that's really during the silent SCSI probe, and it's
  809.     the same problem as above.
  810.  
  811.     <bf/Problem:/
  812.     NE2000 not detected at boot - no boot messages at all
  813.  
  814.     Donald writes:
  815.     `A few people have reported a problem with detecting the Accton NE2000.
  816.     This problem occurs only at boot-time, and the card is later detected
  817.     at run-time by the identical code my (alpha-test) ne2k diagnostic
  818.     program. Accton has been very responsive, but I still haven't tracked
  819.     down what is going on. I've been unable to reproduce this problem
  820.     with the Accton cards we purchased. If you are having this problem,
  821.     please send me an immediate bug report. For that matter, if you have
  822.     an Accton card send me a success report, including the type of the
  823.     motherboard. I'm especially interested in finding out if this problem
  824.     moves with the particular ethercard, or stays with the motherboard.'
  825.  
  826.     Here are some things to try, as they have fixed it for some people:
  827.  
  828. <itemize>
  829.  
  830. <item>    Change the bus speed, or just move the card to a different slot.
  831.  
  832. <item>    Change the `I/O recovery time' parameter in the BIOS
  833.     chipset configuration.
  834.  
  835. </itemize>
  836.  
  837. <sect1>Problems with WD80*3 cards<label id="8013-probs">
  838. <p>
  839.  
  840.     <bf/Problem:/
  841.     A WD80*3 is falsely detected. Removing the sound or
  842.     MIDI card eliminates the `detected' message.
  843.  
  844.     <bf/Reason:/
  845.     Some MIDI ports happen to produce the same checksum as a
  846.     WD ethercard.
  847.  
  848.     <bf/Solution:/
  849.     Update your ethercard driver: new versions include an
  850.     additional sanity check. If it is the midi chip at 0x388
  851.     that is getting detected as a WD living at 0x380, then
  852.     you could also use:
  853. <verb>
  854.     LILO: linux reserve=0x380,8
  855. </verb>
  856.  
  857.     <bf/Problem:/
  858.     You get messages such as the following with your 80*3:
  859.  
  860. <verb>
  861.     eth0: bogus packet size, status = NNNN
  862.     kmalloc called with impossibly large argument (65400)
  863.     eth0: Couldn't allocate sk_buff of size 65400
  864.     eth0: receiver overrun
  865. </verb>
  866.  
  867.     <bf/Reason:/
  868.     There is a shared memory problem.
  869.  
  870.     <bf/Solution:/
  871.     If the problem is sporadic, you have hardware problems.
  872.     Typical problems that are easy to fix are board conflicts,
  873.     having cache or `shadow ROM' enabled for that region, or
  874.     running your bus faster than 8Mhz. There are also a
  875.     surprising number of memory failures on ethernet cards,
  876.     so run a diagnostic program if you have one for your
  877.     ethercard.
  878.  
  879.     If the problem is continual, and you have have to reboot
  880.     to fix the problem, record the boot-time probe message
  881.     and mail it to becker@cesdis.gsfc.nasa.gov - Take 
  882.     particular note of the shared memory location.
  883.  
  884.     <bf/Problem:/
  885.     WD80*3 will not get detected at boot.
  886.  
  887.     <bf/Reason:/
  888.     Earlier versions of the Mitsumi CD-ROM (mcd) driver probe 
  889.     at 0x300 will succeed if just about <em/anything/ is that I/O location.
  890.     This is bad news and needs to be a bit more robust.
  891.     Once another driver registers that it `owns' an I/O
  892.     location, other drivers (incl. the wd80x3) are `locked
  893.     out' and can not probe that addr for a card.
  894.  
  895.     <bf/Solution:/
  896.     Recompile a new kernel without any excess drivers that
  897.     you aren't using, including the above mcd driver.
  898.     Or try moving your ethercard to a new I/O addr. Valid
  899.     I/O addr. for all the cards are listed in 
  900.     <ref id="probe" name="Probed Addresses">
  901.     You can also point the mcd driver off in another direction
  902.     by a boot-time parameter (via LILO) such as:
  903. <tscreen>
  904.     mcd=0x200,12
  905. </tscreen>
  906.  
  907.     <bf/Problem:/
  908.     Old wd8003 and/or jumper-settable wd8013 always get the IRQ wrong.
  909.  
  910.     <bf/Reason:/
  911.     The old wd8003 cards and jumper-settable wd8013 clones don't 
  912.     have the EEPROM that the driver can read the IRQ setting from.
  913.     If the driver can't read the IRQ, then it tries to auto-IRQ
  914.     to find out what it is. And if auto-IRQ returns zero, then
  915.     the driver just assigns IRQ 5 for an 8 bit card or IRQ 10 for
  916.     a 16 bit card.
  917.  
  918.     <bf/Solution:/
  919.     Avoid the auto-IRQ code, and tell the kernel what the IRQ
  920.     that you have jumpered the card to is via a boot time argument.
  921.     For example, if you are using IRQ 9, using the following
  922.     should work. 
  923.  
  924. <tscreen>
  925.     LILO: linux ether=9,0,eth0
  926. </tscreen>
  927.  
  928. <sect1>Problems with 3Com cards<label id="3com-probs">
  929. <p>
  930.     <bf/Problem:/
  931.     The 3c503 picks IRQ N, but this is needed for some
  932.     other device which needs IRQ N. (eg. CD ROM driver, modem, etc.)
  933.     Can this be fixed without compiling this into the kernel?
  934.  
  935.     <bf/Solution:/
  936.     The 3c503 driver probes for a free IRQ line in the order
  937.     {5, 9/2, 3, 4}, and it should pick a line which isn't being
  938.     used. Very old drivers used to pick the IRQ line
  939.     at boot-time, and the current driver (0.99pl12 and newer) chooses when
  940.     the card is open()/ifconfig'ed. 
  941.  
  942.     Alternately, you can fix the IRQ at boot by passing
  943.     parameters via LILO. The following selects IRQ9, base
  944.     location 0x300, <ignored value>, and if_port #1 (the
  945.     external transceiver).
  946.  
  947. <tscreen>
  948.       LILO: linux ether=9,0x300,0,1,eth0
  949. </tscreen>
  950.  
  951.     The following selects IRQ3, probes for the base location,
  952.     <ignored value>, and the default if_port #0 (the internal
  953.     transceiver)
  954.  
  955. <tscreen>
  956.       LILO: linux ether=3,0,0,0,eth0
  957. </tscreen>
  958.  
  959.     <bf/Problem:/
  960.     3c503: configured interrupt X invalid, will use autoIRQ.
  961.  
  962.     <bf/Reason:/
  963.     The 3c503 card can only use one of IRQ{5, 2/9, 3, 4}
  964.     (These are the only lines that are connected to the card.)
  965.     If you pass in an IRQ value that is not in the above
  966.     set, you will get the above message.
  967.     Usually, specifying an interrupt value for the 3c503 is
  968.     not necessary. The 3c503 will autoIRQ when it gets
  969.     ifconfig'ed, and pick one of IRQ{5, 2/9, 3, 4}.
  970.  
  971.     <bf/Solution:/
  972.     Use one of the valid IRQs listed above, or enable
  973.     autoIRQ by not specifying the IRQ line at all.
  974.  
  975.     <bf/Problem:/
  976.     The supplied 3c503 drivers don't use the AUI (thicknet) port.
  977.     How does one choose it over the default thinnet port?
  978.  
  979.     <bf/Solution:/
  980.     The 3c503 AUI port can be selected at boot-time with 0.99pl12
  981.     and later. The selection is overloaded onto the low bit of
  982.     the currently-unused dev->rmem_start variable, so a boot-time
  983.     parameter of:
  984.  
  985. <tscreen>
  986.     LILO: linux ether=0,0,0,1,eth0
  987. </tscreen>
  988.  
  989.     should work. A boot line to force IRQ 5, port base 0x300,
  990.     and use an external transceiver is:
  991.  
  992. <tscreen>
  993.     LILO: linux ether=5,0x300,0,1,eth0
  994. </tscreen>
  995.  
  996.     With kernels 1.3.42 and newer, you can specify the
  997.     AUI port when loading as a module as well. Just append
  998.     <tt/xcvr=1/ to the <tt/insmod/ command line along with
  999.     your i/o and irq values.
  1000.  
  1001.     Also note that kernel revisions 1.00 to 1.03 had an 
  1002.     interesting `feature'. They would switch to the AUI port
  1003.     when the internal transceiver failed. This is a problem,
  1004.     as it will <em/never/ switch back if for example you 
  1005.     momentarily disconnect the cable. Kernel versions 1.04
  1006.     and newer only switch if the very first Tx attempt fails.
  1007.  
  1008. <sect1>Problems with Hewlett Packard Cards<label id="hp-probs">
  1009. <p>
  1010.  
  1011.     <bf/Problem:/
  1012.     HP Vectra using built in AMD LANCE chip gets IRQ and DMA wrong.
  1013.  
  1014.     <bf/Solution:/
  1015.     The HP Vectra uses a different implementation to the
  1016.     standard HP-J2405A. The `lance.c' driver used to
  1017.     <em/always/ use the value in the setup register of an HP Lance 
  1018.     implementation.  In the Vectra case it's reading an invalid
  1019.     0xff value. Kernel versions newer than about 1.1.50
  1020.     now handle the Vectra in an appropriate fashion.
  1021.  
  1022.     <bf/Problem:/
  1023.     HP Card is not detected at boot, even though kernel was
  1024.     compiled with `HP PCLAN support'.
  1025.  
  1026.     <bf/Solution:/
  1027.     You probably have a HP PCLAN+  -- note the `plus'. Support
  1028.     for the PCLAN+ was added to mid/late versions of 1.1.
  1029.     Recompile a (possibly newer) kernel with support for the
  1030.     HP PCLAN+ and you should be in business.
  1031.  
  1032.  
  1033. <sect1>FAQs Not Specific to Any Card.
  1034. <p>
  1035.  
  1036. <sect2>Ethercard is Not Detected at Boot.
  1037. <p>
  1038.  
  1039.     The usual reason for this is that people are using a kernel
  1040.     that does not have support for their particular card built
  1041.     in. If you are using a pre-compiled kernel that is part of
  1042.     a distribution set, then check the documentation to see which
  1043.     kernel you installed, and if it was built with support
  1044.     for your particular card. If it wasn't, then your
  1045.     options are to try and get one that has support
  1046.     for your card, or build your own.
  1047.  
  1048.     It is usually wise to build your own kernel with only
  1049.     the drivers you need, as this cuts down on the kernel
  1050.     size (saving your precious RAM for applications!) and
  1051.     reduces the number of device probes that can upset
  1052.     sensitive hardware. Building a kernel is not as complicated
  1053.     as it sounds. You just have to answer yes or no to 
  1054.     a bunch of questions about what drivers you want, and
  1055.     it does the rest.
  1056.  
  1057.     The next main cause is having another device using part
  1058.     of the i/o space that your card needs. Most cards are
  1059.     16 or 32 bytes wide in i/o space. If your card is set 
  1060.     at 0x300 and 32 bytes wide, then the driver will ask 
  1061.     for 0x300-0x31f. If any other device driver has registered 
  1062.     even one port anywhere in that range, the probe will not
  1063.     take place at that address and  the driver will silently 
  1064.     continue to the next of the probed addresses. So, after 
  1065.     booting, do a <tt>cat /proc/ioports</tt> and verify that the 
  1066.     full iospace that the card will require is vacant.
  1067.  
  1068.     Another problem is having your card jumpered to an i/o
  1069.     address that isn't probed by default. There is a list
  1070.     <ref id="probe" name="probed addresses"> for each card
  1071.     in this document. Even if the i/o setting of your card is
  1072.     not in the list of porbed addresses, you can supply
  1073.     it at boot with the <tt/ether=/ command as described in
  1074.     <ref id="lilo" name="Passing Ethernet Arguments...">
  1075.  
  1076.  
  1077. <sect2><tt/ifconfig/ reports the wrong i/o address for the card.
  1078. <p>
  1079.  
  1080.     No it doesn't. You are just interpreting it incorrectly.
  1081.     This is <em/not/ a bug, and the numbers reported are correct. It just
  1082.     happens that some 8390 based cards (wd80x3, smc-ultra, etc) have the
  1083.     actual 8390 chip living at an offset from the first assigned i/o port.
  1084.     Try <tt>cd /usr/src/linux/drivers/net;grep NIC_OFFSET *.c|more</tt>
  1085.     to see what is going on. This is the value stored in 
  1086.     <tt/dev->base_addr/, and is what <tt/ifconfig/ reports. If you 
  1087.     want to see the full range of ports that your card uses, then try 
  1088.     <tt>cat /proc/ioports</tt> which will give the numbers you expect.
  1089.  
  1090. <sect2>Shared Memory ISA cards in PCI Machine
  1091. <p>
  1092.  
  1093.     This will usually show up as reads of lots of <tt/0xffff/ values.
  1094.     No shared memory cards of any type will work in a PCI machine
  1095.     unless you have the PCI ROM BIOS/CMOS SETUP configuration set
  1096.     properly. You have to set it to allow shared memory access
  1097.     from the ISA bus for the memory region that your card is trying 
  1098.     to use. If you can't figure out which settings are applicable
  1099.     then ask your supplier or local computer guru.
  1100.  
  1101. <sect2>Asynchronous Transfer Mode (ATM) Support
  1102. <p>
  1103.  
  1104.     Werner Almesberger has been playing around with ATM support
  1105.     for linux. 
  1106.     He has been working with the Efficient Networks ENI155p
  1107.     board (<url url="http://www.efficient.com/"
  1108.         name="Efficient Networks">)
  1109.     and the Zeitnet ZN1221 board
  1110.     (<url url="http://www.zeitnet.com/" name="Zeitnet">).
  1111.  
  1112.     Werner says that the driver for the ENI155p is rather
  1113.     stable, while the driver for the ZN1221 is presently 
  1114.     unfinished.
  1115.     
  1116.     Check the latest/updated status at the following URL:
  1117.  
  1118.     <url url="http://lrcwww.epfl.ch/linux-atm/"
  1119.         name="Linux ATM Support">
  1120.  
  1121. <sect2>FDDI Support
  1122. <p>
  1123.     Is there FDDI support for Linux?
  1124.  
  1125.     Donald writes: `No, there is no Linux driver for any FDDI boards. 
  1126.     I come from a place with supercomputers, so an external 
  1127.     observer might think
  1128.     FDDI would be high on my list. But FDDI never delivered end-to-end
  1129.     throughput that would justify its cost, and it seems to be a nearly
  1130.     abandoned technology now that 100base{X,Anynet} seems imminent.
  1131.     (And yes, I know you can now get FDDI boards for <$1K. That
  1132.     seems to be a last-ditch effort to get some return on the
  1133.     development investment. Where is the next generation of FDDI
  1134.     going to come from?)'
  1135.  
  1136. <sect2>Ethernet Cards for Linux on Alpha/AXP PCI Boards
  1137. <p>
  1138.  
  1139.     At present only the depca, de4x5 and all the 8390 drivers
  1140.     (wd, smc-ultra, ne, 3c503, e2100, ac3200, hp, hp-plus) have
  1141.     been made `architecture independent' so as to work on the
  1142.     DEC Alpha CPU based systems.
  1143.  
  1144.     Note that the changes that are required aren't that complicated.
  1145.     You only need to do the following:
  1146.  
  1147.     -multiply all <tt/jiffies/ related values by HZ/100 to account
  1148.     for the different HZ value that the Alpha uses. 
  1149.     (i.e <tt/timeout=2;/ becomes <tt>timeout=2*HZ/100;</tt>)
  1150.  
  1151.     -replace any i/o memory (640k to 1MB) pointer dereferences with
  1152.     the appropriate readb() writeb() readl() writel() calls, as
  1153.     shown in this example.
  1154.  
  1155. <code>
  1156. -    int *mem_base = (int *)dev->mem_start;
  1157. -    mem_base[0] = 0xba5eba5e;
  1158. +    unsigned long mem_base = dev->mem_start;
  1159. +    writel(0xba5eba5e, mem_base);
  1160. </code>
  1161.  
  1162.     -replace all memcpy() calls that have i/o memory as source or 
  1163.     target destinations with the appropriate one of
  1164.     <tt/memcpy_fromio()/ or <tt/memcpy_toio()/.
  1165.  
  1166. <sect2>Linking 10BaseT without a Hub
  1167. <p>
  1168.  
  1169.      Can I link 10BaseT (RJ45) based systems together without a hub?
  1170.  
  1171.      You can link 2 machines easily, but no more than that, without
  1172.      extra devices/gizmos. See <ref id="utp" name="Twisted Pair">
  1173.      -- it explains
  1174.      how to do it. And no, you can't hack together a hub just by
  1175.      crossing a few wires and stuff. It's pretty much impossible 
  1176.      to do the collision signal right without duplicating a hub.
  1177.  
  1178. <sect2>SIOCSIFxxx: No such device 
  1179. <p>
  1180.  
  1181.     I get a bunch of `SIOCSIFxxx: No such device' messages at
  1182.     boot, followed by a `SIOCADDRT: Network is unreachable'
  1183.     What is wrong?
  1184.  
  1185.     Your ethernet device was not detected at boot, and when 
  1186.     <tt/ifconfig/ and <tt/route/ are run, they have no device
  1187.     to work with. Use <tt>dmesg | more</tt> to review the 
  1188.     boot messages and see if there are any messages about
  1189.     detecting an ethernet card.
  1190.  
  1191. <sect2>SIOCSFFLAGS: Try again
  1192. <p>
  1193.  
  1194.     I get `SIOCSFFLAGS: Try again' when I run `ifconfig' -- Huh?
  1195.  
  1196.     Some other device has taken the IRQ that your ethercard
  1197.     is trying to use, and so the ethercard can't use the IRQ.
  1198.     You don't necessairly need to reboot to resolve this, as
  1199.     some devices only grab the IRQs when they need them and
  1200.     then release them when they are done. Examples are some
  1201.     sound cards, serial ports, floppy disk driver, etc. You
  1202.     can type <tt>cat /proc/interrupts</tt> to see which interrupts
  1203.     are presently <em/in use/. Most of the
  1204.     Linux ethercard drivers only grab the IRQ when they are
  1205.     opened for use via `ifconfig'. If you can get the other
  1206.     device to `let go' of the required IRQ line, then you
  1207.     should be able to `Try again' with ifconfig.
  1208.  
  1209. <sect2>Link UNSPEC and HW-addr of 00:00:00:00:00:00
  1210. <p>
  1211.  
  1212.     When I run ifconfig with no arguments, it reports that
  1213.     LINK is UNSPEC (instead of 10Mbs Ethernet) and it
  1214.     also says that my hardware address is all zeros.
  1215.  
  1216.     This is because people are running a newer version of
  1217.     the `ifconfig' program than their kernel version. This
  1218.     new version of ifconfig is not able to report these properties
  1219.     when used in conjunction with an older kernel. You can either
  1220.     upgrade your kernel, `downgrade' ifconfig, or simply ignore
  1221.     it. The kernel knows your hardware address, so it really
  1222.     doesn't matter if ifconfig can't read it.
  1223.     
  1224. <sect2>Huge Number of RX and TX Errors
  1225. <p>
  1226.  
  1227.     When I run ifconfig with no arguments, it reports that I
  1228.     have a huge error count in both rec'd and transmitted
  1229.     packets. It all seems to work ok -- What is wrong?
  1230.  
  1231.     Look again. It says <tt/RX packets/ <em/big number/ <bf/PAUSE/
  1232.     <tt/errors 0/ <bf/PAUSE/ <tt/dropped 0/ <bf/PAUSE/ <tt/overrun 0/.
  1233.     And the same for the <tt/TX/ column.
  1234.     Hence the big numbers you are seeing are the total number of
  1235.     packets that your machine has rec'd and transmitted.
  1236.     If you still find it confusing, try typing
  1237.     <tt>cat /proc/net/dev</tt> instead.
  1238.  
  1239. <sect2>Entries in <tt>/dev/</tt> for Ethercards
  1240. <p>
  1241.  
  1242.      I have /dev/eth0 as a link to /dev/xxx. Is this right?
  1243.  
  1244.      Contrary to what you have heard, the files in /dev/* are not used.
  1245.      You can delete any <tt>/dev/wd0, /dev/ne0</tt> and similar entries.
  1246.  
  1247. <sect2>Linux and ``trailers''
  1248. <p>
  1249.  
  1250.     Should I disable trailers when I `ifconfig' my ethercard?
  1251.  
  1252.     You can't disable trailers, and you shouldn't want 
  1253.     to. `Trailers' are a hack to avoid data copying in the
  1254.     networking layers. The idea was to use a trivial 
  1255.     fixed-size header of size `H', put the variable-size header 
  1256.     info at the end of the packet, and allocate all
  1257.     packets `H' bytes before the start of a page. While it was a
  1258.     good idea, it turned out to not work well in practice.
  1259.     If someone suggests the use of `-trailers', note that it
  1260.     is the equivalent of sacrificial goats blood. It won't do
  1261.     anything to solve the problem, but if problem fixes itself then
  1262.     someone can claim deep magical knowledge.
  1263.  
  1264.  
  1265. <sect2>Access to the raw Ethernet Device
  1266. <p>
  1267.  
  1268.     How do I get access to the raw ethernet device in linux,
  1269.     without going through TCP/IP and friends?
  1270.  
  1271. <code>
  1272.     int s=socket(AF_INET,SOCK_PACKET,htons(ETH_P_ALL));
  1273. </code>
  1274.  
  1275.     This gives you a socket receiving every protocol type. 
  1276.     Do <tt/recvfrom()/ calls to it and it will fill the sockaddr 
  1277.     with device type in sa_family and the device name in the 
  1278.     sa_data array. I don't know who originally invented 
  1279.     SOCK_PACKET for Linux (its been in for ages) but its superb stuff.
  1280.     You can use it to send stuff raw too via <tt/sendto()/ calls.
  1281.     You have to have root access to do either of course.
  1282.  
  1283. <sect>Performance Tips<label id="perf">
  1284. <p>
  1285.  
  1286.     Here are some tips that you can use if you are suffering
  1287.     from low ethernet throughput, or to gain a bit more
  1288.     speed on those ftp transfers.
  1289.  
  1290.     The <tt/ttcp.c/ program is a good test for measuring
  1291.     raw throughput speed. Another common trick is to do
  1292.     a <tt>ftp> get large_file /dev/null</tt> where 
  1293.     <tt/large_file/ is > 1MB and residing in the buffer
  1294.     cache on the Tx'ing machine. (Do the `get' at least
  1295.     twice, as the first time will be priming the buffer
  1296.     cache on the Tx'ing machine.) You want the file in
  1297.     the buffer cache because you are not interested in
  1298.     combining the file access speed from the disk into
  1299.     your measurement. Which is also why you send the
  1300.     incoming data to <tt>/dev/null</tt> instead of onto
  1301.     the disk.
  1302.  
  1303. <sect1>General Concepts
  1304. <p>
  1305.  
  1306.     Even an 8 bit card is able to receive back-to-back packets
  1307.     without any problems. The difficulty arises when the computer
  1308.     doesn't get the Rx'd packets off the card quick enough to
  1309.     make room for more incoming packets. If the computer does not
  1310.     quickly clear the card's memory of the packets already received, 
  1311.     the card will have no place to put the new packet. 
  1312.  
  1313.     In this case
  1314.     the card either drops the new packet, or writes over top of
  1315.     a previously received packet. Either one seriously interrupts
  1316.     the smooth flow of traffic by causing/requesting re-transmissions
  1317.     and can seriously degrade performance by up to a factor of 5!
  1318.  
  1319.     Cards with more onboard memory are able to ``buffer'' more
  1320.     packets, and thus can handle larger bursts of 
  1321.     back-to-back packets without dropping packets.
  1322.     This in turn means that the card does not require as low
  1323.     a latency from the the host computer with respect to pulling 
  1324.     the packets out of the buffer to avoid dropping packets.
  1325.  
  1326.     Most 8 bit cards have an 8kB buffer, and most 16 bit cards have
  1327.     a 16kB buffer. Most Linux drivers will reserve 3kB of that
  1328.     buffer (for two Tx ping-pong buffers), leaving only 5kB of 
  1329.     receive space for an 8 bit card. This is room enough for
  1330.     only three full sized (1500 bytes) ethernet packets.
  1331.  
  1332. <sect1>ISA Bus Speed
  1333. <p>
  1334.     As mentioned above, if the packets are removed from the card
  1335.     fast enough, then a drop/overrun condition won't occur even
  1336.     when the amount of Rx packet buffer memory is small. The 
  1337.     factor that sets the rate at which packets are removed from
  1338.     the card to the computer's memory is the speed of the data path 
  1339.     that joins the two -- that being the ISA bus speed. (If the
  1340.     CPU is a dog-slow 386sx-16, then this will also play a role.)
  1341.  
  1342.     The recommended ISA bus clock is about 8MHz, but many
  1343.     motherboards and peripheral devices can run at higher
  1344.     frequencies. The clock frequency for the ISA bus can usually
  1345.     be set in the CMOS setup, by selecting a divisor of the 
  1346.     mainboard/CPU clock frequency.
  1347.  
  1348.     For example, here are some receive speeds as measured by
  1349.     the TTCP program on a 40MHz 486, with an old 8 bit WD8003EP
  1350.     card, for different ISA bus speeds.
  1351.  
  1352. <code>
  1353.     ISA Bus Speed (MHz)    Rx TTCP (kB/s)
  1354.     -------------------    --------------
  1355.     6.7            740
  1356.     13.4            970
  1357.     20.0            1030
  1358.     26.7            1075
  1359. </code>
  1360.  
  1361.     You would be hard pressed to do better than 1075kB/s with
  1362.     <em/any/ 10Mb/s ethernet card, using TCP/IP. However, don't expect 
  1363.     every system to work at fast ISA bus speeds. Most systems will
  1364.     not function properly at speeds above 13MHz. (Also, most
  1365.     PCI systems have the ISA bus speed fixed at 8MHz, so that
  1366.     the end user does not have the option of increasing it.)
  1367.  
  1368.     In addition to faster transfer speeds, one will usually also 
  1369.     benefit from a reduction in CPU usage due to the shorter
  1370.     duration memory and i/o cycles. (Note that hard disks and
  1371.     video cards located on the ISA bus will also usually experience
  1372.     a performance increase from an increased ISA bus speed.)
  1373.  
  1374. <sect1>Setting the TCP Rx Window
  1375. <p>
  1376.  
  1377.     Once again, cards with small amounts of onboard RAM and
  1378.     relatively slow data paths between the card and the computer's
  1379.     memory run into trouble. The default TCP Rx 
  1380.     window setting is 32kB, which means that a fast computer on 
  1381.     the same subnet as you can dump 32k of data on you without 
  1382.     stopping to see if you received any of it okay.
  1383.  
  1384.     Recent versions of the <tt/route/ command have the ability
  1385.     to set the size of this window on the fly. Usually it is only
  1386.     for the local net that this window must be reduced, as computers
  1387.     that are behind a couple of routers or gateways are `buffered'
  1388.     enough to not pose a problem. An example usage would be:
  1389.  
  1390. <code>
  1391.     route add <whatever> ... window <win_size>
  1392. </code>
  1393.  
  1394.     where <tt/win_size/ is the size of the window you wish to
  1395.     use (in bytes). An 8 bit 3c503 card on an ISA bus operating
  1396.     at a speed of 10MHz or less would work well with a window
  1397.     size of about 4kB. Too large a window will cause overruns
  1398.     and dropped packets, and a drastic reduction in ethernet
  1399.     throughput. You can check the operating status by doing
  1400.     a <tt>cat /proc/net/dev</tt> which will display any
  1401.     dropped or overrun conditions that occurred.
  1402.  
  1403.     
  1404. <sect1>Increasing NFS performance
  1405. <p>
  1406.     Some people have found that using 8 bit
  1407.     cards in NFS clients causes poorer than expected performance,
  1408.     when using 8kB (native Sun) NFS packet size.
  1409.  
  1410.     The possible reason for this could be due to the difference
  1411.     in on board buffer size between the 8 bit and the 16 bit cards.
  1412.     The maximum ethernet packet size is about 1500 bytes. Now that 
  1413.     8kB NFS packet will arrive as about 6 back to back maximum size 
  1414.     ethernet packets. Both the 8 and 16 bit cards have no problem
  1415.     Rx'ing back to back packets. The problem arises when the machine
  1416.     doesn't remove the packets from the cards buffer in time, and the
  1417.     buffer overflows. The fact that 8 bit cards take an extra ISA
  1418.     bus cycle per transfer doesn't help either. What you <em/can/ do
  1419.     if you have an 8 bit card is either set the NFS transfer
  1420.     size to 4kB, or try increasing the ISA bus speed in order to
  1421.     get the card's buffer cleared out faster.
  1422.  
  1423. <sect>Vendor/Manufacturer/Model Specific Information<label id="card-intro">
  1424. <p>
  1425.  
  1426. <sect1>3Com<label id="3com">
  1427. <p>
  1428.  
  1429.     If you are not sure what your card is, but you think it is a
  1430.     3Com card, you can probably figure it out from the assembly
  1431.     number. 3Com has a document `Identifying 3Com Adapters By 
  1432.     Assembly Number' (ref 24500002) that would most likely clear
  1433.     things up. See
  1434.     <ref id="3com-tech" name="Technical Information from 3Com">
  1435.     for info on how to get documents from 3Com.
  1436.  
  1437.     Also note that 3Com has a FTP site with various goodies:
  1438.     <tt/ftp.3Com.com/ that you may want to check out.
  1439.  
  1440.     For those of you browsing this document by a WWW browser, you
  1441.     can try 3Com's WWW site
  1442.  
  1443. <sect2>3c501<label id="3c501">
  1444. <p>
  1445.  
  1446.     Status -- <em/Semi-Supported/
  1447.  
  1448.     Too brain-damaged to use. Available surplus from many
  1449.     places. Avoid it like the plague. Again, do not
  1450.     purchase this card, even as a joke. It's performance
  1451.     is horrible, and it breaks in many ways.
  1452.  
  1453.     Cameron L. Spitzer of 3Com said:
  1454.     ``I'm speaking only for myself here, of course, but I
  1455.     believe 3Com advises against installing a 3C501 in a
  1456.     new system, mostly for the same reasons Donald has
  1457.     discussed. You probably won't be happy with the
  1458.     3C501 in your Linux box. The data sheet is marked
  1459.     `(obsolete)' on 3Com's Developers' Order Form, and
  1460.     the board is not part of 3Com's program for sending
  1461.     free Technical Reference Manuals to people who need
  1462.     them. The decade-old things are nearly
  1463.     indestructible, but that's about all they've got
  1464.     going for them any more.''
  1465.  
  1466.     For those not yet convinced, the 3c501 can only do one
  1467.     thing at a time -- while you are removing one packet
  1468.     from the single-packet buffer it cannot receive
  1469.     another packet, nor can it receive a packet while 
  1470.     loading a transmit packet. This was fine for a
  1471.     network between two 8088-based computers where
  1472.     processing each packet and replying took 10's of
  1473.     msecs, but modern networks send back-to-back
  1474.     packets for almost every transaction.
  1475.  
  1476.     AutoIRQ works, DMA isn't used, the autoprobe only
  1477.     looks at <tt/0x280/ and <tt/0x300/, and the debug level is set
  1478.     with the third boot-time argument. 
  1479.  
  1480.     Once again, the use of a 3c501 is <em/strongly discouraged/!
  1481.     Even more so with a IP multicast kernel, as you will
  1482.     grind to a halt while listening to <em/all/ multicast
  1483.     packets. See the comments at the top of the source code
  1484.     for more details.
  1485.  
  1486. <sect2>3c503, 3c503/16<label id="3c503">
  1487. <p>
  1488.  
  1489.     Status -- <em/Supported/
  1490.  
  1491.     If you have a 3c503/16 you may be interested to know
  1492.     that as of 1.3.37 the driver has the facility to use
  1493.     the full 16kB RAM on your card. Previous versions treated
  1494.     the 16bit cards as 8bit cards, and only used half of
  1495.     the available RAM. This update also detects the newer
  1496.     3Com prefix found on newly manufactured cards mentioned
  1497.     below.
  1498.  
  1499.     Recently made 3c503/16 cards have a new
  1500.     base hardware address because 3Com ran out of 
  1501.     numbers (they made too many cards!) The cards used
  1502.     to start with 02 60 8C and the newer ones use
  1503.     00 20 AF. Up to 1.3.37, the driver will only check
  1504.     for the old address, and skip over the newer cards.
  1505.     You can upgrade to a kernel newer than 1.3.37, or
  1506.     change the numbers in 3c503.c for older kernels.
  1507.  
  1508.     These shared-memory ethercards also have a
  1509.     programmed I/O mode that doesn't use the 8390
  1510.     facilities (their engineers found too many bugs!)
  1511.     It should be about the same speed as the same bus
  1512.     width WD80x3, but it is actually a bit slower.
  1513.     The 3c503 does not have ``EEPROM setup'', 
  1514.     so a diagnostic/setup program
  1515.     isn't needed before running the card with Linux. The
  1516.     shared memory address of the 3c503 is set using jumpers
  1517.     that are shared with the boot PROM address. This is
  1518.     confusing to people familiar with other ISA cards,
  1519.     where you always leave the jumper set to ``disable''
  1520.     unless you have a boot PROM.
  1521.  
  1522.     The Linux 3c503 driver can also work with the 3c503
  1523.     in programmed-I/O mode, but this is slower and less
  1524.     reliable than shared memory mode. Also, programmed-I/O
  1525.     mode is not as well tested when updating the drivers.
  1526.     You still shouldn't use the programmed-I/O mode though,
  1527.     unless you need it for MS-DOS compatibility.
  1528.  
  1529.     The 3c503's IRQ line is set in software, with no hints
  1530.     from an EEPROM. Unlike the MS-DOS drivers, the
  1531.     Linux driver has capability to autoIRQ: it uses the
  1532.     first available IRQ line in {5,2/9,3,4}, selected each
  1533.     time the card is ifconfig'ed. (Older driver versions
  1534.     selected the IRQ at boot time.) The ioctl() call
  1535.     in `ifconfig' will return EAGAIN if no IRQ line is
  1536.     available at that time.
  1537.  
  1538.     Some common problems that people have with the 503
  1539.     are discussed in <ref id="3com-probs" name="Problems with...">.
  1540.  
  1541.     If you intend on using this driver as a loadable module
  1542.     you should probably see 
  1543.     <ref id="modules" name="Using the Ethernet Drivers as Modules">
  1544.     and also
  1545.     <ref id="mod8390" name="8390 Based Cards as Modules"> for
  1546.     module specific information.
  1547.  
  1548.  
  1549.  
  1550. <sect2>3c505<label id="3c505">
  1551. <p>
  1552.  
  1553.     Status -- <em/Semi-Supported/
  1554.  
  1555.     This is a driver that was written by Craig Southeren
  1556.     <tt/geoffw@extro.ucc.su.oz.au/. These cards also
  1557.     use the i82586 chip.
  1558.     There are not that many of these cards about. 
  1559.     It is included in the standard kernel, but it is classed as 
  1560.     an alpha driver. See <ref id="alfa" name="Alpha Drivers"> 
  1561.     for important information on using alpha-test ethernet drivers
  1562.     with Linux.
  1563.  
  1564.     There is also the file
  1565.     <tt>/usr/src/linux/drivers/net/README.3c505</tt>
  1566.     that you should read if you are going to use one of these cards.
  1567.     It contains various options that you can enable/disable.
  1568.     Technical information is available in 
  1569.     <ref id="i82586" name="Programming the Intel chips">.
  1570.  
  1571. <sect2>3c507<label id="3c507">
  1572. <p>
  1573.     Status -- <em/Semi-Supported/
  1574.  
  1575.     This card uses one of the Intel chips, and the
  1576.     development of the driver is closely related to
  1577.     the development of the Intel Ether Express driver.
  1578.     The driver is included in the standard kernel
  1579.     release, but as an alpha driver. 
  1580.  
  1581.     See <ref id="alfa" name="Alpha Drivers"> for important
  1582.     information on using alpha-test ethernet drivers
  1583.     with Linux. Technical information is available in 
  1584.     <ref id="i82586" name="Programming the Intel chips">.
  1585.  
  1586. <sect2>3c509 / 3c509B<label id="3c509">
  1587. <p>
  1588.  
  1589.     Status -- <em/Supported/
  1590.  
  1591.     Note: Donald has an updated driver for these cards
  1592.     that is not presently in the default kernel. It
  1593.     fixes harmless <tt/irq N for unknown device/
  1594.     messages at boot, has better handling for 
  1595.     the 3c509B Plug and Pray cards, and recovers from
  1596.     certain adapter failure status values.
  1597.  
  1598.     It's fairly inexpensive and has
  1599.     excellent performance for a non-bus-master design. 
  1600.     The drawbacks are that the original 3c509
  1601.     requires very low interrupt latency. The 3c509B
  1602.     shouldn't suffer from the same problem, due to 
  1603.     having a larger buffer. (See below.)
  1604.  
  1605.     Note that the ISA card detection uses a different method
  1606.     than most cards. Basically, you ask the cards to respond
  1607.     by sending data to an ID_PORT (port <tt/0x100/). Note that
  1608.     if you have some other strange ISA card using an I/O range
  1609.     that includes the ID_PORT of the 3c509, it will probably
  1610.     not get detected. Note that you can change the ID_PORT to 
  1611.     <tt/0x110/ or <tt/0x120/ or... in <tt/3c509.c/ if you have
  1612.     a conflicting ISA card, and the 3c509 will still be happy.
  1613.     Also note that this detection method means that
  1614.     a particular card will <em/always/ get detected first
  1615.     in a multiple ISA 3c509 configuration. 
  1616.     The card with the lowest hardware ethernet address
  1617.     will <em/always/ end up being <tt/eth0/. This shouldn't matter
  1618.     to anyone, except for those people who want to assign
  1619.     a 6 byte hardware address to a particular interface.
  1620.     If you have multiple 3c509 cards, it is best to append
  1621.     <tt/ether=0,0,ethN/ commands without the i/o port specified
  1622.     (i.e. use i/o=zero) and allow the probe to sort out which
  1623.     card is first, otherwise it may not detect all your cards.
  1624.  
  1625.     The original 3c509 has a smaller packet buffer 
  1626.     (4kB total, 2kB Rx, 2kB Tx), causing the driver to
  1627.     occasionally drop a packet if interrupts are masked for
  1628.     too long. To minimize this problem, you can try unmasking
  1629.     interrupts during IDE disk transfers (see <tt/hdparm(8)/) and/or
  1630.     increasing your ISA bus speed so IDE transfers finish sooner.
  1631.  
  1632.     (Note that the driver could
  1633.     be completely rewritten to use predictive interrupts,
  1634.     but performance re-writes of working drivers are low
  1635.     priority unless there is some particular incentive or
  1636.     need.) 
  1637.  
  1638.     Cameron Spitzer writes:
  1639.     ``Beware that if you put a '509 in EISA addressing mode
  1640.     by mistake and save that in the EEPROM, you'll have
  1641.     to use an EISA machine or the infamous Test Via to
  1642.     get it back to normal, and it will conflict at IO
  1643.     location 0 which may hang your ISA machine. 
  1644.     I believe this problem is corrected in the 3C509B 
  1645.     version of the board.''
  1646.  
  1647.     The newer model 3c509B has 8kB on board, and the buffer
  1648.     can be split 4/4, 5/3 or 6/2 for Rx/Tx. This setting
  1649.     can also be stored on the EEPROM. This should alleviate the
  1650.     above problem with the original 3c509. At this point in
  1651.     time, the Linux driver is not aware of this, and treats
  1652.     the 3c509B as an older 3c509. 
  1653.  
  1654.     3c509B users should use the supplied DOS
  1655.     utility to disable the <em/plug and play/ support, <em/and/
  1656.     to set the output media to what they require.
  1657.     Cameron adds: 
  1658.     ``The 3C509B has 3Com's relocatable I/O port scheme, 
  1659.     and Microsoft[tm] Plug-and-play ("PnP").  You can't use them 
  1660.     both at the same time.  Some (broken, IMHO) BIOSes begin a PnP 
  1661.     sequence by writing to the PnP address (0x279 ?), which causes 
  1662.     PnP adapters like 3C509B to enter the PnP state, but then they 
  1663.     (these funny BIOSes) never come back to finish the job.
  1664.     The 3C509Bs hang there in the middle of the PnP ID Sequence, where
  1665.     they have no idea you didn't mean it and you're going to use the 3Com
  1666.     ID sequence after all.  3C5X9CFG /PNPRST clears this hang.
  1667.     Disable PnP if your drivers (eg., Linux) don't use it.
  1668.  
  1669.     It was a marketing decision to turn PnP on as a factory default setting.
  1670.     If it caused you a hassle, or not, please take the time to say so when
  1671.     you mail in your warranty card.  The more info they have, the better
  1672.     decisions they can make.  Also, check with your motherboard supplier 
  1673.     to see if you need a BIOS upgrade.''
  1674.  
  1675.     With regards to the media detection features, Cameron said:
  1676.     ``Autoselect is a feature of the commercial *drivers* for 3C509(B).
  1677.     AFAIK nobody ever claimed the Linux driver attempts it.
  1678.     When drivers/net/3c509.c recognizes my 3C509B at boot time, it says:
  1679.     <tt/eth0: 3c509 at 0x300 tag 1, 10baseT port, .../
  1680.     revealing that the card is configured for 10BASE-T.  It finds that out
  1681.     by reading the little EEPROM, which IMHO is the Right Way To Do It.''
  1682.  
  1683.  
  1684. <sect2>3c523<label id="3c523">
  1685. <p>
  1686.  
  1687.     Status -- <em/Not Supported/
  1688.  
  1689.     This MCA bus card uses the i82586, and now that people are
  1690.     actually running Linux on MCA machines, someone may wish
  1691.     to try and recycle parts of the 3c507 driver into a 
  1692.     driver for this card.
  1693.  
  1694. <sect2>3c527<label id="3c527">
  1695. <p>
  1696.  
  1697.     Status -- <em/Not Supported/
  1698.  
  1699.     Yes, another MCA card. No, not too much interest in it.
  1700.     Better chances with the 3c523 or the 3c529.
  1701.  
  1702. <sect2>3c529<label id="3c529">
  1703. <p>
  1704.  
  1705.     Status -- <em/Not Supported/
  1706.  
  1707.     This card actually uses the same chipset as the 3c509.
  1708.     Donald actually put hooks into the 3c509 driver to check
  1709.     for MCA cards after probing for EISA cards, and before
  1710.     probing for ISA cards. But it hasn't evolved much further
  1711.     than that. Donald writes:
  1712.  
  1713.     ``I don't have access to a MCA machine (nor do I fully understand 
  1714.     the probing code) so I never wrote the <tt/mca_adaptor_select_mode()/
  1715.     or <tt/mca_adaptor_id()/ routines. If you can find a way to get the 
  1716.     adaptor I/O address that assigned at boot time, you can just 
  1717.     hard-wire that in place of the commented-out probe. Be sure to 
  1718.     keep the code that reads the IRQ, if_port, and ethernet address.'' 
  1719.  
  1720. <sect2>3c562
  1721. <p>
  1722.  
  1723.     Status -- <em/Supported/
  1724.  
  1725.     This PCMCIA card is the combination of a 3c589B ethernet card
  1726.     with a modem. The modem appears as a standard modem to the
  1727.     end user. The only difficulty is getting the two separate
  1728.     linux drivers to share one interrupt. There are a couple of new
  1729.     registers and some hardware interrupt sharing support.
  1730.  
  1731.     Thanks again to Cameron for getting a sample unit and documentation
  1732.     sent off to David Hinds. Look for support in David's next
  1733.     PCMCIA package release.
  1734.  
  1735.  
  1736. <sect2>3c579<label id="3c579">
  1737. <p>
  1738.  
  1739.     Status -- <em/Supported/
  1740.  
  1741.     The EISA version of the 509. The current EISA version
  1742.     uses the same 16 bit wide chip rather than a 32 bit
  1743.     interface, so the performance increase isn't stunning.
  1744.     The EISA probe code was added to 3c509.c for 0.99pl14.
  1745.     We would be interested in hearing progress reports
  1746.     from any 3c579 users. (Read the above 3c509
  1747.     section for info on the driver.)
  1748.  
  1749.     Cameron Spitzer writes:
  1750.     ``The 3C579 (Etherlink III EISA) should be configured
  1751.     as an EISA card. The IO Base Address (window 0
  1752.     register 6 bits 4:0) should be 1f, which selects EISA
  1753.     addressing mode. Logic outside the ASIC decodes the
  1754.     IO address s000, where s is the slot number. I don't
  1755.     think it was documented real well. Except for its IO
  1756.     Base Address, the '579 should behave EXACTLY like 
  1757.     the'509 (EL3 ISA), and if it doesn't, I want to hear
  1758.     about it (at my work address).''
  1759.  
  1760.  
  1761. <sect2>3c589 / 3c589B<label id="3c589">
  1762. <p>
  1763.  
  1764.     Status -- <em/Semi-Supported/
  1765.  
  1766.     Many people have been using this PCMCIA card for quite some time    
  1767.     now. Note that support for it is not (at present) included
  1768.     in the default kernel source tree. You will also need
  1769.     a supported PCMCIA controller chipset. There are drivers
  1770.     available on Donald's ftp site:
  1771.  
  1772. <verb>
  1773.     cesdis.gsfc.nasa.gov:/pub/linux/pcmcia/README.3c589
  1774.     cesdis.gsfc.nasa.gov:/pub/linux/pcmcia/3c589.c
  1775.     cesdis.gsfc.nasa.gov:/pub/linux/pcmcia/dbether.c
  1776. </verb>
  1777.  
  1778.     Or for those that are <em/net-surfing/ you can try:
  1779.  
  1780.     <url url="http://cesdis.gsfc.nasa.gov/linux/pcmcia.html"
  1781.         name="Don's PCMCIA Stuff">
  1782.  
  1783.     You will still need a PCMCIA socket enabler as well.
  1784.  
  1785.     See <ref id="pcmcia" name="PCMCIA Support"> for more
  1786.     info on PCMCIA chipsets, socket enablers, etc.
  1787.  
  1788.     The "B" in the name means the same here as it does for
  1789.     the 3c509 case.
  1790.  
  1791. <sect2>3c590 / 3c595<label id="vortex">
  1792. <p>
  1793.  
  1794.     Status -- <em/Supported/
  1795.  
  1796.     These ``Vortex'' cards are for PCI bus machines, with the '590
  1797.     being 10Mbps and the '595 being 3Com's 100Mbs offering.
  1798.     Also note that you can run the '595 as a '590 (i.e. in a 10Mbps mode).
  1799.     The driver will eventually appear in the 1.3.x kernel, but you
  1800.     can get the driver now from the following URL:
  1801.  
  1802.     <url url="http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html"
  1803.         name="Vortex">
  1804.  
  1805.     3Com has been offering an evaluation deal where you get 2 '595 
  1806.     cards for a total price of $250. Check with your local
  1807.     3Com distributor to see if this is still available.
  1808.  
  1809.     A thanks to Cameron Spitzer and Terry Murphy of 3Com for
  1810.     sending cards and documentation to Donald so he could write
  1811.     the driver.
  1812.  
  1813. <sect2>3c597
  1814. <p>
  1815.  
  1816.     Status -- <em/Supported/
  1817.  
  1818.     This is the recently released EISA version of the 3c59x
  1819.     series of cards. The 3c597 (aka Demon) should work with
  1820.     the vortex driver discussed above.
  1821.  
  1822. <sect1>Accton<label id="accton">
  1823. <p>
  1824.  
  1825. <sect2>Accton MPX
  1826. <p>
  1827.  
  1828.     Status -- <em/Supported/
  1829.  
  1830.     Don't let the name fool you. This is still supposed to be a
  1831.     NE2000 compatible card. The MPX is supposed to stand for
  1832.     MultiPacket Accelerator, which, according to Accton, increases
  1833.     throughput substantially. But if you are already sending
  1834.     back-to-back packets, how can you get any faster...
  1835.  
  1836. <sect2>Accton EN1203, EN 1207, EtherDuo-PCI
  1837. <p>
  1838.  
  1839.     Status -- <em/Supported/
  1840.  
  1841.     This is another implementation of the DEC 21040 PCI chip.
  1842.  
  1843.     See <ref id="dec-21040" name="DEC 21040">
  1844.     for more information on these cards, and the present driver
  1845.     situation.
  1846.  
  1847.  
  1848. <sect2>Accton EN2212 PCMCIA Card
  1849. <p>
  1850.  
  1851.     Status -- <em/Semi-Supported/
  1852.  
  1853.     David Hinds has been working on a driver for this card, and
  1854.     you are best to check the latest release of his PCMCIA
  1855.     package to see what the present status is.
  1856.  
  1857. <sect1>Allied Telesyn/Telesis<label id="allied-telesis">
  1858. <p>
  1859.  
  1860. <sect2>AT1500<label id="at-1500">
  1861. <p>
  1862.  
  1863.     Status --<em/Supported/
  1864.  
  1865.     These are a series of low-cost ethercards using the 79C960 version 
  1866.     of the AMD LANCE. These are bus-master cards, and hence one of
  1867.     the faster ISA bus ethercards available.
  1868.  
  1869.     DMA selection and chip numbering information can be found in
  1870.     <ref id="lance" name="AMD LANCE">.
  1871.  
  1872.     More technical information on AMD LANCE based Ethernet cards
  1873.     can be found in <ref id="amd-notes" name="Notes on AMD...">.
  1874.  
  1875. <sect2>AT1700<label id="at1700">
  1876. <p>
  1877.  
  1878.     Status -- <em/Supported/
  1879.  
  1880.     The Allied Telesis AT1700 series ethercards are based
  1881.     on the Fujitsu MB86965. This chip uses a programmed
  1882.     I/O interface, and a pair of fixed-size transmit
  1883.     buffers. This allows small groups of packets to 
  1884.     be sent back-to-back, with a short pause while
  1885.     switching buffers.
  1886.     
  1887.     A unique feature is the ability to drive 150ohm STP
  1888.     (Shielded Twisted Pair) cable commonly installed for
  1889.     Token Ring, in addition to 10baseT 100ohm UTP
  1890.     (unshielded twisted pair).
  1891.     
  1892.     The Fujitsu chip used on the AT1700 has a design flaw: 
  1893.     it can only be fully reset by doing a power cycle of the machine.  
  1894.     Pressing the reset button doesn't reset the bus interface. This 
  1895.     wouldn't be so bad, except that it can only be reliably detected 
  1896.     when it has been freshly reset. The solution/work-around is to 
  1897.     power-cycle the machine if the kernel has a problem detecting
  1898.     the AT1700.
  1899.  
  1900.     Some production runs of the AT1700 had another problem: 
  1901.     they are permanently wired to DMA channel 5.  This is 
  1902.     undocumented, there are no jumpers to disable the "feature", 
  1903.     and no driver dares use the DMA capability because of 
  1904.     compatibility problems. No device driver will be
  1905.     written using DMA if installing a second card into
  1906.     the machine breaks both, and the only way to disable
  1907.     the DMA is with a knife.
  1908.  
  1909.     The at1700 driver is included in the standard 
  1910.     kernel source tree.
  1911.  
  1912. <sect2>AT2450<label id="at2450">
  1913. <p>
  1914.  
  1915.     Status -- <em/Supported/
  1916.  
  1917.     This is the PCI version of the AT1500, and it doesn't suffer
  1918.     from the problems that the Boca 79c970 PCI card does.
  1919.     Allied Telsyn was still `beta testing' the card in
  1920.     early/mid 1995, so it may not have spread to various
  1921.     retailers yet (but it doesn't hurt to ask.)
  1922.  
  1923.     DMA selection and chip numbering information can be found in
  1924.     <ref id="lance" name="AMD LANCE">.
  1925.  
  1926.     More technical information on AMD LANCE based Ethernet cards
  1927.     can be found in <ref id="amd-notes" name="Notes on AMD...">.
  1928.  
  1929. <sect1>AMD / Advanced Micro Devices<label id="amd">
  1930. <p>
  1931.  
  1932. <sect2>AMD LANCE (7990, 79C960, PCnet-ISA)<label id="lance">
  1933. <p>
  1934.  
  1935.     Status -- <em/Supported/
  1936.  
  1937.     There really is no AMD ethernet card. You are probably reading this
  1938.     because the only markings you could find on your card said AMD
  1939.     and the above number. The 7990 is the original `LANCE' chip,
  1940.     but most stuff (including this document) refer to all these 
  1941.     similar chips as `LANCE' chips. (...incorrectly, I might add.)
  1942.  
  1943.     These above numbers refer to chips from AMD
  1944.     that are the heart of many ethernet cards. 
  1945.     For example, the Allied Telesis AT1500 (see
  1946.     <ref id="at-1500" name="AT1500">) the NE1500/2100 (see
  1947.     <ref id="ne1500" name="NE1500">) and the Boca-VLB/PCI cards (see
  1948.     <ref id="boca-pci" name="Boca-VLB/PCI">)
  1949.  
  1950.     The 79C960 (a.k.a. PCnet-ISA) contains enhancements and bug fixes 
  1951.     over the original 7990 LANCE design.
  1952.  
  1953.     One common problem people have is the `busmaster arbitration
  1954.     failure' message. This is printed out when the LANCE driver
  1955.     can't get access to the bus after a reasonable amount of time
  1956.     has elapsed (50us). This usually indicates that the motherboard 
  1957.     implementation of bus-mastering DMA is broken, or some other device 
  1958.     is hogging the bus, or there is a DMA channel conflict. If your BIOS 
  1959.     setup has the `GAT option' (for Guaranteed Access Time) then try 
  1960.     toggling/altering that setting to see if it helps.
  1961.     
  1962.     Chances are that the existing LANCE driver will work
  1963.     with all AMD LANCE based cards. (except perhaps some of the
  1964.     original 7990 designs with shared memory.)
  1965.     This driver should also work with NE1500 and NE2100 clones.
  1966.  
  1967.     For the ISA bus master mode all structures used
  1968.     directly by the LANCE, the initialization block,
  1969.     Rx and Tx rings, and data buffers, must be accessible
  1970.     from the ISA bus, i.e. in the lower 16M of real memory.
  1971.     If more than 16MB of memory is installed, low-memory `bounce-buffers'
  1972.     are used when needed.
  1973.  
  1974.     The DMA channel can be set with the low bits
  1975.     of the otherwise-unused dev->mem_start value (a.k.a. PARAM_1).  
  1976.     (see <ref id="ether" name="PARAM_1">)
  1977.     If unset it is probed for by enabling each free DMA channel 
  1978.     in turn and checking if initialization succeeds.
  1979.  
  1980.     The HP-J2405A board is an exception: with this board it's easy 
  1981.     to read the EEPROM-set values for the IRQ, and DMA. 
  1982.  
  1983.     See <ref id="amd-notes" name="Notes on AMD...">
  1984.     for more info on these chips.
  1985.  
  1986. <sect2>AMD 79C961 (PCnet-ISA+)
  1987. <p>
  1988.  
  1989.     Status -- <em/Supported/
  1990.  
  1991.     This is the PCnet-ISA+  -- an enhanced version of the 79C960.
  1992.     It has support for jumper-less configuration and Plug and
  1993.     Play.  See the info in the above section.
  1994.  
  1995. <sect2>AMD 79C965 (PCnet-32)<label id="pcnet-32">
  1996. <p>
  1997.  
  1998.     Status -- <em/Supported/
  1999.  
  2000.     This is the PCnet-32 -- a 32 bit bus-master version of the
  2001.     original LANCE chip for VL-bus and local bus systems.
  2002.     Minor cleanups were added to the original lance driver
  2003.     around v1.1.50 to support these 32 bit versions of the LANCE
  2004.     chip.  The main problem was that the
  2005.     current versions of the '965 and '970 chips have a minor bug.
  2006.     They clear the Rx buffer length field in the Rx ring when they 
  2007.     are explicitly documented not to. Again, see the above info.
  2008.     
  2009. <sect2>AMD 79C970 (PCnet-PCI)<label id="pcnet-pci">
  2010. <p>
  2011.  
  2012.     Status -- <em/Supported/
  2013.  
  2014.     This is the PCnet-PCI -- similar to the PCnet-32, but designed
  2015.     for PCI bus based systems. Again, see the above info.
  2016.     Donald has modified
  2017.     the LANCE driver to use the PCI BIOS structure
  2018.     that was introduced by Drew Eckhardt for the PCI-NCR SCSI
  2019.     driver. This means that you need to build a kernel with
  2020.     PCI BIOS support enabled.
  2021.  
  2022.     Note that the Boca implementation of the 79C970 fails on
  2023.     fast Pentium machines. This is a hardware problem, as it
  2024.     affects DOS users as well. See the Boca section for more 
  2025.     details.
  2026.  
  2027. <sect2>AMD 79C974 (PCnet-SCSI)
  2028. <p>
  2029.  
  2030.     Status -- <em/Supported/
  2031.  
  2032.     This is the PCnet-SCSI --  which is basically treated like 
  2033.     a '970 from an Ethernet point of view. A minor '974 specific
  2034.     fix was added to the 1.1.8x kernels, so get a 1.1.90 or newer
  2035.     kernel. Also see the above info. Don't ask if the 
  2036.     SCSI half of the chip is supported -- this is the 
  2037.     <em/Ethernet-Howto/, not the SCSI-Howto.
  2038.  
  2039. <sect1>Ansel Communications<label id="ansel">
  2040. <p>
  2041.  
  2042. <sect2>AC3200 EISA
  2043. <p>
  2044.     
  2045.     Status -- <em/Semi-Supported/
  2046.  
  2047.     This driver is included in the present kernel as an
  2048.     alpha test driver. It is based on the common NS8390
  2049.     chip used in the ne2000 and wd80x3 cards.
  2050.     Please see <ref id="alfa" name="Alpha Drivers"> in
  2051.     this document for important information regarding
  2052.     alpha drivers.
  2053.     If you use it, let Donald know how things work out,
  2054.     as not too many people have this card and feedback
  2055.     has been low, even though the driver has been in the
  2056.     kernel since v1.1.25.
  2057.  
  2058.     If you intend on using this driver as a loadable module
  2059.     you should probably see 
  2060.     <ref id="modules" name="Using the Ethernet Drivers as Modules">
  2061.     and also
  2062.     <ref id="mod8390" name="8390 Based Cards as Modules"> for
  2063.     module specific information.
  2064.  
  2065. <sect1>Apricot
  2066. <p>
  2067.  
  2068. <sect2>Apricot Xen-II On Board Ethernet
  2069. <p>
  2070.  
  2071.     Status -- <em/Supported/
  2072.  
  2073.     This on board ethernet uses an i82596 bus-master chip.
  2074.     It can only be at i/o address <tt/0x300/. The author of this
  2075.     driver is Mark Evans. By looking at the driver source,
  2076.     it appears that the IRQ is hardwired to 10.
  2077.  
  2078.     Earlier versions of the driver had a tendency to think
  2079.     that anything living at <tt/0x300/ was an apricot NIC.
  2080.     Since then the hardware address is checked to avoid these
  2081.     false detections.
  2082.  
  2083. <sect1>Arcnet<label id="arcnet">
  2084. <p>
  2085.  
  2086.     Status -- <em/Supported/
  2087.  
  2088.     With the very low cost and better performance of ethernet, 
  2089.     chances are that most places will be giving away their Arcnet 
  2090.     hardware for free, resulting in a lot of home systems with Arcnet.
  2091.  
  2092.     An advantage of Arcnet is that all of the cards have identical
  2093.     interfaces, so one driver will work for everyone. It also has
  2094.     built in error handling so that it supposedly never loses a packet.
  2095.     (Great for UDP traffic!)
  2096.  
  2097.     Avery Pennarun's arcnet driver has been in the
  2098.     default kernel sources since 1.1.80. The arcnet driver 
  2099.     uses `arc0' as its name instead of the usual `eth0' for
  2100.     ethernet devices.
  2101.     Bug reports and success stories can be mailed to:
  2102.  
  2103.     <tt>apenwarr@foxnet.net</tt>
  2104.  
  2105.     There are information files contained in the standard kernel for
  2106.     setting jumpers and general hints.
  2107.  
  2108.     Supposedly the driver also works with the 100Mbs ARCnet cards
  2109.     as well!
  2110.  
  2111. <sect1>AT&T
  2112. <p>
  2113.  
  2114.     Note that AT&T's StarLAN is an orphaned technology, like 
  2115.     SynOptics LattisNet, and can't be used in a standard 10Base-T 
  2116.     environment, without a hub that `speaks' both.
  2117.  
  2118. <sect2>AT&T T7231 (LanPACER+)
  2119. <p>
  2120.  
  2121.     Status -- <em/Not Supported/
  2122.  
  2123.     These StarLAN cards use an interface similar to the i82586
  2124.     chip. At one point, Matthijs Melchior 
  2125.     (<tt/matthijs.n.melchior@att.com/) was playing with the 3c507
  2126.     driver, and almost had something useable working. Haven't
  2127.     heard much since that.
  2128.  
  2129. <sect1>AT-Lan-Tec / RealTek
  2130. <p>
  2131.  
  2132. <sect2>AT-Lan-Tec / RealTek Pocket adaptor<label id="aep-100">
  2133. <p>
  2134.  
  2135.     Status -- <em/Supported/
  2136.  
  2137.     This is a generic, low-cost OEM pocket adaptor being sold by
  2138.     AT-Lan-Tec, and (likely) a number of other suppliers. A
  2139.     driver for it is included in the standard kernel.
  2140.     Note that there is substantial information contained in the
  2141.     driver source file `atp.c'.  
  2142.     BTW, the adaptor (AEP-100L) has both 10baseT and BNC connections!
  2143.     You can reach AT-Lan-Tec at 1-301-948-7070. Ask for the model
  2144.     that works with Linux, or ask for tech support.
  2145.  
  2146.     In the Netherlands a compatible adaptor is sold under the name SHI-TEC
  2147.     PE-NET/CT, and sells for about $125. The vendor was Megasellers.
  2148.     They state that they do not sell to private persons, but 
  2149.     this doesn't appear to be strictly adhered to.
  2150.     They are: Megasellers, Vianen, The Netherlands. They always
  2151.     advertise in Dutch computer magazines.  Note that the
  2152.     newer model EPP-NET/CT appears to be significantly different
  2153.     than the PE-NET/CT, and will not work with the present driver.
  2154.     Hopefully someone will come up with the programming information
  2155.     and this will be fixed up.
  2156.  
  2157.     In Germany, a similar
  2158.     adaptor comes as a no-brand-name product. Prolan 890b, no
  2159.     brand on the casing, only a roman II. Resellers can get a price
  2160.     of about $130, including a small wall transformer for the power.
  2161.  
  2162.     The adaptor is `normal size' for the product class, about 57mm wide,
  2163.     22mm high tapering to 15mm high at the DB25 connector, and 105mm long
  2164.     (120mm including the BNC socket). It's switchable between the RJ45
  2165.     and BNC jacks with a small slide switch positioned between the two:
  2166.     a very intuitive design.
  2167.  
  2168.     Donald performed some power draw measurements, and determined 
  2169.     that the average current draw was only about 100mA @ 5V.
  2170.     This power draw is low enough
  2171.     that you could buy or build a cable to take the 5V directly from the    
  2172.     keyboard/mouse port available on many laptops. (Bonus points here
  2173.     for using a standardized power connector instead of a
  2174.     proprietary one.)
  2175.  
  2176.     Note that the device name that you pass to <tt/ifconfig/
  2177.     is <em/not/ <tt/eth0/ but <tt/atp0/ for this device.
  2178.  
  2179.  
  2180. <sect1>Boca Research<label id="boca">
  2181. <p>
  2182.  
  2183.     Yes, they make more than just multi-port serial cards.  :-)
  2184.  
  2185. <sect2>Boca BEN (PCI, VLB)<label id="boca-pci">
  2186. <p>
  2187.  
  2188.     Status -- <em/Supported/
  2189.  
  2190.     These cards are based on AMD's PCnet chips, used in the AT1500 and
  2191.     the like. You can pick up a combo (10BaseT and 10Base2) PCI
  2192.     card for under $70 at the moment.
  2193.  
  2194.     Perspective buyers should be warned that many users have had
  2195.     endless problems with these cards. Owners of fast Pentium
  2196.     systems have been especially hit. Note that this is not a driver 
  2197.     problem, as it hits DOS/Win/NT users as well.
  2198.     Boca's technical support number is (407) 241-8088, and you
  2199.     can also reach them at <tt/75300.2672@compuserve.com/.
  2200.  
  2201.     Donald did a comparitive test with the above Boca PCI card and
  2202.     a similar Allied Telsyn PCnet/PCI implementation, which showed
  2203.     that the problem lies in Boca's implementation of the PCnet/PCI
  2204.     chip. These test results can be accessed on Don's www server.
  2205.  
  2206.     <url url="http://cesdis.gsfc.nasa.gov/linux/" name="Linux at CESDIS">
  2207.  
  2208.     Also, Dave Platt has compared the recommended implementation given
  2209.     on the AMD data sheet with the Boca implementation, and has
  2210.     determined that Boca has left out a substantial number of
  2211.     important filtering capacitors. At the risk of being verbose,
  2212.     here is a quote from Dave, which will allow you to assess
  2213.     if the problem has been addressed yet, given a card for
  2214.     visual inspection.
  2215.     
  2216.     ``I just reviewed Appendix B in the 79c970 data sheet.  It 
  2217.     recommends a _minimum_ of 8 high-frequency bypassing caps 
  2218.     (.1 uF multilayer ceramic) around the chip, to keep ground 
  2219.     and power bounce from causing unreliable operation.  
  2220.     Looking at the card I have here, I see a total of 5 such 
  2221.     caps on the entire card - only a couple of them are close 
  2222.     enough to the chip to do a decent job of high-frequency 
  2223.     bypassing.
  2224.     
  2225.     If you hold the card with chips facing up, and the PCI pins 
  2226.     pointed towards you, the lower-left corner of the '970 has 
  2227.     the positioning dimple.  The upper-left corner of the chip 
  2228.     is the `analog corner', where the analog power and ground 
  2229.     pins are.  Appendix B calls these `the most cricical pins 
  2230.     in the layout of a PCnet-PCI card'.  There are 4 analog 
  2231.     power pins, and 2 analog ground pins... all of them are 
  2232.     supposed to be connected, and properly bypassed.
  2233.     
  2234.     On the left side of the chip, the uppermost pin is AVSS1 
  2235.     (analog ground 1).  On the top edge, the fourth pin from 
  2236.     the left is AVDD3 (analog power 3).  The Appendix 
  2237.     specifically recommends having a .1 uF bypass cap tied 
  2238.     directly to these two pins (<em/not/ going through the common 
  2239.     ground plane).  On the card I have, there is no such cap - 
  2240.     the nearest bypass cap is about half-an-inch away over by 
  2241.     the crystal, and is tied to the ground plane.
  2242.     
  2243.     The Appendix also specifically recommends `low-frequency 
  2244.     bulk capacitors' (by which I assume that they mean multi-uF 
  2245.     tantalum or aluminum electrolytics) as well as 
  2246.     high-frequency bypass caps.  I see only two bulk capacitors 
  2247.     (one 10 uF in the AVSS2/AVDD2 filter circuit, and one 4.7 
  2248.     uF up above the chip which also appears to be part of a 
  2249.     filter circuit).  The Appendix recommends `at least one 
  2250.     low-frequency bulk (e.g. 22 uF) bypass capactor... 
  2251.     connected directly to the power and ground planes.'  There 
  2252.     is no capacitor on the board which matches this 
  2253.     description. 
  2254.     
  2255.     It appears that Boca ignored _several_ of AMD's 
  2256.     recommendations, regarding the number, size, placement, and 
  2257.     wiring of the power supply bypass capacitors.''
  2258.  
  2259.     (Thanks Dave.) Boca is offering a `warranty repair' for
  2260.     affected owners, which involves adding one of the missing
  2261.     capacitors, but it appears that this fix doesn't work 100
  2262.     percent for most people, although it helps some.
  2263.  
  2264.     If you are <em/still/ thinking of buying one of these cards, then
  2265.     at least try and get a 7 day unconditional return policy,
  2266.     so that if it doesn't work properly in your system, you
  2267.     can return it.
  2268.  
  2269.     More general information on the AMD chips can be found in
  2270.     <ref id="lance" name="AMD LANCE">.
  2271.  
  2272.     More technical information on AMD LANCE based Ethernet cards
  2273.     can be found in <ref id="amd-notes" name="Notes on AMD...">.
  2274.  
  2275. <sect1>Cabletron<label id="ctron">
  2276. <p>
  2277.  
  2278.     Donald writes:
  2279.     `Yes, another one of these companies that won't release its
  2280.     programming information. They waited for months before actually
  2281.     confirming that all their information was proprietary, deliberately
  2282.     wasting my time. Avoid their cards like the plague if you can.
  2283.     Also note that some people have phoned Cabletron, and have been
  2284.     told things like `a D. Becker is working on a driver
  2285.     for linux' -- making it sound like I work for them. This is
  2286.     NOT the case.'
  2287.  
  2288.     If you feel like asking them why they don't want to release their
  2289.     low level programming info so that people can use their cards, write 
  2290.     to support@ctron.com. 
  2291.     Tell them that you are using Linux, and are disappointed that they
  2292.     don't support open systems. And no, the usual driver development
  2293.     kit they supply is useless. It is just a DOS object file that
  2294.     you are supposed to link against. Which you aren't allowed to
  2295.     even reverse engineer.
  2296.     
  2297.  
  2298. <sect2>E10**, E10**-x, E20**, E20**-x<label id="e10xx">
  2299. <p>
  2300.  
  2301.     Status -- <em/Semi-Supported/
  2302.  
  2303.     These are NEx000 almost-clones that are reported to
  2304.     work with the standard NEx000 drivers, thanks to a
  2305.     ctron-specific check during the probe. If there are
  2306.     any problems, they are unlikely to be fixed, as the
  2307.     programming information is unavailable.
  2308.  
  2309. <sect2>E2100<label id="e2100">
  2310. <p>
  2311.  
  2312.     Status -- <em/Semi-Supported/
  2313.  
  2314.     Again, there is not much one can do when the
  2315.     programming information is proprietary.
  2316.     The E2100 is a poor design. Whenever it maps its
  2317.     shared memory in during a packet transfer, it
  2318.     maps it into the <em/whole 128K region!/ That means you
  2319.     <bf/can't/ safely use another interrupt-driven shared
  2320.     memory device in that region, including another E2100.
  2321.     It will work most of the time, but every once in
  2322.     a while it will bite you. (Yes, this problem can
  2323.     be avoided by turning off interrupts while
  2324.     transferring packets, but that will almost certainly
  2325.     lose clock ticks.) Also, if you mis-program the board,
  2326.     or halt the machine at just the wrong moment, even
  2327.     the reset button won't bring it back. You will <em/have/
  2328.     to turn it off and <em/leave/ it off for about 30 seconds.
  2329.  
  2330.     Media selection is automatic, but you can override this
  2331.     with the low bits of the dev->mem_end parameter.
  2332.     See <ref id="ether" name="PARAM_2">. Module users
  2333.     can specify an <tt/xcvr=N/ value on the <tt/insmod/
  2334.     command line to do the same.
  2335.  
  2336.     Also, don't confuse the E2100 for a NE2100 clone.
  2337.     The E2100 is a shared memory NatSemi DP8390 design,
  2338.     roughly similar to a brain-damaged WD8013, whereas
  2339.     the NE2100 (and NE1500) use a bus-mastering AMD
  2340.     LANCE design.
  2341.  
  2342.     There is an E2100 driver included in the standard kernel.
  2343.     However, seeing as programming info isn't available,
  2344.     don't expect bug-fixes. Don't use one
  2345.     unless you are already stuck with the card.
  2346.  
  2347.     If you intend on using this driver as a loadable module
  2348.     you should probably see 
  2349.     <ref id="modules" name="Using the Ethernet Drivers as Modules">
  2350.     and also
  2351.     <ref id="mod8390" name="8390 Based Cards as Modules"> for
  2352.     module specific information.
  2353.  
  2354. <sect1>Cogent
  2355. <p>
  2356.  
  2357.     Here is where and how to reach them:
  2358.  
  2359.  
  2360. <verb>
  2361.     Cogent Data Technologies, Inc.
  2362.     175 West Street, P.O. Box 926
  2363.     Friday Harbour, WA 98250, USA.
  2364.  
  2365.     Cogent Sales
  2366.     15375 S.E. 30th Place, Suite 310
  2367.     Bellevue, WA 98007, USA.
  2368.  
  2369.     Technical Support:
  2370.     Phone (360) 378-2929 between 8am and 5pm PST
  2371.     Fax (360) 378-2882
  2372.     Compuserve GO COGENT
  2373.     Bulletin Board Service (360) 378-5405
  2374.     Internet: support@cogentdata.com
  2375. </verb>
  2376.  
  2377. <sect2>Cogent eMASTER+, EM100, EM400, EM960, EM964
  2378. <p>
  2379.  
  2380.     Status -- <em/Supported/
  2381.  
  2382.     These are yet another DEC 21040 implementation that should
  2383.     work fine with the standard 21040 driver.
  2384.  
  2385.     The EM400 and the EM964 are four port cards using a
  2386.     DEC 21050 bridge and 4 21040 chips.
  2387.  
  2388.     See <ref id="dec-21040" name="DEC 21040">
  2389.     for more information on these cards, and the present driver
  2390.     situation.
  2391.  
  2392. <sect1>D-Link<label id="d-link">
  2393. <p>
  2394.  
  2395.     Some people have had difficulty in finding vendors that
  2396.     carry D-link stuff. This should help.
  2397.  
  2398. <verb>
  2399.         (714) 455-1688    in the US
  2400.         (081) 203-9900    in the UK
  2401.         (416) 828-0260    in Canada
  2402.         (02) 916-1600    in Taiwan
  2403. </verb>
  2404.  
  2405. <sect2>DE-100, DE-200, DE-220-T<label id="de-100">
  2406. <p>
  2407.  
  2408.     Status -- <em/Supported/
  2409.  
  2410.     The manual says that it is 100 &percnt compatible with the
  2411.     NE2000. This is not true. You should call them and
  2412.     tell them you are using their card with Linux, and they
  2413.     should correct their documentation. Some pre-0.99pl12
  2414.     driver versions may have trouble recognizing the DE2**
  2415.     series as 16 bit cards, and these cards are the most
  2416.     widely reported as having the spurious transfer address
  2417.     mismatch errors. Note that there are cards from
  2418.     Digital (DEC) that are also named DE100 and DE200,
  2419.     but the similarity stops there.
  2420.  
  2421. <sect2>DE-520<label id="de-520">
  2422. <p>
  2423.  
  2424.     Status -- <em/Supported/
  2425.  
  2426.     This is a PCI card using the PCI version of AMD's LANCE chip.
  2427.     DMA selection and chip numbering information can be found in
  2428.     <ref id="lance" name="AMD LANCE">.
  2429.  
  2430.     More technical information on AMD LANCE based Ethernet cards
  2431.     can be found in <ref id="amd-notes" name="Notes on AMD...">.
  2432.  
  2433. <sect2>DE-530<label id="de-530">
  2434. <p>
  2435.  
  2436.     Status -- <em/Supported/
  2437.  
  2438.     This is a generic DEC 21040 PCI chip implementation,
  2439.     and works with the generic 21040 driver.
  2440.  
  2441.     See <ref id="dec-21040" name="DEC 21040">
  2442.     for more information on these cards, and the present driver
  2443.     situation.
  2444.  
  2445. <sect2>DE-600<label id="de-600">
  2446. <p>
  2447.  
  2448.     Status -- <em/Supported/
  2449.  
  2450.     Laptop users and other folk who might want a quick
  2451.     way to put their computer onto the ethernet may want
  2452.     to use this. The driver is included with the default
  2453.     kernel source tree.
  2454.     Bjorn Ekwall <tt/bj0rn@blox.se/ wrote the driver.
  2455.     Expect about 180kb/s transfer speed from this via the
  2456.     parallel port. You should read the README.DLINK
  2457.     file in the kernel source tree.
  2458.  
  2459.     Note that the device name that you pass to <tt/ifconfig/
  2460.     is <em/now/ <tt/eth0/ and not the previously 
  2461.     used <tt/dl0/. 
  2462.  
  2463.     If your parallel port is <em/not/ at the standard <tt/0x378/
  2464.     then you will have to recompile. Bjorn writes: 
  2465.     ``Since the DE-620 driver tries to sqeeze the last microsecond 
  2466.     from the loops, I made the irq and port address constants instead 
  2467.     of variables. This makes for a usable speed, but it also means 
  2468.     that you can't change these assignements from e.g. lilo; 
  2469.     you _have_ to recompile...'' Also note that some laptops
  2470.     implement the on-board parallel port at <tt/0x3bc/ which
  2471.     is where the parallel ports on monochrome cards were/are.
  2472.  
  2473. <sect2>DE-620<label id="de-620">
  2474. <p>
  2475.  
  2476.     Status -- <em/Supported/
  2477.  
  2478.     Same as the DE-600, only with two output formats.
  2479.     Bjorn has written a driver for this model,
  2480.     for kernel versions 1.1 and above. See the above information
  2481.     on the DE-600.
  2482.  
  2483. <sect2>DE-650<label id="de-650">
  2484. <p>
  2485.  
  2486.     Status -- <em/Semi-Supported/
  2487.  
  2488.     Some people have been using this PCMCIA card for
  2489.     some time now with their notebooks. It is a basic
  2490.     8390 design, much like a NE2000. The LinkSys PCMCIA
  2491.     card and the IC-Card Ethernet (available from
  2492.     Midwest Micro) are supposedly DE-650 clones as well.
  2493.     Note that at present, this driver is
  2494.     <em/not/ part of the standard kernel, and so you will
  2495.     have to do some patching.
  2496.  
  2497.     See <ref id="pcmcia" name="PCMCIA Support"> in this document,
  2498.     and if you can, have a look at:
  2499.  
  2500.     <url url="http://cesdis.gsfc.nasa.gov/linux/pcmcia.html"
  2501.         name="Don's PCMCIA Stuff">
  2502.  
  2503. <sect1>DFI<label id="dfi">
  2504. <p>
  2505.  
  2506. <sect2>DFINET-300 and DFINET-400<label id="dfi-300">
  2507. <p>
  2508.  
  2509.     Status -- <em/Supported/ 
  2510.  
  2511.     These cards are now detected (as of 0.99pl15) thanks to
  2512.     Eberhard Moenkeberg <tt/emoenke@gwdg.de/ who noted that
  2513.     they use `DFI' in the first 3 bytes of the prom, instead
  2514.     of using <tt/0x57/ in bytes 14 and 15, which is what all the
  2515.     NE1000 and NE2000 cards use. (The 300 is an 8 bit 
  2516.     pseudo NE1000 clone, and the 400 is a pseudo NE2000 clone.)
  2517.  
  2518.  
  2519. <sect1>Digital / DEC<label id="dec">
  2520. <p>
  2521.  
  2522. <sect2>DEPCA, DE100/1, DE200/1/2, DE210, DE422<label id="dec-200">
  2523. <p>
  2524.  
  2525.     Status -- <em/Supported/
  2526.  
  2527.     As of linux v1.0, there is a driver included as standard
  2528.     for these cards. It was written by David C. Davies.
  2529.     There is documentation included in the source file
  2530.     `depca.c', which includes info on how to use more than
  2531.     one of these cards in a machine. Note that the DE422 is
  2532.     an EISA card. These cards are all based on the AMD LANCE chip.
  2533.     See <ref id="lance" name="AMD LANCE"> for more info.
  2534.     A maximum of two of the ISA cards can be used, because they
  2535.     can only be set for <tt/0x300/ and <tt/0x200/ base I/O address.
  2536.     If you are intending to do this, please read the notes in
  2537.     the driver source file <tt/depca.c/ in the standard kernel
  2538.     source tree.
  2539.  
  2540.     This driver will also work on Alpha CPU based machines, and
  2541.     there are various ioctl()s that the user can play with.
  2542.  
  2543. <sect2>Digital EtherWorks 3 (DE203, DE204, DE205)<label id="dec-ewrk3">
  2544. <p>
  2545.  
  2546.     Status -- <em/Supported/
  2547.  
  2548.     Included into kernels v1.1.62 and above is this driver,
  2549.     also by David C. Davies of DEC. These cards use a proprietary
  2550.     chip from DEC, as opposed to the LANCE chip used in the 
  2551.     earlier cards like the DE200. These cards support both shared
  2552.     memory or programmed I/O, although you take about a 50&percnt
  2553.     performance hit if you use PIO mode. The shared memory size can
  2554.     be set to 2kB, 32kB or 64kB, but only 2 and 32 have been tested
  2555.     with this driver. David says that the performance is virtually
  2556.     identical between the 2kB and 32kB mode. There is more information
  2557.     (including using the driver as a loadable module) at the top
  2558.     of the driver file <tt/ewrk3.c/ and also in <tt/README.ewrk3/.
  2559.     Both of these files come with the standard kernel distribution.
  2560.  
  2561.     The standard driver has a number
  2562.     of interesting ioctl() calls that can be used to get or clear
  2563.     packet statistics, read/write the EEPROM, change the 
  2564.     hardware address, and the like. Hackers can see the source
  2565.     code for more info on that one.
  2566.  
  2567.     David has also written a configuration utility for this
  2568.     card (along the lines of the DOS program <tt/NICSETUP.EXE/)
  2569.     along with other tools. These can be found on 
  2570.     <tt/sunsite.unc.edu/ in the directory 
  2571.     <tt>/pub/Linux/system/Network/management</tt> -- look for the
  2572.     file <tt/ewrk3tools-X.XX.tar.gz/.
  2573.  
  2574.     The next release of this driver (v0.40) will have Alpha CPU
  2575.     support like depca.c does and is available from David now
  2576.     if you require it.
  2577.  
  2578. <sect2>DE425 (EISA), DE434, DE435, DE500<label id="dec-eisa">
  2579. <p>
  2580.  
  2581.     Status -- <em/Supported/
  2582.  
  2583.     These cards are based on the 21040 chip mentioned below.
  2584.     Included into kernels v1.1.86 and above is this driver,
  2585.     also by David C. Davies of DEC. It sure is nice to have
  2586.     support from someone on the inside  ;-)
  2587.     The DE500 uses the newer 21140 chip to provide 10/100Mbs
  2588.     ethernet connections.
  2589.     Have a read of the 21040 section below for extra info.
  2590.  
  2591.     Note that as of 1.1.91, David has added a compile time option that
  2592.     will allow non-DEC cards to work with
  2593.     this driver. Have a look at <tt/README.de4x5/ for details.
  2594.  
  2595.     All the Digital cards will autoprobe for their media (except,
  2596.     temporarily, the DE500 due to a patent issue).
  2597.  
  2598.     This driver is also ALPHA CPU ready and supports being loaded 
  2599.     as a module.  Users can access the driver internals through 
  2600.     ioctl() calls - see the 'ewrk3' tools and the de4x5.c sources 
  2601.     for information about how to do this.
  2602.  
  2603. <sect2>DEC 21040, 21041, 21140, Tulip<label id="dec-21040">
  2604. <p>
  2605.  
  2606.     Status -- <em/Supported/
  2607.  
  2608.     The DEC 21040 is a bus-mastering single chip ethernet solution 
  2609.     from Digital, similar to AMD's PCnet chip. The 21040 is
  2610.     specifically designed for the PCI bus architecture.
  2611.     SMC's new EtherPower PCI card uses this chip.
  2612.  
  2613.     You have a choice of <em/two/ drivers for cards based on this
  2614.     chip. There is the DE425 driver discussed above, and the
  2615.     generic 21040 driver that Donald has written.
  2616.  
  2617.     The updated 21041 chip is also found in place of the 21040
  2618.     on newly produced SMC EtherPower cards. 
  2619.     The 21140 is for supporting 100Base-? and
  2620.     works with the Linux drivers for the 21040 chip.
  2621.     To use David's <tt/de4x5/ driver with non-DEC cards, have a
  2622.     look at <tt/README.de4x5/ for details.
  2623.  
  2624.     Donald has used SMC EtherPower-10/100 cards to develop
  2625.     the `tulip' driver. Note that the driver that is 
  2626.     in the standard kernel tree at the moment is not the most 
  2627.     up to date version. If you intend on using this driver, 
  2628.     you should get the newest version from Donald's ftp/WWW
  2629.     site.
  2630.  
  2631.     <url url="http://cesdis.gsfc.nasa.gov/linux/drivers/tulip.html"
  2632.         name="Tulip Driver">
  2633.  
  2634.     The above URL also contains a (non-exhaustive) list of
  2635.     various cards/vendors that use the 21040 chip.
  2636.  
  2637.     Also note that the tulip driver is still considered an <em/alpha/
  2638.     driver (see <ref id="alfa" name="Alpha Drivers">) at the
  2639.     moment, and should be treated as such. To use it, you 
  2640.     will have to edit <tt>arch/i386/config.in</tt> and 
  2641.     uncomment the line for <tt/CONFIG_DEC_ELCP/ support.
  2642.  
  2643. <sect1>Farallon 
  2644. <p>
  2645.     Farallon sells EtherWave adaptors and transceivers. This device
  2646.         allows multiple 10baseT devices to be daisy-chained.
  2647.  
  2648. <sect2>Farallon Etherwave 
  2649. <p>
  2650.  
  2651.     Status -- <em/Supported/
  2652.  
  2653.     This is reported to be a 3c509 clone that includes the 
  2654.     EtherWave transceiver. People have used these successfully
  2655.     with Linux and the present 3c509 driver. They are too expensive 
  2656.     for general use, but are a great option for special cases.  Hublet 
  2657.     prices start at $125, and Etherwave 
  2658.     adds $75-$100 to the price of the board -- worth
  2659.     it if you have pulled one wire too few, but not if you are two 
  2660.     network drops short.
  2661.  
  2662. <sect1>Hewlett Packard<label id="hp">
  2663. <p>
  2664.  
  2665.     The 272** cards use programmed I/O, similar to the NE*000 boards,
  2666.     but the data transfer port can be `turned off' when you aren't
  2667.     accessing it, avoiding problems with autoprobing drivers.
  2668.  
  2669.     Thanks to Glenn Talbott for helping clean up the confusion in this
  2670.     section regarding the version numbers of the HP hardware.
  2671.  
  2672. <sect2>27245A<label id="hp-27245a">
  2673. <p>
  2674.  
  2675.     Status -- <em/Supported/
  2676.  
  2677.     8 Bit 8390 based 10BaseT, not recommended for all the
  2678.     8 bit reasons. It was re-designed a couple years
  2679.     ago to be highly integrated which caused some
  2680.     changes in initialization timing which only
  2681.     affected testing programs, not LAN drivers. (The
  2682.     new card is not `ready' as soon after switching
  2683.     into and out of loopback mode.)
  2684.  
  2685.     If you intend on using this driver as a loadable module
  2686.     you should probably see 
  2687.     <ref id="modules" name="Using the Ethernet Drivers as Modules">
  2688.     and also
  2689.     <ref id="mod8390" name="8390 Based Cards as Modules"> for
  2690.     module specific information.
  2691.  
  2692. <sect2>HP PC Lan+ (27247, 27252A)
  2693. <p>
  2694.  
  2695.     Status -- <em/Supported/
  2696.  
  2697.     The HP PC Lan+ is different to the standard HP PC Lan
  2698.     card. This driver was added to the list of drivers in the standard 
  2699.     kernel during the v1.1.x development cycle. It can be
  2700.     operated in either a PIO mode like a ne2000, or a shared
  2701.     memory mode like a wd8013.
  2702.  
  2703.     The 47B is a 16 Bit 8390 based 10BaseT w/AUI, and
  2704.     the 52A is a 16 Bit 8390 based ThinLAN w/AUI.
  2705.     These cards have 32K onboard RAM for Tx/Rx packet buffering 
  2706.     instead of the usual 16KB, and they both offer LAN
  2707.     connector autosense.
  2708.  
  2709.     If you intend on using this driver as a loadable module
  2710.     you should probably see 
  2711.     <ref id="modules" name="Using the Ethernet Drivers as Modules">
  2712.     and also
  2713.     <ref id="mod8390" name="8390 Based Cards as Modules"> for
  2714.     module specific information.
  2715.  
  2716. <sect2>HP-J2405A
  2717. <p>
  2718.  
  2719.     Status -- <em/Supported/
  2720.  
  2721.     These are lower priced, and slightly faster than the
  2722.     27247/27252A, but are missing some features, such
  2723.     as AUI, ThinLAN connectivity, and boot PROM socket.
  2724.     This is a fairly generic LANCE design, but a minor
  2725.     design decision makes it incompatible with a generic
  2726.     `NE2100' driver. Special support for it (including
  2727.     reading the DMA channel from the board) is included
  2728.     thanks to information provided by HP's Glenn
  2729.     Talbott.
  2730.  
  2731.     More technical information on LANCE based cards can be found in
  2732.     <ref id="amd-notes" name="Notes on AMD...">
  2733.  
  2734. <sect2>HP-Vectra On Board Ethernet
  2735. <p>
  2736.  
  2737.     Status -- <em/Supported/
  2738.  
  2739.     The HP-Vectra has an AMD PCnet chip on the motherboard. 
  2740.     Earlier kernel versions would detect it as the HP-J2405A
  2741.     but that would fail, as the Vectra doesn't report the
  2742.     IRQ and DMA channel like the J2405A.
  2743.     Get a kernel newer than v1.1.53 to avoid this
  2744.     problem.
  2745.  
  2746.     DMA selection and chip numbering information can be found in
  2747.     <ref id="lance" name="AMD LANCE">.
  2748.  
  2749.     More technical information on LANCE based cards can be found in
  2750.     <ref id="amd-notes" name="Notes on AMD...">
  2751.  
  2752. <sect2>HP 10/100 VG Any Lan Cards (27248B, J2573, J2577, J2585) 
  2753. <p>
  2754.  
  2755.     Status -- <em/Supported/
  2756.  
  2757.     As of early 1.3.x kernels, this driver was made available
  2758.     by Jaroslav Kysela, (perex@pf.jcu.cz). Due to the newness of
  2759.     the driver and the relatively small number of VG cards in
  2760.     use, feedback on this driver has been low.
  2761.  
  2762.     Donald has also written a driver for these cards. Unlike the
  2763.     above, it is not presently in the standard kernel source tree.
  2764.     Check out the following URL for more information on Donald's
  2765.     100VG work.
  2766.  
  2767.     <url url="http://cesdis.gsfc.nasa.gov/linux/drivers/100vg.html"
  2768.         name="Donald's 100VG Page">
  2769.     
  2770.  
  2771. <sect1>IBM / International Business Machines<label id="ibm">
  2772. <p>
  2773.  
  2774. <sect2>IBM Thinkpad 300<label id="thinkpad-300">
  2775. <p>
  2776.  
  2777.     Status -- <em/Supported/
  2778.  
  2779.     This is compatible with the Intel based Zenith Z-note.
  2780.     See <ref id="z-note" name="Z-note"> for more info.
  2781.  
  2782.     Supposedly this site has a comprehensive database of
  2783.     useful stuff for newer versions of the Thinkpad. I haven't
  2784.     checked it out myself yet.
  2785.  
  2786.     <url url="http://peipa.essex.ac.uk/html/linux-thinkpad.html"
  2787.         Name="Thinkpad-info">
  2788.  
  2789.     For those without a WWW browser handy, try 
  2790.     <tt>peipa.essex.ac.uk:/pub/tp750/</tt>
  2791.  
  2792. <sect2>IBM Credit Card Adaptor for Ethernet
  2793. <p>
  2794.  
  2795.     Status -- <em/Semi-Supported/
  2796.  
  2797.     People have been using this PCMCIA card with Linux as well.
  2798.     Similar points apply, those being that you need a supported
  2799.     PCMCIA chipset on your notebook, and that you will have to
  2800.     patch the PCMCIA support into the standard kernel.
  2801.  
  2802.     See <ref id="pcmcia" name="PCMCIA Support"> in this document,
  2803.     and if you can, have a look at:
  2804.  
  2805.     <url url="http://cesdis.gsfc.nasa.gov/linux/pcmcia.html"
  2806.         name="Don's PCMCIA Stuff">
  2807.  
  2808.  
  2809. <sect2>IBM Token Ring
  2810. <p>
  2811.  
  2812.     Status -- <em/Semi-Supported/
  2813.  
  2814.     To support token ring
  2815.     requires more than only writing a device driver, it also requires
  2816.     writing the source routing routines for token ring. It is the 
  2817.     source routing that would be the most time comsuming to write.
  2818.  
  2819.     Peter De Schrijver has been spending some time on Token Ring
  2820.     lately. and has worked with IBM ISA and
  2821.     MCA token ring cards.
  2822.  
  2823.     The present token ring code has been included into the first
  2824.     of the 1.3.x series kernels.
  2825.  
  2826.     Peter says that it was originally tested on an MCA 16/4 Megabit Token 
  2827.     Ring board, but it should work with other Tropic based boards.
  2828.  
  2829. <sect1>ICL Ethernet Cards
  2830. <p>
  2831.  
  2832. <sect2>ICL EtherTeam 16i/32 
  2833. <p>
  2834.     Status -- <em/Supported/
  2835.  
  2836.     Mika Kuoppala (miku@pupu.elt.icl.fi) wrote this driver, and
  2837.     it was included into early 1.3.4x kernels. It uses the
  2838.     Fujitsu MB86965 chip that is also used on the at1700 cards.
  2839.  
  2840. <sect1>Intel Ethernet Cards<label id="intel">
  2841. <p>
  2842.  
  2843. <sect2>Ether Express
  2844. <p>
  2845.  
  2846.     Status -- <em/Semi-Supported/
  2847.  
  2848.     This card uses the intel i82586. (Surprise, huh?)
  2849.     The driver is in the standard release of the
  2850.     kernel, as an alpha driver. See
  2851.     <ref id="alfa" name="Alpha Drivers"> for important
  2852.     information on using alpha-test ethernet drivers
  2853.     with Linux.
  2854.  
  2855.     The reason is that the driver works well with slow machines,
  2856.     but the i82586 occasionally hangs from the packet buffer
  2857.     contention that a fast machine can cause.
  2858.     One reported hack/fix is to change all of the outw()
  2859.     calls to outw_p(). Also, the driver is missing promiscuous
  2860.     and multicast modes. (See <ref id="promisc" name="Multicast and...">)
  2861.  
  2862.     There is also the standard way of using the chip (read slower)
  2863.     that is described in the chip manual, and used in
  2864.     other i82586 drivers, but this would require a re-write
  2865.     of the entire driver.
  2866.  
  2867.     There is some technical information available on
  2868.     the i82586 in <ref id="i82586" name="Programming the Intel Chips">
  2869.     and also in the source code for the driver `eexpress.c'. Don't
  2870.     be afraid to read it. ;-)
  2871.  
  2872. <sect2>Ether Express PRO/10
  2873. <p>
  2874.  
  2875.     Status -- <em/Supported/
  2876.  
  2877.     Bao Chau Ha has written a driver for these cards that has been
  2878.     included into early 1.3.x kernels. It may also work with some of
  2879.     the Compaq built-in ethernet systems that are based on the
  2880.     i82595 chip. 
  2881.  
  2882. <sect2>Ether Express PRO/100
  2883. <p>
  2884.  
  2885.     Status -- <em/Not Supported/
  2886.  
  2887.     These PCI and EISA cards use a different chip that the PRO/10
  2888.     cards do. Bao is currently trying to get a datasheet out
  2889.     of Intel without having to sign a NDA. Good Luck!
  2890.  
  2891. <sect1>LinkSys
  2892. <p>
  2893.     
  2894. <sect2>LinkSys Pocket Ethernet Adapter Plus (PEAEPP)
  2895. <p>
  2896.  
  2897.     Status -- <em/Supported/
  2898.  
  2899.     This is supposedly a DE-620 clone, and is reported to
  2900.     work well with that driver. See
  2901.     <ref id="de-620" name="DE-620"> for more information.
  2902.  
  2903. <sect2>LinkSys PCMCIA Adaptor
  2904. <p>
  2905.  
  2906.     Status -- <em/Supported/
  2907.  
  2908.     This is supposed to be a re-badged DE-650. See
  2909.     <ref id="de-650" name="DE-650"> for more information.
  2910.  
  2911. <sect1>Microdyne
  2912. <p>
  2913.  
  2914. <sect2>Microdyne Exos 205T
  2915. <p>
  2916.     
  2917.     Status -- <em/Semi-Supported/
  2918.  
  2919.     Another i82586 based card. Dirk Niggemann
  2920.     <tt/dabn100@hermes.cam.ac.uk/
  2921.     has written a driver that he classes as ``pre-alpha''
  2922.     that he would like people to test. Mail him for more details.
  2923.  
  2924. <sect1>Mylex
  2925. <p>
  2926.  
  2927.     Mylex can be reached at the following numbers, in case anyone
  2928.     wants to ask them anything.
  2929.  
  2930. <verb>
  2931.     MYLEX CORPORATION, Fremont
  2932.     Sales:    800-77-MYLEX, (510) 796-6100 
  2933.     FAX:    (510) 745-8016.  
  2934. </verb>
  2935.  
  2936. <sect2>Mylex LNP101
  2937. <p>
  2938.  
  2939.     Status -- <em/Supported/
  2940.  
  2941.     This is a PCI card that is based on DEC's 21040 chip.
  2942.     It is selectable between 10BaseT, 10Base2 and 10Base5 output.
  2943.     The LNP101 card has been verified to work with the generic 
  2944.     21040 driver.
  2945.  
  2946.     See the section on the 21040 chip 
  2947.     (<ref id="dec-21040" name="DEC 21040">)
  2948.     for more information.
  2949.  
  2950. <sect2>Mylex LNP104
  2951. <p>
  2952.  
  2953.     Status -- <em/Not Supported/
  2954.  
  2955.     The LNP104 uses the DEC 21050 chip to deliver <em/four/ 
  2956.     independent 10BaseT ports. It may work with 21040 drivers,
  2957.     but nobody has tried yet.
  2958.  
  2959. <sect2>Mylex M390B EISA
  2960. <p>
  2961.  
  2962.     Status -- <em/Not Supported/
  2963.  
  2964.     Russ writes that "...it's a fairly vanilla
  2965.     8390-based adapter.  Only really tricky thing is that, like the
  2966.     Interlan es3210, you MUST do only 32-bit transfers to/from the board.
  2967.     Look at the Crynwr packet driver and try making the 
  2968.     changes yourself...''
  2969.  
  2970. <sect1>Novell Ethernet, NExxxx and associated clones.<label id="novell">
  2971. <p>
  2972.  
  2973.     The prefix `NE' came from Novell Ethernet. Novell followed the
  2974.     cheapest NatSemi databook design and sold the manufacturing rights
  2975.     (spun off?) Eagle, just to get reasonably-priced ethercards into
  2976.     the market. (The now ubiquitous NE2000 card.)
  2977.  
  2978. <sect2>NE1000, NE2000<label id="ne2k">
  2979. <p>
  2980.  
  2981.     Status -- <em/Supported/
  2982.  
  2983.     NOTE: If you are using a kernel that is older than
  2984.     v1.2.9, it is <em>strongly</em> recommended that you
  2985.     upgrade to a newer version. There was an important
  2986.     bugfix made to the ne driver in 1.2.7, and another
  2987.     important bugfix made to the upper layers (dev.c) in
  2988.     1.2.9. Both of these bugs can cause a ne2000 card
  2989.     to hang your computer.
  2990.  
  2991.     The ne2000 is now a generic name for a bare-bones design around
  2992.     the NatSemi 8390 chip. They use programmed I/O rather than
  2993.     shared memory, leading to easier installation but
  2994.     slightly lower performance and a few problems. Again,
  2995.     the savings of using an 8 bit NE1000 over the NE2000
  2996.     are only warranted if you expect light use. Some
  2997.     recently introduced NE2000 clones use the National
  2998.     Semiconductor `AT/LANTic' 83905 chip, which offers
  2999.     a shared memory mode similar to the 8013 and EEPROM
  3000.     or software configuration. Some problems can arise
  3001.     with poor NE2000 clones. See
  3002.     <ref id="ne2k-probs" name="Problems with...">, and
  3003.     <ref id="ne2k-clones" name="Poor NE2000 Clones">
  3004.     In general it is not a good idea to put a NE2000
  3005.     clone at I/O address <tt/0x300/ because nearly
  3006.     <em/every/ device driver probes there at boot. Some
  3007.     poor NE2000 clones don't take kindy to being prodded
  3008.     in the wrong areas, and will respond by locking your
  3009.     machine.
  3010.  
  3011.     Donald has written a NE2000 diagnostic program, but it
  3012.     is still presently in alpha test. (ne2k)
  3013.     See <ref id="diag" name="Diagnostic Programs"> for more
  3014.     information.
  3015.  
  3016.     If you intend on using this driver as a loadable module
  3017.     you should probably see 
  3018.     <ref id="modules" name="Using the Ethernet Drivers as Modules">
  3019.     and also
  3020.     <ref id="mod8390" name="8390 Based Cards as Modules"> for
  3021.     module specific information.
  3022.  
  3023. <sect2>NE1500, NE2100<label id="ne1500">
  3024. <p>
  3025.  
  3026.     Status -- <em/Supported/
  3027.  
  3028.     These cards use the original 7990 LANCE chip from AMD and
  3029.     are supported using the Linux lance driver. Newer NE2100
  3030.     clones use the updated PCnet/ISA chip from AMD.
  3031.  
  3032.     Some earlier versions of the lance driver had problems
  3033.     with getting the IRQ line via autoIRQ from the original 
  3034.     Novell/Eagle 7990 cards. Hopefully this is now fixed.
  3035.     If not, then specify the IRQ via LILO, and let us know
  3036.     that it still has problems.
  3037.  
  3038.     DMA selection and chip numbering information can be found in
  3039.     <ref id="lance" name="AMD LANCE">.
  3040.  
  3041.     More technical information on LANCE based cards can be found in
  3042.     <ref id="amd-notes" name="Notes on AMD...">
  3043.  
  3044. <sect2>NE3200<label id="ne3200">
  3045. <p>
  3046.  
  3047.     Status -- <em/Not Supported/
  3048.  
  3049.     This card uses a lowly 8MHz 80186, and hence you are better
  3050.     off using a cheap NE2000 clone. Even if a driver was available,
  3051.     the NE2000 card would most likely be faster.
  3052.  
  3053. <sect1>Pure Data
  3054. <p>
  3055.  
  3056. <sect2>PDUC8028, PDI8023
  3057. <p>
  3058.  
  3059.     Status -- <em/Supported/
  3060.  
  3061.     The PureData PDUC8028 and PDI8023 series of cards are reported
  3062.     to work, thanks to special probe code contributed by Mike
  3063.     Jagdis <tt/jaggy@purplet.demon.co.uk/. The support is integrated
  3064.     with the WD driver.
  3065.  
  3066. <sect1>Racal-Interlan
  3067. <p>
  3068.  
  3069. <sect2>NI5210
  3070. <p>
  3071.  
  3072.     Status -- <em/Semi-Supported/
  3073.  
  3074.     Michael Hipp has written a driver for this card. It is included
  3075.     in the standard kernel as an `alpha' driver. Michael would like
  3076.     to hear feedback from users that have this card. See
  3077.     <ref id="alfa" name="Alpha Drivers"> for important
  3078.     information on using alpha-test ethernet drivers
  3079.     with Linux.
  3080.  
  3081.     Michael says that ``the internal sysbus seems to be slow. 
  3082.     So we often lose packets because of overruns while receiving 
  3083.     from a fast remote host.''
  3084.  
  3085.     This card also uses one of the Intel chips. See 
  3086.     <ref id="i82586" name="Programming the Intel Chips">
  3087.     for more technical information.
  3088.  
  3089.  
  3090. <sect2>NI6510 (not EB)<label id="ni65xx">
  3091. <p>
  3092.  
  3093.     Status -- <em/Semi-Supported/
  3094.  
  3095.     There is also a driver for the LANCE based NI6510, and it
  3096.     is also written by Michael Hipp. Again, it is also an
  3097.     `alpha' driver. For some reason, this card is not compatible
  3098.     with the generic LANCE driver. See
  3099.     <ref id="alfa" name="Alpha Drivers"> for important
  3100.     information on using alpha-test ethernet drivers
  3101.     with Linux.
  3102.  
  3103. <sect2>EtherBlaster (aka NI6510EB)
  3104. <p>
  3105.     Status -- <em/Supported/
  3106.  
  3107.     As of kernel 1.3.23, the generic LANCE driver had a check
  3108.     added to it for the <tt/0x52, 0x44/ NI6510EB specific signature.
  3109.     Others have reported that this signature is not the same
  3110.     for all NI6510EB cards however, which will cause the lance
  3111.     driver to not detect your card. If this happens to you, you
  3112.     can change the probe (at about line 322 in lance.c) to printk()
  3113.     out what the values are for your card and then use them instead
  3114.     of the <tt/0x52, 0x44/ defaults.
  3115.  
  3116.     The cards should probably be run in `high-performance' mode
  3117.     and not in the NI6510 compatible mode when using the lance driver.
  3118.  
  3119. <sect1>Sager
  3120. <p>
  3121.  
  3122. <sect2>Sager NP943
  3123. <p>
  3124.  
  3125.     Status -- <em/Semi-Supported/
  3126.  
  3127.     This is just a 3c501 clone, with a different S.A. PROM
  3128.     prefix. I assume it is equally as brain dead as the
  3129.     original 3c501 as well. Kernels 1.1.53 and up check
  3130.     for the NP943 i.d. and then just treat it as a 3c501
  3131.     after that. See <ref id="3c501" name="3Com 3c501">
  3132.     for all the reasons as to why you really don't want
  3133.     to use one of these cards.
  3134.  
  3135. <sect1>Schneider & Koch
  3136. <p>
  3137.  
  3138. <sect2>SK G16
  3139. <p>
  3140.     
  3141.     Status -- <em/Supported/
  3142.  
  3143.     This driver was included into the v1.1 kernels, and it was 
  3144.     written by PJD Weichmann and SWS Bern. It appears that the
  3145.     SK G16 is similar to the NI6510, in that it is based on
  3146.     the first edition LANCE chip (the 7990). Once again, it
  3147.     appears as though this card won't work with the generic
  3148.     LANCE driver.
  3149.  
  3150. <sect1>SEEQ
  3151. <p>
  3152.  
  3153. <sect2>SEEQ 8005
  3154. <p>
  3155.  
  3156.     Status -- <em/Supported/
  3157.  
  3158.     This driver was included into early 1.3.x kernels, and
  3159.     was written by Hamish Coleman.  There is little information 
  3160.     about the card included in the driver, and hence little 
  3161.     information to be put here. If you have a question, you
  3162.     are probably best off e-mailing hamish@zot.apana.org.au
  3163.  
  3164. <sect1>SMC (Standard Microsystems Corp.)
  3165. <p>
  3166.  
  3167.     Please see <ref id="smc" name="Western Digital"> for 
  3168.     information on SMC cards. 
  3169.  
  3170. <sect1>Thomas Conrad
  3171. <p>
  3172.  
  3173. <sect2>Thomas Conrad TC-5048
  3174. <p>
  3175.  
  3176.     This is yet another PCI card that is based on DEC's 21040 chip.
  3177.  
  3178.     See the section on the 21040 chip 
  3179.     (<ref id="dec-21040" name="DEC 21040">)
  3180.     for more information.
  3181.  
  3182.     
  3183. <sect1>Western Digital / SMC <label id="smc">
  3184. <p>
  3185.  
  3186. The ethernet part of Western Digital has been bought out by SMC.
  3187. One common mistake people make is that the relatively new SMC Elite Ultra
  3188. is the same as the older SMC Elite16 models -- this is <bf/not/ the case.
  3189.  
  3190. Here is how to contact SMC (not that you should need to.)
  3191. <quote>
  3192. SMC / Standard Microsystems Corp., 80 Arkay Drive, Hauppage, New York,
  3193. 11788, USA.
  3194. </quote>
  3195.  
  3196. Technical Support via phone:
  3197. <verb>
  3198.     800-992-4762 (USA)
  3199.     800-433-5345 (Canada)
  3200.     516-435-6250 (Other Countries)
  3201. </verb>
  3202.  
  3203. Literature requests:
  3204. <verb>
  3205.     800-SMC-4-YOU (USA)
  3206.     800-833-4-SMC (Canada)
  3207.     516-435-6255  (Other Countries)
  3208. </verb>
  3209.  
  3210. Technical Support via E-mail:
  3211. <verb>
  3212.     techsupt@ccmail.west.smc.com
  3213. </verb>
  3214.  
  3215. FTP Site:
  3216. <verb>
  3217.     ftp.smc.com
  3218. </verb>
  3219.  
  3220. <sect2>WD8003, SMC Elite
  3221. <p>
  3222.     Status -- <em/Supported/
  3223.  
  3224.     These are the 8-bit versions of the card. The
  3225.     8 bit 8003 is slightly less expensive, but only
  3226.     worth the savings for light use. Note that some
  3227.     of the non-EEPROM cards (clones with jumpers, or
  3228.     old <em/old/ old wd8003 cards) have no way of reporting
  3229.     the IRQ line used. In this case, auto-irq is used, and if
  3230.     that fails, the driver silently assings IRQ 5.
  3231.     Information regarding what the jumpers on old non-EEPROM
  3232.     wd8003 cards do can be found in conjunction with the 
  3233.     SMC setup/driver disks stored on 
  3234.     <tt/dorm.rutgers.edu/ in the directory
  3235.     <tt>/pub/novell/nic_drvs/</tt>. Note that some of the
  3236.     newer SMC `SuperDisk' programs will fail to detect
  3237.     the old EEPROM-less cards. The file <tt/SMCDSK46.EXE/
  3238.     seems to be a good all-round choice. Also the jumper
  3239.     settings for old cards are in an ascii text file in the 
  3240.     aforementioned archive. The latest (greatest?) version
  3241.     can be obtained from <tt/ftp.smc.com/.
  3242.  
  3243.     As these are basically the 
  3244.     same as their 16 bit counterparts (WD8013 / SMC Elite16), 
  3245.     you should see the next section for more information.
  3246.  
  3247.  
  3248. <sect2>WD8013, SMC Elite16<label id="8013">
  3249. <p>
  3250.  
  3251.     Status -- <em/Supported/
  3252.  
  3253.     Over the
  3254.     years the design has added more registers and an
  3255.     EEPROM. Clones usually go by the `8013' name, and
  3256.     usually use a non-EEPROM (jumpered) design. 
  3257.     Late model SMC cards will have two main PLCC chips
  3258.     on board; the SMC 83c690 and the SMC 83c694.
  3259.     The shared memory design makes the cards 10-20 &percnt faster,
  3260.     than PIO cards, especially with larger packets. 
  3261.     More importantly, from the 
  3262.     driver's point of view, it avoids a few bugs in the
  3263.     programmed-I/O mode of the 8390, allows safe
  3264.     multi-threaded access to the packet buffer, and
  3265.     it doesn't have a programmed-I/O data register that
  3266.     hangs your machine during warm-boot probes.
  3267.  
  3268.     Non-EEPROM cards that can't just read the selected
  3269.     IRQ will attempt auto-irq, and if that fails, they will
  3270.     silently assign IRQ 10. (8 bit versions will assign IRQ 5)
  3271.  
  3272.     Cards with a non standard amount of memory on board can
  3273.     have the memory size specified at boot (or at `insmod'
  3274.     time if using modules). The standard memory size is 
  3275.     8kB for an 8bit card and 16kB for a 16bit card.
  3276.     For example, the older WD8003EBT cards could be jumpered
  3277.     for 32kB memory. To make full use of that RAM, you would
  3278.     use something like (for i/o=0x280 and IRQ 9):
  3279. <code>
  3280.     LILO: linux ether=9,0x280,0xd0000,0xd8000,eth0
  3281. </code>
  3282.  
  3283.     Also see <ref id="8013-probs" name="8013 problems">
  3284.     for some of the more common problems that people have.
  3285.  
  3286.     If you intend on using this driver as a loadable module
  3287.     you should probably see 
  3288.     <ref id="modules" name="Using the Ethernet Drivers as Modules">
  3289.     and also
  3290.     <ref id="mod8390" name="8390 Based Cards as Modules"> for
  3291.     module specific information.
  3292.  
  3293. <sect2>SMC Elite Ultra<label id="ultra">
  3294. <p>
  3295.  
  3296.     Status -- <em/Supported/
  3297.  
  3298.     This ethercard is based on a new chip from SMC, with
  3299.     a few new features. While it has a mode that is
  3300.     similar to the older SMC ethercards, it's not entirely
  3301.     compatible with the old WD80*3 drivers. However, in
  3302.     this mode it shares most of its code with the other
  3303.     8390 drivers, while operating slightly faster than a
  3304.     WD8013 clone.
  3305.  
  3306.     Since part of the Ultra <em/looks like/
  3307.     an 8013, the Ultra probe is supposed to find an
  3308.     Ultra before the wd8013 probe has a chance to
  3309.     mistakenly identify it.
  3310.  
  3311.     Donald mentioned that it is possible to write a separate 
  3312.     driver for the Ultra's `Altego' mode which allows 
  3313.     chaining transmits at the cost of inefficient use of receive 
  3314.     buffers, but that will probably not happen.
  3315.  
  3316.     Bus-Master SCSI host adaptor users take note: In the
  3317.     manual that ships with Interactive UNIX, it mentions
  3318.     that a bug in the SMC Ultra will cause data corruption
  3319.     with SCSI disks being run from an aha-154X host adaptor.
  3320.     This will probably bite aha-154X compatible cards, such
  3321.     as the BusLogic boards, and the AMI-FastDisk SCSI host
  3322.     adaptors as well. 
  3323.  
  3324.     SMC has acknowledged the problem occurs with
  3325.     Interactive, and older Windows NT drivers. It is 
  3326.     a hardware conflict with early revisions of the card
  3327.     that can be worked around in the driver design. The current 
  3328.     Ultra driver protects against this by only enabling the
  3329.     shared memory during data transfers with the card. Make sure
  3330.     your kernel version is at least 1.1.84, or that the driver
  3331.     version reported at boot is at least <tt/smc-ultra.c:v1.12/
  3332.     otherwise you are vulnerable.
  3333.  
  3334.     If you intend on using this driver as a loadable module
  3335.     you should probably see 
  3336.     <ref id="modules" name="Using the Ethernet Drivers as Modules">
  3337.     and also
  3338.     <ref id="mod8390" name="8390 Based Cards as Modules"> for
  3339.     module specific information.
  3340.  
  3341.  
  3342. <sect2>SMC 8416 (EtherEZ)
  3343. <p>
  3344.  
  3345.     Status -- <em/Supported/
  3346.  
  3347.     This card uses SMC's 83c795 chip and supports the Plug 'n Play
  3348.     specification. It also has an <em/SMC Ultra/ compatible mode,
  3349.     which allows it to be used with the Linux Ultra driver.
  3350.     In this compatibility mode, it uses shared memory 
  3351.     instead of programmed i/o. Be sure to set your card for
  3352.     this compatibility mode. See the above information for
  3353.     notes on the Ultra driver.
  3354.  
  3355.     Note that the EtherEZ specific checks were added to the 
  3356.     SMC Ultra driver in 1.1.84, and hence earlier kernel versions
  3357.     will not detect or handle these cards correctly.
  3358.  
  3359.  
  3360. <sect2>SMC 8432 PCI (EtherPower)<label id="smc-pci">
  3361. <p>
  3362.  
  3363.     Status -- <em/Supported/
  3364.  
  3365.     These cards are
  3366.     a basic DEC 21040 implementation, i.e. one big chip
  3367.     and a couple of transceivers. Donald has used one
  3368.     of these cards for his development of the generic
  3369.     21040 driver (aka <tt/tulip.c/). Thanks to Duke Kamstra, 
  3370.     once again, for supplying a card to do development on.
  3371.  
  3372.     Some of the newer revisons of this card use the newer
  3373.     DEC 21041 chip, which may cause problems with 
  3374.     older versions of the tulip driver. Make sure you are
  3375.     using the latest driver release.
  3376.  
  3377.     See <ref id="dec-21040" name="DEC 21040"> for more
  3378.     details on using one of these cards, and the current 
  3379.     status of the driver.
  3380.  
  3381. <sect2>SMC 3008
  3382. <p>
  3383.  
  3384.     Status -- <em/Not Supported/
  3385.  
  3386.     These 8 bit cards are based on the Fujitsu MB86950, which is an
  3387.     ancient version of the MB86965 used in the Linux at1700
  3388.     driver. Russ says that you could probably hack up a driver
  3389.     by looking at the at1700.c code and his DOS packet driver
  3390.     for the Tiara card (tiara.asm)
  3391.  
  3392. <sect2>SMC 3016
  3393. <p>
  3394.  
  3395.     Status -- <em/Not Supported/
  3396.  
  3397.     These are 16bit i/o mapped 8390 cards, much similar to a generic
  3398.     NE2000 card. If you can get the specifications from SMC, then
  3399.     porting the NE2000 driver would probably be quite easy.
  3400.  
  3401. <sect2>SMC 9000
  3402. <p>
  3403.  
  3404.     Status -- <em/Not Supported/
  3405.  
  3406.     These cards are VLB cards based on the 91c92 chip. They are 
  3407.     fairly expensive, and hence the demand for a driver is pretty
  3408.     low at the moment.
  3409.  
  3410. <sect1>Xircom<label id="xircom">
  3411. <p>
  3412.  
  3413.     Another group that won't release documentation. No cards
  3414.     supported. Don't look for any support in the future unless
  3415.     they release their programming information. And this is
  3416.     highly unlikely, as they <em/forbid/ you from even reverse-
  3417.     engineering their drivers. If you are already stuck with one,
  3418.     see if you can trade it off on some DOS (l)user. 
  3419.  
  3420.     And if you just want to verify that this is the case, you can
  3421.     reach Xircom at 1-800-874-7875, 1-800-438-4526 or +1-818-878-7600.
  3422.     They used to advertise that their products "work with all
  3423.     network operating systems", but have since stopped. Wonder
  3424.     why...
  3425.  
  3426. <sect2>PE1, PE2, PE3-10B*
  3427. <p>
  3428.  
  3429.     Status -- <em/Not Supported/
  3430.  
  3431.     Not to get your hopes up, but if you have one of these parallel
  3432.     port adaptors, you may be able to use it in the DOS emulator
  3433.     with the Xircom-supplied DOS drivers. You will have to allow
  3434.     DOSEMU access to your parallel port, and will probably have 
  3435.     to play with SIG (DOSEMU's Silly Interrupt Generator).
  3436.  
  3437. <sect1>Zenith<label id="zenith">
  3438. <p>
  3439.  
  3440. <sect2>Z-Note<label id="z-note">
  3441. <p>
  3442.  
  3443.     Status -- <em/Supported/
  3444.  
  3445.     The built-in Z-Note network adaptor is based on the Intel
  3446.     i82593 using <em/two/ DMA channels. There is an (alpha?) driver
  3447.     available in the present kernel version. As with all notebook
  3448.     and pocket adaptors, it is under the `Pocket and portable
  3449.     adaptors' section when running <tt/make config/.
  3450.     See <ref id="i82586" name="Programming the Intel chips">
  3451.     for more technical information.
  3452.     Also note that the IBM ThinkPad 300 is compatible with the Z-Note.
  3453.  
  3454. <sect1>Znyx<label id="zynx">
  3455. <p>
  3456.  
  3457. <sect2>Znyx ZX342 (DEC 21040 based)
  3458. <p>
  3459.  
  3460.     Status -- <em/Supported/
  3461.  
  3462.     You have a choice of <em/two/ drivers for cards based on this
  3463.     chip. There is the DE425 driver written by David, and the
  3464.     generic 21040 driver that Donald has written.
  3465.  
  3466.     Note that as of 1.1.91, David has added a compile time option that
  3467.     may allow non-DEC cards (such as the Znyx cards) to work with
  3468.     this driver. Have a look at <tt/README.de4x5/ for details.
  3469.  
  3470.     See <ref id="dec-21040" name="DEC 21040">
  3471.     for more information on these cards, and the present driver
  3472.     situation.
  3473.  
  3474. <sect1>Drivers for Non-Ethernet Devices
  3475. <p>
  3476.  
  3477.     There are a few other drivers that are in the linux source,
  3478.     that present an <em/ethernet-like/ device to network
  3479.     programs, while not really being ethernet. These are briefly
  3480.     listed here for completeness.
  3481.  
  3482.     <tt/dummy.c/ - The purpose of this driver is to provide a device 
  3483.     to point a route through, but not to actually transmit packets.
  3484.  
  3485.     <tt/eql.c/ - Load Equalizer, enslaves multiple devices (usually
  3486.     modems) and balances the Tx load across them while presenting
  3487.     a single device to the network programs.
  3488.  
  3489.     <tt/ibmtr.c/ - IBM Token Ring, which is not really ethernet.
  3490.     Broken-Ring requires source routing and other uglies.
  3491.  
  3492.     <tt/loopback.c/ - Loopback device, for which all packets
  3493.     from you machine and destined for your own machine go.
  3494.     It essentially just moves the packet off the Tx queue and
  3495.     onto the Rx queue.
  3496.  
  3497.     <tt/pi2.c/ - Ottawa Amateur Radio Club PI and PI2 interface.
  3498.     
  3499.     <tt/plip.c/ - Parallel Line Internet Protocol, allows two
  3500.     computers to send packets to each other over two joined
  3501.     parallel ports in a point-to-point fashion.
  3502.  
  3503.     <tt/ppp.c/ - Point-to-Point Protocol (RFC1331), for the 
  3504.     Transmission of Multi-protocol Datagrams over a 
  3505.     Point-to-Point Link (again usually modems).
  3506.  
  3507.     <tt/slip.c/ - Serial Line Internet Protocol, allows two
  3508.     computers to send packets to each other over two joined
  3509.     serial ports (usually via modems) in a point-to-point fashion.
  3510.  
  3511.     <tt/tunnel.c/ - Provides an IP tunnel through which you can 
  3512.     tunnel network traffic transparently across subnets
  3513.  
  3514.     <tt/wavelan.c/ - An Ethernet-like radio transceiver
  3515.     controlled by the Intel 82586 coprocessor which is used on
  3516.     other ethercards such as the Intel EtherExpress.
  3517.  
  3518. <sect>Cables, Coax, Twisted Pair<label id="cable">
  3519. <p>
  3520.     If you are starting a network from scratch, it's considerably less
  3521.     expensive to use thin ethernet, RG58 co-ax cable with BNC connectors,
  3522.     than old-fashioned thick ethernet, RG-5 cable with N connectors, or
  3523.     10baseT, twisted pair telco-style cables with RJ-45 eight wire `phone'
  3524.     connectors. See <ref id="cable-intro" name="Type of cable..."> for
  3525.     an introductory look at cables.
  3526.  
  3527.     Also note that the FAQ from <em/comp.dcom.lans.ethernet/ has a lot
  3528.     of useful information on cables and such. Look in 
  3529.     <tt/dorm.rutgers.edu/ for the file 
  3530.     <tt>/pub/novell/info_and_docs/Ethernet.FAQ</tt>
  3531.  
  3532. <sect1>Thin Ethernet (thinnet)<label id="bnc">
  3533. <p>
  3534.     
  3535.     Thin ethernet is the `ether of choice'. The cable is inexpensive. If
  3536.     you are making your own cables solid-core RG58A is $0.27/m. and
  3537.     stranded RG58AU is $0.45/m. Twist-on BNC 
  3538.     connectors are < $2 ea.,
  3539.     and other misc. pieces are similarly inexpensive. It is essential
  3540.     that you properly terminate each end of the cable with 50 ohm
  3541.     terminators, so budget $2 ea. for a pair. It's also vital that
  3542.     your cable have no `stubs' -- the `T' connectors must be attached
  3543.     directly to the ethercards. The only drawback is that if you have
  3544.     a big loop of machines connected together, and some bonehead breaks
  3545.     the loop by taking one cable off the side of his tee, the whole
  3546.     network goes down because it sees an infinite impedance (open
  3547.     circuit) instead of the required 50 ohm termination. Note that
  3548.     you can remove the tee piece from the card itself without killing
  3549.     the whole subnet, as long as you don't remove the cables from the
  3550.     tee itself. Of course this will disturb the machine that you
  3551.     pull the actual tee off of. 8-) And if you are doing a small
  3552.     network of two machines, you <em/still/ need the tees and the 50 ohm
  3553.     terminators -- you <em/can't/ just cable them together!
  3554.  
  3555.     
  3556. <sect1>Twisted Pair<label id="utp">
  3557. <p>
  3558.  
  3559.     Twisted pair networks require active hubs, 
  3560.     which start around $200,
  3561.     and the raw cable cost can actually be higher than thinnet. They are
  3562.     usually sold using the claim that you can use your existing telephone
  3563.     wiring, but it's a rare installation where that turns out to be the
  3564.     case. The claim that you can upgrade to higher speeds is also
  3565.     suspect, as most proposed schemes use higher-grade
  3566.     (read $$) cable and
  3567.     more sophisticated termination ($$$) 
  3568.     than you would likely install on
  3569.     speculation. New gizmos are floating around which allow you to
  3570.     daisy-chain machines together, and the like. For example,
  3571.     Farallon sells EtherWave adaptors and transceivers. This device
  3572.     allows multiple 10baseT devices to be daisy-chained. They also
  3573.     sell a 3c509 clone that includes the EtherWave transceiver.
  3574.     The drawback is that it's more expensive and less reliable than a 
  3575.     cheap ($100-$150) mini-hub and another ethercard. 
  3576.     You probably should either go for the hub approach or switch over 
  3577.     to 10base2 thinnet.
  3578.  
  3579.     On the other hand, hubs are rapidly dropping in price, all 100Mb/sec
  3580.     ethernet proposals use twisted pair, and most new business
  3581.     installations use twisted pair. (This is probably to avoid the
  3582.     problem with idiots messing with the BNC's as described above.)
  3583.  
  3584.     Also, Russ Nelson adds that `New installations should use Category 5
  3585.     wiring. Anything else is a waste of your installer's time, as
  3586.     100Base-whatever is going to require Cat 5.'
  3587.  
  3588.     If you are only connecting two machines, it is possible to avoid
  3589.     using a hub, by swapping the Rx and Tx pairs (1-2 and 3-6).
  3590.  
  3591.     If you hold the RJ-45 connector facing you (as if you were 
  3592.     going to plug it into your mouth) with the lock tab on the top,
  3593.     then the pins are numbered 1 to 8 from left to right. The pin
  3594.     usage is as follows:
  3595.  
  3596. <verb>
  3597.     Pin Number        Assignment
  3598.     ----------        ----------
  3599.     1            Output Data (+)
  3600.     2            Output Data (-)
  3601.     3            Input Data (+)
  3602.     4            Reserved for Telephone use
  3603.     5            Reserved for Telephone use
  3604.     6            Input Data (-)
  3605.     7            Reserved for Telephone use
  3606.     8            Reserved for Telephone use
  3607. </verb>
  3608.  
  3609.     Some cards, like the wd8013 can sense reversed polarity, and
  3610.     will adjust accordingly. Also note that 3 and 6 <bf/must/ be
  3611.     a twisted pair. If you make 3-4 a twisted pair, and 5-6 the
  3612.     other twisted pair, your cable may work for lengths less than
  3613.     a metre, but will <em/fail miserably/ for longer lengths.
  3614.  
  3615.     Note that before 10BaseT was ratified as a standard, there
  3616.     existed  other network formats using RJ-45
  3617.     connectors, and the same wiring scheme as above. Examples
  3618.     are SynOptics's LattisNet, and AT&T's StarLAN. 
  3619.     In some cases, (as with early 3C503 cards) you could set jumpers
  3620.     to get the card to talk to hubs of different types, but in most cases
  3621.     cards designed for these older types of networks will not work with
  3622.     standard 10BaseT networks/hubs. (Note that if the cards also have
  3623.     an AUI port, then there is no reason as to why you can't use that,
  3624.     combined with an AUI to 10BaseT transceiver.)
  3625.     
  3626. <sect1>Thick Ethernet
  3627. <p>
  3628.     Thick ethernet is mostly obsolete, and is usually used only to remain
  3629.     compatible with an existing implementation. You can stretch the rules
  3630.     and connect short spans of thick and thin ethernet together with a
  3631.     passive $3 N-to-BNC connector, and that's often the best 
  3632.     solution to expanding an existing thicknet. A correct (but expensive)
  3633.     solution is to use a repeater in this case.
  3634. </sect>
  3635.  
  3636. <sect>Software Configuration and Card Diagnostics<label id="utils">
  3637. <p>
  3638.  
  3639.     In most cases, if the configuration is done by software,
  3640.     and stored in an EEPROM, you will usually have to boot
  3641.     DOS, and use the supplied DOS program to set the cards
  3642.     IRQ, I/O, mem_addr and whatnot. Besides, hopefully it is 
  3643.     something you will only be setting once. For those that
  3644.     don't have the DOS utility available, note that a fair
  3645.     number of NIC setup/driver disks (e.g. 3Com, SMC/WD and
  3646.     Allied Telesis NIC's) are available from <tt/dorm.rutgers.edu/ 
  3647.     in the directory <tt>/pub/novell/nic_drvs/</tt>
  3648.     However, there are some cards for which Linux versions of 
  3649.     the config utils exist, and they are listed here.
  3650.  
  3651.     Also, Donald has written a few small card diagnostic 
  3652.     programs that run under Linux. Most of these are a result
  3653.     of debugging tools that he has created while writing the
  3654.     various drivers. Don't expect
  3655.     fancy menu-driven interfaces. You will have to read the
  3656.     source code to use most of these. Even if your particular
  3657.     card doesn't have a corresponding diagnostic, you can
  3658.     still get lots of information just by typing
  3659.     <tt>cat /proc/net/dev</tt> -- assuming that your card
  3660.     was at least detected at boot.
  3661.  
  3662.     In either case, you will have to run most of these programs
  3663.     as root (to allow I/O to the ports) and you probably want
  3664.     to shut down the ethercard before doing so by typing
  3665.     <tt/ifconfig eth0 down/ (Note: replace <tt/eth0/ with
  3666.     <tt/atp0/ or whatever when appropriate.)
  3667.  
  3668. <sect1>Configuration Programs for Ethernet Cards<label id="config">
  3669. <p>
  3670.  
  3671.     For people with wd80x3 cards, there is the program <tt/wdsetup/
  3672.     which can be found in <tt/wdsetup-0.6a.tar.gz/ on Linux ftp sites.
  3673.     I am not sure if it is being actively maintained or not, as it has
  3674.     not been updated for quite a while. If it works fine for you
  3675.     then great, if not, use the DOS version that you should have got 
  3676.     with your card. If you don't have the DOS version, you will be
  3677.     glad to know that the SMC setup/driver disks are available
  3678.     at the <tt/dorm.rutgers.edu/ site mentioned above.
  3679.     Of course, you <em/have/ to have an EEPROM card to use this utility.
  3680.     Old, <em/old/ wd8003 cards, and some wd8013 clones use jumpers
  3681.     to set up the card instead.
  3682.  
  3683.     The Digital EtherWorks 3 card can be configured in a similar
  3684.     fashion to the DOS program <tt/NICSETUP.EXE/. David C. Davies
  3685.     wrote this and other tools for the EtherWorks 3 in conjunction
  3686.     with the driver. Look on <tt/sunsite.unc.edu/ in the directory
  3687.     <tt>/pub/linux/system/Network/management</tt> for the file
  3688.     that is named <tt/ewrk3tools-X.XX.tar.gz/.
  3689.  
  3690.     Some Nat Semi DP83905 implementations (such as the AT/LANTIC
  3691.     and the NE2000+) are software configurable. (Note that this
  3692.     card can also emulate a wd8013!) You can get the file
  3693.     <tt>/pub/linux/setup/atlantic.c</tt> from Donald's ftp
  3694.     server, <tt/cesdis.gsfc.nasa.gov/ to configure this card.
  3695.     Be careful when configuring NE2000+ cards, as you can give
  3696.     them bad setting values which will require you to open the
  3697.     case and switch a jumper to force it back to sane settings.
  3698.  
  3699.     The 3Com Etherlink III family of cards (i.e. 3c5x9) can
  3700.     be configured by using another config utility from Donald.
  3701.     You can get the file <tt>/pub/linux/setup/3c5x9setup.c</tt> 
  3702.     from Donald's ftp server, <tt/cesdis.gsfc.nasa.gov/ to 
  3703.     configure these cards. (Note that the DOS 3c5x9B config
  3704.     utility may have more options pertaining to the new ``B'' 
  3705.     series of the Etherlink III family.)
  3706.  
  3707.  
  3708.  
  3709. <sect1>Diagnostic Programs for Ethernet Cards<label id="diag">
  3710. <p>
  3711.  
  3712.     Any of the diagnostic programs that Donald has written can
  3713.     be obtained from this URL.
  3714.  
  3715.     <url url="http://cesdis.gsfc.nasa.gov/pub/linux/diag/diagnostic.html"
  3716.         name="Ethercard Diagnostics">
  3717.  
  3718.     Allied Telesis AT1700 -- look for the file 
  3719.     <tt>/pub/linux/diag/at1700.c</tt> on <tt/cesdis.gsfc.nasa.gov/.
  3720.  
  3721.     Cabletron E21XX -- look for the file 
  3722.     <tt>/pub/linux/diag/e21.c</tt> on <tt/cesdis.gsfc.nasa.gov/.
  3723.  
  3724.     HP PCLAN+ -- look for the file 
  3725.     <tt>/pub/linux/diag/hp+.c</tt> on <tt/cesdis.gsfc.nasa.gov/.
  3726.  
  3727.     Intel EtherExpress -- look for the file
  3728.         <tt>/pub/linux/diag/eexpress.c</tt> on <tt/cesdis.gsfc.nasa.gov/.
  3729.  
  3730.     NE2000 cards -- look for the file     
  3731.     <tt>/pub/linux/diag/ne2k.c</tt> on <tt/cesdis.gsfc.nasa.gov/.
  3732.  
  3733.     RealTek (ATP) Pocket adaptor -- look for the file
  3734.     <tt>/pub/linux/diag/atp-diag.c</tt> on <tt/cesdis.gsfc.nasa.gov/.
  3735.  
  3736.     All Other Cards -- try typing <tt>cat /proc/net/dev</tt> and
  3737.     see what useful info the kernel has on the card in question.
  3738.  
  3739. <sect>Technical Information<label id="tech-intro">
  3740. <p>
  3741.  
  3742.     For those who want to play with the present drivers, or try to make
  3743.     up their own driver for a card that is presently unsupported, this
  3744.     information should be useful. If you do not fall into this category,
  3745.     then perhaps you will want to skip this section.
  3746.  
  3747. <sect1>Probed Addresses<label id="probe">
  3748. <p>
  3749.  
  3750.     While trying to determine what ethernet card is there, the following
  3751.     addresses are autoprobed, assuming the type and specs of the card
  3752.     have not been set in the kernel. The file names below are
  3753.     in /usr/src/linux/drivers/net/
  3754.  
  3755. <code>
  3756.         3c501.c         0x280, 0x300
  3757.         3c503.c:        0x300, 0x310, 0x330, 0x350, 0x250, 0x280, 0x2a0, 0x2e0
  3758.         3c505.c:        0x300, 0x280, 0x310
  3759.         3c507.c:        0x300, 0x320, 0x340, 0x280
  3760.         3c509.c:        Special ID Port probe
  3761.     apricot.c    0x300
  3762.         at1700.c:       0x300, 0x280, 0x380, 0x320, 0x340, 0x260, 0x2a0, 0x240
  3763.         atp.c:          0x378, 0x278, 0x3bc
  3764.         depca.c         0x300, 0x200
  3765.         de600.c:        0x378
  3766.         de620.c:        0x378
  3767.         eexpress.c:     0x300, 0x270, 0x320, 0x340
  3768.         hp.c:           0x300, 0x320, 0x340, 0x280, 0x2C0, 0x200, 0x240
  3769.     hp-plus.c    0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340
  3770.         lance.c:        0x300, 0x320, 0x340, 0x360
  3771.         ne.c:           0x300, 0x280, 0x320, 0x340, 0x360
  3772.     ni52.c        0x300, 0x280, 0x360, 0x320, 0x340
  3773.     ni65.c        0x300, 0x320, 0x340, 0x360
  3774.         smc-ultra.c:    0x200, 0x220, 0x240, 0x280, 0x300, 0x340, 0x380
  3775.         wd.c:           0x300, 0x280, 0x380, 0x240
  3776. </code>
  3777.  
  3778.     There are some NE2000 clone ethercards out there that are waiting black
  3779.     holes for autoprobe drivers. While many NE2000 clones are
  3780.     safe until they are enabled, some can't be reset to a safe mode.
  3781.     These dangerous ethercards will hang any I/O access to their
  3782.     `dataports'. The typical dangerous locations are:
  3783. <code>
  3784.         Ethercard jumpered base     Dangerous locations (base + 0x10 - 0x1f)
  3785.                 0x300 *                         0x310-0x317
  3786.                 0x320                           0x330-0x337
  3787.                 0x340                           0x350-0x357
  3788.                 0x360                           0x370-0x377
  3789. </code>
  3790.  
  3791.     * The 0x300 location is the traditional place to put an ethercard, but
  3792.     it's also a popular place to put other devices (often SCSI
  3793.     controllers). The 0x320 location is often the next one chosen, but
  3794.     that's bad for for the AHA1542 driver probe. The 0x360 location is
  3795.     bad, because it conflicts with the parallel port at 0x378.
  3796.     If you have two IDE controllers, or two floppy controlers, then
  3797.     <tt/0x360/ is also a bad choice, as a NE2000 card will clobber
  3798.     them as well. 
  3799.  
  3800.     Note that kernels > 1.1.7X keep a log of who uses
  3801.     which i/o ports, and will not let a driver use i/o ports registered
  3802.     by an earlier driver. This may result in probes silently failing.
  3803.     You can view who is using what i/o ports by typing
  3804.     <tt>cat /proc/ioports</tt> if you have the proc filesystem enabled.
  3805.  
  3806.     To avoid these lurking ethercards, here are the things you can do:
  3807.  
  3808. <itemize>
  3809.  
  3810. <item>    Probe for the device's BIOS in memory space. This is easy
  3811.     and always safe, but it only works for cards that always have
  3812.     BIOSes, like primary SCSI controllers.
  3813.  
  3814. <item>    Avoid probing any of the above locations until you think
  3815.     you've located your device. The NE2000 clones have a reset range
  3816.     from <base>+0x18 to <base>+0x1f that
  3817.     will read as 0xff, so probe
  3818.     there first if possible. It's also safe to probe in the 8390
  3819.     space at <base>+0x00 - <base>+0x0f, but that area 
  3820.     will return quasi-random values
  3821.  
  3822. <item>    If you must probe in the dangerous range, for instance if your
  3823.     target device has only a few port locations, first check that
  3824.     there isn't an NE2000 there. You can see how to do this by
  3825.     looking at the probe code in /usr/src/linux/net/inet/ne.c
  3826.  
  3827. <item>    Use the `reserve' boot time argument to protect volatile
  3828.     areas from being probed. See the information on using boot
  3829.     time arguments with LILO in 
  3830.     <ref id="reserve" name="The reserve command">
  3831.  
  3832. </itemize>
  3833.  
  3834. <sect1>Writing a Driver<label id="skel">
  3835. <p>
  3836.  
  3837.  
  3838.     The only thing that one needs to use an ethernet card with Linux
  3839.     is the appropriate driver. For this, it is essential that the
  3840.     manufacturer will release the technical programming information to
  3841.     the general public without you (or anyone) having to sign your life
  3842.     away. A good guide for the likelihood of getting documentation
  3843.     (or, if you aren't writing code, the likelihood that someone
  3844.     else will write that driver you really, really need) is the
  3845.     availability of the Crynwr (nee Clarkson) packet driver. Russ
  3846.     Nelson runs this operation, and has been very helpful in supporting 
  3847.     the development of drivers for Linux. <em/Net-surfers/ can try this
  3848.     URL to look up Russ' software.
  3849.  
  3850.     <url url="http://www.crynwr.com/crynwr/home.html"
  3851.         name="Russ Nelson's Packet Drivers">
  3852.  
  3853.     Given the documentation, you can write a driver for
  3854.     your card and use it for Linux (at least in theory).
  3855.     Keep in mind that some old hardware that was designed for XT type
  3856.     machines will not function very well in a multitasking
  3857.     environment such as Linux. Use of these will lead to major
  3858.     problems if your network sees a reasonable amount of traffic.
  3859.  
  3860.     Most cards come with drivers for MS-DOS interfaces such as
  3861.     NDIS and ODI, but these are useless for Linux. Many people
  3862.     have suggested directly linking them in or automatic
  3863.     translation, but this is nearly impossible. The MS-DOS
  3864.     drivers expect to be in 16 bit mode and hook into `software
  3865.     interrupts', both incompatible with the Linux kernel. This
  3866.     incompatibility is actually a feature, as some Linux drivers
  3867.     are considerably better than their MS-DOS counterparts. The
  3868.     `8390' series drivers, for instance, use ping-pong transmit
  3869.     buffers, which are only now being introduced in the MS-DOS world.
  3870.  
  3871.     (Ping-pong Tx buffers means using at least 2 max-size
  3872.     packet buffers for Tx packets. One is loaded while the card
  3873.     is transmitting the other. The second is then sent as soon
  3874.     as the first finished, and so on. In this way, most cards
  3875.     are able to continuously send back-to-back packets onto
  3876.     the wire.)
  3877.  
  3878.     OK. So you have decided that you want to write a driver for the
  3879.     Foobar Ethernet card, as you have the programming information,
  3880.     and it hasn't been done yet. (...these are the two main 
  3881.     requirements ;-) You should start with the skeleton 
  3882.     network driver that is provided
  3883.     with the Linux kernel source tree. It can be found in the file
  3884.     /usr/src/linux/drivers/net/skeleton.c in all recent kernels.
  3885.  
  3886.  
  3887. <sect1>Driver interface to the kernel
  3888. <p>
  3889.  
  3890.     Here are some notes on the functions that you would have to
  3891.     write if creating a new driver. Reading this in conjunction
  3892.     with the above skeleton driver may help clear things up.
  3893.  
  3894.  
  3895. <sect2>Probe
  3896. <p>
  3897.  
  3898.     Called at boot to check for existence of card. Best if it
  3899.     can check un-obtrsively by reading from memory, etc. Can
  3900.     also read from i/o ports. Initial writing to i/o ports in a probe
  3901.     is <em/not good/ as it may kill another device.
  3902.     Some device initialization is usually done here (allocating
  3903.     i/o space, IRQs,filling in the dev->??? fields etc.)
  3904.     You need to know what io ports/mem the card can be
  3905.     configured to, how to enable shared memory (if used)
  3906.     and how to select/enable interrupt generation, etc.
  3907.  
  3908. <sect2>Interrupt handler
  3909. <p>
  3910.  
  3911.     Called by the kernel when the card posts an interrupt.
  3912.     This has the job of determining why the card posted
  3913.     an interrupt, and acting accordingly. Usual interrupt
  3914.     conditions are data to be rec'd, transmit completed,
  3915.     error conditions being reported. You need to know
  3916.     any relevant interrupt status bits so that you can
  3917.     act accordingly.
  3918.  
  3919. <sect2>Transmit function
  3920. <p>
  3921.  
  3922.     Linked to dev->hard_start_xmit() and is called by the
  3923.     kernel when there is some data that the kernel wants
  3924.     to put out over the device. This puts the data onto
  3925.     the card and triggers the transmit. You need to
  3926.     know how to bundle the data and how to get it onto the
  3927.     card (shared memory copy, PIO transfer, DMA?) and in
  3928.     the right place on the card. Then you need to know
  3929.     how to tell the card to send the data down the wire, and
  3930.     (possibly) post an interrupt when done.
  3931.     When the hardware can't accept additional packets it should set
  3932.     the dev->tbusy flag. When additional room is available, usually
  3933.     during a transmit-complete interrupt, dev->tbusy should be cleared
  3934.     and the higher levels informed with <tt/mark_bh(INET_BH)/.
  3935.  
  3936. <sect2>Receive function
  3937. <p>
  3938.  
  3939.     Called by the kernel interrupt handler when the card reports
  3940.     that there is data on the card. It pulls the data off
  3941.     the card, packages it into a sk_buff and lets the
  3942.     kernel know the data is there for it by doing a
  3943.     netif_rx(sk_buff). You need to know how to enable
  3944.     interrupt generation upon Rx of data, how to check any
  3945.     relevant Rx status bits, and how to get that data off the
  3946.     card (again sh mem, PIO, DMA, etc.)
  3947.  
  3948. <sect2>Open function
  3949. <p>
  3950.  
  3951.     linked to dev->open and called by the networking layers
  3952.     when somebody does <tt/ifconfig eth0 up/ - this
  3953.     puts the device on line and enables it for Rx/Tx of
  3954.     data. Any special initialization incantations that were
  3955.     not done in the probe sequence (enabling IRQ generation, etc.)
  3956.     would go in here.
  3957.  
  3958. <sect2>Close function (optional)
  3959. <p>
  3960.  
  3961.     This puts the card in a sane state when someone 
  3962.     does <tt/ifconfig eth0 down/.
  3963.     It should free the IRQs and DMA channels if the hardware permits,
  3964.         and turn off anything that will save power (like the transceiver).
  3965.  
  3966. <sect2>Miscellaneous functions
  3967. <p>
  3968.  
  3969.     Things like a reset function, so that if things go south,
  3970.     the driver can try resetting the card as a last ditch effort.
  3971.     Usually done when a Tx times out or similar. Also a function
  3972.     to read the statistics registers of the card if so equipped.
  3973.  
  3974. <sect1>Interrupts and Linux
  3975. <p>
  3976.  
  3977.     There are two kinds of interrupt handlers in Linux:
  3978.     fast ones and slow ones. You decide what kind you are installing by
  3979.     the flags you pass to irqaction(). The fast ones, such as the serial
  3980.     interrupt handler, run with _all_ interrupts disabled. The normal
  3981.     interrupt handlers, such as the one for ethercard drivers, runs with
  3982.     other interrupts enabled.
  3983.  
  3984.     There is a two-level interrupt structure. The `fast' part handles the
  3985.     device register, removes the packets, and perhaps sets a flag.  After
  3986.     it is done, and interrupts are re-enabled, the slow part is run if the
  3987.     flag is set.
  3988.  
  3989.     The flag between the two parts is set by:
  3990.  
  3991. <tscreen>
  3992.         mark_bh(INET_BH);
  3993. </tscreen>
  3994.  
  3995.     Usually this flag is set within dev_rint() during a received-packet
  3996.     interrupt, and set directly by the device driver during a
  3997.     transmit-complete interrupt.
  3998.  
  3999.     You might wonder why all interrupt handlers cannot run in
  4000.     `normal mode' with other interrupts enabled. Ross Biro uses this
  4001.     scenario to illustrate the problem:
  4002.  
  4003. <itemize>
  4004.  
  4005. <item>    You get a serial interrupt, and start processing it.
  4006.     The serial interrupt is now masked.
  4007.  
  4008. <item>    You get a network interrupt, and you start transferring
  4009.     a maximum-sized 1500 byte packet from the card.
  4010.  
  4011. <item>    Another character comes in, but this time the interrupts
  4012.     are masked!
  4013.  
  4014. </itemize>
  4015.  
  4016.     The `fast' interrupt structure solves this problem by allowing
  4017.     bounded-time interrupt handlers to run without the risk of leaving
  4018.     their interrupt lines masked by another interrupt request.
  4019.  
  4020.     There is an additional distinction between fast and slow interrupt
  4021.     handlers -- the arguments passed to the handler. A `slow' handler is
  4022.     defined as
  4023.  
  4024. <code>
  4025.  
  4026.         static void
  4027.         handle_interrupt(int reg_ptr)
  4028.         {
  4029.             int irq = -(((struct pt_regs *)reg_ptr)->orig_eax+2);
  4030.             struct device *dev = irq2dev_map[irq];
  4031.         ...
  4032.  
  4033. </code>
  4034.  
  4035.     While a fast handler gets the interrupt number directly
  4036.  
  4037. <code>
  4038.  
  4039.         static void
  4040.         handle_fast_interrupt(int irq)
  4041.         {
  4042.         ...
  4043.  
  4044. </code>
  4045.  
  4046.     A final aspect of network performance is latency. The only board
  4047.     that really addresses this is the 3c509, which allows a predictive
  4048.     interrupt to be posted. It provides an interrupt response timer so
  4049.     that the driver can fine-tune how early an interrupt is generated.
  4050.  
  4051. <sect1>Programming the Intel chips (i82586 and i82593)<label id="i82586">
  4052. <p>
  4053.  
  4054.     These chips are used on a number of cards, namely the 3c507 ('86),
  4055.     the Intel EtherExpress 16 ('86), Microdyne's exos205t ('86),
  4056.     the Z-Note ('93), and the Racal-Interlan ni5210 ('86).
  4057.  
  4058.     Russ Nelson writes:
  4059.     `Most boards based on the 82586 can reuse quite a bit of their code.
  4060.     More, in fact, than the 8390-based adapters. There are only three
  4061.     differences between them:
  4062.  
  4063. <itemize>
  4064.  
  4065. <item>    The code to get the Ethernet address,
  4066. <item>    The code to trigger CA on the 82586, and
  4067. <item>    The code to reset the 82586.
  4068.  
  4069. </itemize>
  4070.  
  4071.     The Intel EtherExpress 16 is an exception, as it I/O maps the 82586.
  4072.     Yes, I/O maps it. Fairly clunky, but it works.
  4073.  
  4074.     Garrett Wollman did an AT&T driver for BSD that uses the BSD
  4075.     copyright. The latest version I have (Sep '92) only uses a single
  4076.     transmit buffer. You can and should do better than this if you've
  4077.     got the memory. The AT&T and 3c507 adapters do; the ni5210 doesn't.
  4078.  
  4079.     The people at Intel gave me a very big clue on how you queue up
  4080.     multiple transmit packets. You set up a list of
  4081.     NOP-> XMIT-> NOP-> XMIT-> NOP-> XMIT-> beginning)
  4082.     blocks, then you set the
  4083.     `next' pointer of all the NOP blocks to themselves. Now you start
  4084.     the command unit on this chain. It continually processes the first
  4085.     NOP block. To transmit a packet, you stuff it into the next transmit
  4086.     block, then point the NOP to it. To transmit the next packet, you
  4087.     stuff the next transmit block and point the previous NOP to <em/it/. In
  4088.     this way, you don't have to wait for the previous transmit to finish,
  4089.     you can queue up multiple packets without any ambiguity as to whether
  4090.     it got accepted, and you can avoid the command unit start-up delay.'
  4091.  
  4092. <sect1>Technical information from 3Com<label id="3com-tech">
  4093. <p>
  4094.  
  4095.     If you are interested in working on drivers for 3Com cards,
  4096.     you can get technical documentation from 3Com. Cameron has
  4097.     been kind enough to tell us how to go about it below:
  4098.  
  4099.     3Com's Ethernet Adapters are documented for driver writers
  4100.     in our `Technical References' (TRs). These manuals describe
  4101.     the programmer interfaces to the boards but they don't talk
  4102.     about the diagnostics, installation programs, etc that end
  4103.     users can see.
  4104.     
  4105.     The Network Adapter Division marketing department has the
  4106.     TRs to give away. To keep this program efficient, we
  4107.     centralized it in a thing called `CardFacts.' CardFacts is
  4108.     an automated phone system. You call it with a touch-tone
  4109.     phone and it faxes you stuff. To get a TR, call CardFacts
  4110.     at 408-727-7021. Ask it for Developer's Order Form,
  4111.     document number 9070. Have your fax number ready when you
  4112.     call. Fill out the order form and fax it to 408-764-5004.
  4113.     Manuals are shipped by Federal Express 2nd Day Service.
  4114.     
  4115.     After you get a manual, if you still can't figure out how to
  4116.     program the board, try our `CardBoard' BBS at
  4117.     1-800-876-3266, and if you can't do that, write
  4118.     Andy_Chan@3Mail.3com.com and ask him for alternatives. If
  4119.     you have a real stumper that nobody has figured out yet, the
  4120.     fellow who needs to know about it is
  4121.     Steve_Lebus@3Mail.3com.com.
  4122.     
  4123.     There are people here who think we are too free with the
  4124.     manuals, and they are looking for evidence that the system
  4125.     is too expensive, or takes too much time and effort. That's
  4126.     why it's important to try to use CardFacts <em/before/ you
  4127.     start calling and mailing the people I named here.
  4128.     
  4129.     There are even people who think we should be like Diamond
  4130.     and Xircom, requiring tight `partnership' with driver
  4131.     writers to prevent poorly performing drivers from getting
  4132.     written. So far, 3Com customers have been really good about
  4133.     this, and there's no problem with the level of requests
  4134.     we've been getting. We need your continued cooperation and
  4135.     restraint to keep it that way.
  4136.     
  4137. <verb>
  4138.     Cameron Spitzer, 408-764-6339
  4139.     3Com NAD
  4140.     Santa Clara
  4141.     work: camerons@nad.3com.com
  4142.     home: cls@truffula.sj.ca.us
  4143. </verb>
  4144.  
  4145.  
  4146. <sect1>Notes on AMD PCnet / LANCE Based cards<label id="amd-notes">
  4147. <p>
  4148.  
  4149.     The AMD LANCE (Local Area Network Controller for Ethernet)
  4150.     was the original offering, and has since been replaced by
  4151.     the `PCnet-ISA' chip, otherwise known as the 79C960.
  4152.     A relatively new chip from AMD, the 79C960, is the heart of many
  4153.     new cards being released at present. Note that the name `LANCE'
  4154.     has stuck, and some people will refer to the new chip by the old
  4155.     name. Dave Roberts of the Network Products Division of AMD was kind
  4156.     enough to contribute the following information regarding this chip:
  4157.  
  4158.     `As for the architecture itself, AMD developed it originally
  4159.     and reduced it to a single chip -- the PCnet(tm)-ISA -- over a year
  4160.     ago. It's been selling like hotcakes ever since.
  4161.  
  4162.     Functionally, it is equivalent to a NE1500. The register set
  4163.     is identical to the old LANCE with the 1500/2100 architecture
  4164.     additions. Older 1500/2100 drivers will work on the PCnet-ISA.
  4165.     The NE1500 and NE2100 architecture is basically the same.
  4166.     Initially Novell called it the 2100, but then tried to distinguish
  4167.     between coax and 10BASE-T cards. Anything that was 10BASE-T only was
  4168.     to be numbered in the 1500 range. That's the only difference.
  4169.  
  4170.     Many companies offer PCnet-ISA based products, including HP,
  4171.     Racal-Datacom, Allied Telesis, Boca Research, Kingston Technology, etc.
  4172.     The cards are basically the same except that some manufacturers
  4173.     have added `jumperless' features that allow the card to
  4174.     be configured in software. Most have not. AMD offers a standard
  4175.     design package for a card that uses the PCnet-ISA and many
  4176.     manufacturers use our design without change.
  4177.     What this means is that anybody who wants to write drivers for
  4178.     most PCnet-ISA based cards can just get the data-sheet from AMD. Call
  4179.     our literature distribution center at (800)222-9323 and ask for the
  4180.     Am79C960, PCnet-ISA data sheet. It's free.
  4181.  
  4182.     A quick way to understand whether the card is a `stock' card
  4183.     is to just look at it. If it's stock, it should just have one large
  4184.     chip on it, a crystal, a small IEEE address PROM, possibly a socket
  4185.     for a boot ROM, and a connector (1, 2, or 3, depending on the media
  4186.     options offered). Note that if it's a coax card, it will have some
  4187.     transceiver stuff built onto it as well, but that should be near the
  4188.     connector and away from the PCnet-ISA.'
  4189.  
  4190.     There is also some info regarding the LANCE chip in the file
  4191.     lance.c which is included in the standard kernel.
  4192.  
  4193.     A note to would-be card hackers is that different LANCE 
  4194.     implementations do `restart' in different ways. Some pick up
  4195.     where they left off in the ring, and others start right from
  4196.     the beginning of the ring, as if just initialised. This is
  4197.     a concern when setting the multicast list.
  4198.  
  4199. <sect1>Multicast and Promiscuous Mode<label id="promisc">
  4200. <p>
  4201.  
  4202.     Another one of the things Donald has worked on is
  4203.     implementing multicast and promiscuous mode hooks.
  4204.     All of the <em/released/ (i.e. <bf/not/ ALPHA) ISA drivers
  4205.     now support promiscuous mode.
  4206.  
  4207.     Donald writes: 
  4208.     `At first I was planning to do it while implementing either
  4209.     the /dev/* or DDI interface, but that's not really the
  4210.     correct way to do it. We should only enable multicast or
  4211.     promiscuous modes when something wants to look at the
  4212.     packets, and shut it down when that application is
  4213.     finished, neither of which is strongly related to when the
  4214.     hardware is opened or released.
  4215.     
  4216.     I'll start by discussing promiscuous mode, which is
  4217.     conceptually easy to implement. For most hardware you
  4218.     only have to set a register bit, and from then on you get
  4219.     every packet on the wire. Well, it's almost that easy;
  4220.     for some hardware you have to shut the board (potentially
  4221.     dropping a few packet), reconfigure it, and then re-enable
  4222.     the ethercard. This is grungy and risky, but the
  4223.     alternative seems to be to have every application register
  4224.     before you open the ethercard at boot-time.
  4225.     
  4226.     OK, so that's easy, so I'll move on something that's not
  4227.     quite so obvious: Multicast. It can be done two ways:
  4228.     
  4229. <enum>
  4230.  
  4231. <item>    Use promiscuous mode, and a packet filter like the
  4232.     Berkeley packet filter (BPF). The BPF is a pattern matching
  4233.     stack language, where you write a program that picks out the
  4234.     addresses you are interested in. Its advantage is that it's
  4235.     very general and programmable. Its disadvantage is that there
  4236.     is no general way for the kernel to avoid turning on promiscuous
  4237.     mode and running every packet on the wire through every registered
  4238.     packet filter. See <ref id="bpf" name="The Berkeley Packet Filter">
  4239.     for more info. 
  4240.     
  4241. <item>    Using the built-in multicast filter that most etherchips have.
  4242.  
  4243. </enum>
  4244.     
  4245.     I guess I should list what a few ethercards/chips provide:
  4246.  
  4247. <verb>
  4248.     
  4249.     Chip/card  Promiscuous  Multicast filter
  4250.     ----------------------------------------
  4251.     Seeq8001/3c501  Yes     Binary filter (1)
  4252.     3Com/3c509      Yes     Binary filter (1)
  4253.     8390            Yes     Autodin II six bit hash (2) (3)
  4254.     LANCE           Yes     Autodin II six bit hash (2) (3)
  4255.     i82586          Yes     Hidden Autodin II six bit hash (2) (4)
  4256.     
  4257. </verb>
  4258.  
  4259. <enum>
  4260.  
  4261. <item>    These cards claim to have a filter, but it's a simple
  4262.     yes/no `accept all multicast packets', or `accept no
  4263.     multicast packets'.
  4264.  
  4265. <item>    AUTODIN II is the standard ethernet CRC (checksum)
  4266.     polynomial. In this scheme multicast addresses are hashed
  4267.     and looked up in a hash table. If the corresponding bit
  4268.     is enabled, this packet is accepted. Ethernet packets are
  4269.     laid out so that the hardware to do this is trivial -- you
  4270.     just latch six (usually) bits from the CRC circuit (needed
  4271.     anyway for error checking) after the first six octets (the
  4272.     destination address), and use them as an index into the
  4273.     hash table (six bits -- a 64-bit table).
  4274.     
  4275. <item>    These chips use the six bit hash, and must have the
  4276.     table computed and loaded by the host. This means the
  4277.     kernel must include the CRC code.
  4278.     
  4279. <item>    The 82586 uses the six bit hash internally, but it
  4280.     computes the hash table itself from a list of multicast
  4281.     addresses to accept.
  4282.  
  4283. </enum>
  4284.  
  4285.     Note that none of these chips do perfect filtering, and we
  4286.     still need a middle-level module to do the final
  4287.     filtering. Also note that in every case we must keep a
  4288.     complete list of accepted multicast addresses to recompute
  4289.     the hash table when it changes.
  4290.     
  4291.     My first pass at device-level support is detailed in the
  4292.     outline driver <tt/skeleton.c/
  4293.  
  4294.     It looks like the following:
  4295.     
  4296. <code>
  4297.     #ifdef HAVE_MULTICAST
  4298.     static void set_multicast_list(struct device *dev, int num_addrs,
  4299.                      void *addrs);
  4300.     #endif
  4301.     .
  4302.     .
  4303.     
  4304.     ethercard_open() {
  4305.     ...
  4306.     #ifdef HAVE_MULTICAST
  4307.         dev->set_multicast_list = &ero;set_multicast_list;
  4308.     #endif
  4309.     ...
  4310.     
  4311.     #ifdef HAVE_MULTICAST
  4312.     /* Set or clear the multicast filter for this adaptor.
  4313.        num_addrs -- -1      Promiscuous mode, receive all packets
  4314.        num_addrs -- 0       Normal mode, clear multicast list
  4315.        num_addrs > 0        Multicast mode, receive normal and
  4316.             MC packets, and do best-effort filtering.
  4317.      */
  4318.     static void
  4319.     set_multicast_list(struct device *dev, int num_addrs, void *addrs)
  4320.     {
  4321.     ...
  4322.  
  4323. </code>
  4324.  
  4325.     Any comments, criticism, etc. are welcome.'
  4326.  
  4327. <sect1>The Berkeley Packet Filter (BPF)<label id="bpf">
  4328. <p>
  4329.  
  4330.     The general idea of the developers is 
  4331.     that the BPF functionality should not be provided
  4332.     by the kernel, but should be in a (hopefully little-used)
  4333.     compatibility library.
  4334.     
  4335.     For those not in the know: BPF (the Berkeley Packet Filter)
  4336.     is an mechanism for specifying to the kernel networking layers
  4337.     what packets you are interested in. It's implemented as a
  4338.     specialized stack language interpreter built into a low level
  4339.     of the networking code. An application passes a program
  4340.     written in this language to the kernel, and the kernel runs the
  4341.     program on each incoming packet. If the kernel has multiple
  4342.     BPF applications, each program is run on each packet.
  4343.     
  4344.     The problem is that it's difficult to deduce what kind of
  4345.     packets the application is really interested in from the packet
  4346.     filter program, so the general solution is to always run the
  4347.     filter. Imagine a program that registers a BPF program to
  4348.     pick up a low data-rate stream sent to a multicast address.
  4349.     Most ethernet cards have a hardware multicast address filter
  4350.     implemented as a 64 entry hash table that ignores most unwanted
  4351.     multicast packets, so the capability exists to make this a very
  4352.     inexpensive operation. But with the BFP the kernel must switch
  4353.     the interface to promiscuous mode, receive _all_ packets, and
  4354.     run them through this filter. This is work, BTW, that's very
  4355.     difficult to account back to the process requesting the packets.
  4356.  
  4357. <sect>Networking with a Laptop/Notebook Computer<label id="notebook">
  4358. <p>
  4359.  
  4360.     There are currently only a few ways to put your laptop on a network.
  4361.     You can use the SLIP code (and run at serial line speeds);
  4362.     you can buy one of the few laptops that come with a NE2000-compatible
  4363.     ethercard; you can get a notebook with a supported
  4364.     PCMCIA slot built-in; you can get a laptop with a
  4365.     docking station and plug in an ISA ethercard; or you can use a
  4366.     parallel port Ethernet adapter such as the D-Link DE-600.
  4367.  
  4368. <sect1>Using SLIP
  4369. <p>
  4370.  
  4371.     This is the cheapest solution, but by far the most difficult. Also,
  4372.     you will not get very high transmission rates. Since SLIP is not
  4373.     really related to ethernet cards, it will not be discussed further
  4374.     here. See the NET-2 Howto.
  4375.  
  4376. <sect1>Built in NE2000
  4377. <p>
  4378.  
  4379.     This solution severely limits your laptop choices and is fairly
  4380.     expensive. Be sure to read the specifications carefully, as you 
  4381.     may find that you will have to buy an additional non-standard 
  4382.     transceiver to actually put the machine on a network. A good 
  4383.     idea might be to boot the notebook with a kernel that has 
  4384.     ne2000 support, and make sure it gets detected and works 
  4385.     before you lay down your cash.
  4386.  
  4387.  
  4388. <sect1>PCMCIA Support<label id="pcmcia">
  4389. <p>
  4390.  
  4391.     As this area of Linux development is fairly young, I'd suggest
  4392.     that you join the LAPTOPS mailing channel. See 
  4393.     <ref id="mailing-lists" name="Mailing lists...">
  4394.     which describes how to join a mailing list channel. 
  4395.  
  4396.     Try and
  4397.     determine exactly what hardware you have (ie. card manufacturer,
  4398.     PCMCIA chip controller manufacturer) and then ask on the LAPTOPS
  4399.     channel. Regardless, don't expect things to be all that simple.
  4400.     Expect to have to fiddle around a bit, and patch kernels, etc.
  4401.     Maybe someday you will be able to type `make config' 8-)
  4402.  
  4403.     At present, the two PCMCIA chipsets that are supported are    
  4404.     the Databook TCIC/2 and the intel i82365.
  4405.  
  4406.     There is a number of programs on tsx-11.mit.edu in
  4407.     /pub/linux/packages/laptops/ that you may find useful. These
  4408.     range from PCMCIA Ethercard drivers to programs that communicate
  4409.     with the PCMCIA controller chip. Note that these drivers are
  4410.     usually tied to a specific PCMCIA chip (ie. the intel 82365
  4411.     or the TCIC/2) 
  4412.  
  4413.     For NE2000 compatible cards, some people have had success
  4414.     with just configuring the card under DOS, and then booting
  4415.     linux from the DOS command prompt via <tt/loadlin/.
  4416.  
  4417.     For those that are <em/net-surfing/ you can try:
  4418.  
  4419.     <url url="http://cesdis.gsfc.nasa.gov/linux/pcmcia.html"
  4420.         name="Don's PCMCIA Stuff">
  4421.  
  4422.     Anyway, the PCMCIA driver problem isn't specific to the Linux world.
  4423.     It's been a real disaster in the MS-DOS world. In that world
  4424.     people expect the hardware to work if they just follow the manual.
  4425.     They might not expect it to interoperate with any other hardware
  4426.     or software, or operate optimally, but they do expect that the
  4427.     software shipped with the product will function. Many PCMCIA
  4428.     adaptors don't even pass this test.
  4429.  
  4430.     Things are looking up for Linux users that want PCMCIA support, as
  4431.     substantial progress is being made. Pioneering this effort is
  4432.     David Hinds. His latest PCMCIA support package can be obtained
  4433.     from <tt/cb-iris.stanford.edu/ in the directory
  4434.     <tt>/pub/pcmcia/</tt>. Look for a file like 
  4435.     <tt/pcmcia-cs-X.Y.Z.tgz/ where X.Y.Z will be the latest version
  4436.     number. This is most likely uploaded to <tt/tsx-11.mit.edu/ as
  4437.     well.
  4438.  
  4439.     Note that Donald's PCMCIA enabler works as a user-level
  4440.     process, and David Hinds' is a kernel-level solution.
  4441.     You may be best served by David's package as it is
  4442.     much more widely used.
  4443.     
  4444. <sect1>ISA Ethercard in the Docking Station.
  4445. <p>
  4446.  
  4447.     Docking stations for laptops typically cost about $250 
  4448.     and provide two full-size ISA slots, two serial and one
  4449.     parallel port. Most docking stations are powered off of the
  4450.     laptop's batteries, and a few allow adding extra batteries in the
  4451.     docking station if you use short ISA cards. You can add an inexpensive
  4452.     ethercard and enjoy full-speed ethernet performance.
  4453.  
  4454. <sect1>Pocket / parallel port adaptors.
  4455. <p>
  4456.  
  4457.     The `pocket' ethernet adaptors may also fit your need.
  4458.     Until recently they actually costed more than a docking station and
  4459.     cheap ethercard, and most tie you down with a wall-brick power supply.
  4460.     At present, you can choose from the D-Link, or the RealTek adaptor.
  4461.     Most other companies, especially Xircom,
  4462.     (see <ref id="xircom" name="Xircom">)
  4463.     treat the programming
  4464.     information as a trade secret, so support will likely be slow in
  4465.     coming. (if ever!)
  4466.  
  4467.     Note that the transfer speed will not be all that great
  4468.     (perhaps 100kB/s tops?) due to the limitations of the 
  4469.     parallel port interface.
  4470.  
  4471.     See <ref id="de-600" name="DE-600 / DE-620"> and
  4472.     <ref id="aep-100" name="RealTek"> for supported pocket adaptors.
  4473.  
  4474.     You can sometimes avoid the wall-brick with the adaptors by buying
  4475.     or making a cable that draws power from the laptop's keyboard
  4476.     port. (See <ref id="aep-100" name="keyboard power">)
  4477.  
  4478. <sect>Miscellaneous.<label id="misc">
  4479. <p>
  4480.  
  4481.     Any other associated stuff that didn't fit in anywhere else gets
  4482.     dumped here. It may not be relevant, and it may not be of general
  4483.     interest but it is here anyway.
  4484.  
  4485. <sect1>Passing Ethernet Arguments to the Kernel<label id="lilo">
  4486. <p>
  4487.  
  4488.     Here are two generic kernel commands  that can be passed to
  4489.     the kernel at boot time. This can be done with LILO, loadlin,
  4490.     or any other booting utility that accepts optional arguments.
  4491.     
  4492.     For example, if the command was `blah' and it expected 3 arguments
  4493.     (say 123, 456, and 789) then, with LILO, you would use:
  4494.  
  4495.     <tt>LILO: linux blah=123,456,789</tt>
  4496.  
  4497.     <em/Note:/ PCI cards have their i/o and IRQ assigned by the BIOS
  4498.     at boot. This means that any boot time arguments for a PCI
  4499.     card's IRQ or i/o ports are usually ignored.
  4500.  
  4501.     For more information on (and a complete list of) boot time
  4502.     arguments, please see the
  4503.     <url url="http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html"
  4504.         name="BootPrompt-HOWTO">
  4505.  
  4506. <sect2>The <tt/ether/ command<label id="ether">
  4507. <p>
  4508.  
  4509.     In its most generic form, it looks something like this:
  4510.  
  4511. <tscreen>
  4512.     ether=IRQ,BASE_ADDR,PARAM_1,PARAM_2,NAME
  4513. </tscreen>
  4514.     
  4515.     All arguments are optional.  The first non-numeric argument
  4516.     is taken as the NAME.  
  4517.     
  4518.     <bf/IRQ:/
  4519.     Obvious.  An IRQ value of `0' (usually the default) means to autoIRQ.
  4520.     It's a historical accident that the IRQ setting is first rather than
  4521.     the base_addr -- this will be fixed whenever something else changes.
  4522.     
  4523.     <bf/BASE_ADDR:/
  4524.     Also obvious.  A value of `0' (usually the default) means to
  4525.     probe a card-type-specific address list for an ethercard.
  4526.     
  4527.     <bf/PARAM_1:/
  4528.     It was orginally used as an override value for the memory start 
  4529.     for a shared-memory ethercard, like the WD80*3.
  4530.     Some drivers use the low four bits of this value to set the debug
  4531.     message level.  0 -- default, 1-7 -- level 1..7, (7 is maximum
  4532.     verbosity)  8 -- level 0 (no messages). Also, the LANCE driver
  4533.     uses the low four bits of this value to select the DMA channel.
  4534.     Otherwise it uses auto-DMA.
  4535.  
  4536.     <bf/PARAM_2:/
  4537.     The 3c503 driver uses this to select between the internal and external
  4538.     transceivers.  0 -- default/internal, 1 -- AUI external.
  4539.     The Cabletron E21XX card also uses the low 4 bits of PARAM_2 to    
  4540.     select the output media. Otherwise it detects automatically.
  4541.  
  4542.     <bf/NAME:/
  4543.     Selects the network device the values refer to.  The standard kernel
  4544.     uses the names `eth0', `eth1', `eth2' and `eth3' for bus-attached
  4545.     ethercards, and `atp0' for the parallel port `pocket' ethernet
  4546.     adaptor. The arcnet driver uses `arc0' as its name.
  4547.     The default setting is for a single ethercard to be probed for as
  4548.     `eth0'.  Multiple cards can only be enabled by explicitly setting up
  4549.     their base address using these LILO parameters.
  4550.     The 1.0 kernel has LANCE-based ethercards as a special case.  LILO
  4551.     arguments are ignored, and LANCE cards are always assigned
  4552.     `eth<n>' names starting at `eth0'.  Additional non-LANCE ethercards
  4553.     must be explicitly assigned to `eth<n+1>', and the usual `eth0'
  4554.     probe disabled with something like  `ether=0,-1,eth0'.
  4555.     ( Yes, this is bug. )
  4556.     
  4557. <sect2> The <tt/reserve/ command<label id="reserve">
  4558. <p>
  4559.  
  4560.     This next lilo command is used just like `ether=' above, ie. it is
  4561.     appended to the name of the boot select specified in lilo.conf
  4562.  
  4563. <tscreen>
  4564.     reserve=IO-base,extent{,IO-base,extent...}
  4565. </tscreen>
  4566.  
  4567.     In some machines it may be necessary to prevent device drivers from
  4568.     checking for devices (auto-probing) in a specific region. This may be
  4569.     because of poorly designed hardware that causes the boot to <em/freeze/
  4570.     (such as some ethercards), hardware that is mistakenly identified,
  4571.     hardware whose state is changed by an earlier probe, or merely
  4572.     hardware you don't want the kernel to initialize.
  4573.  
  4574.     The <tt/reserve/ boot-time argument addresses this problem by specifying
  4575.     an I/O port region that shouldn't be probed. That region is reserved
  4576.     in the kernel's port registration table as if a device has already
  4577.     been found in that region. Note that this mechanism shouldn't be
  4578.     necessary on most machines. Only when there is a problem or special
  4579.     case would it be necessary to use this.
  4580.  
  4581.     The I/O ports in the specified region are protected against
  4582.     device probes. This was put in to be used when some driver was
  4583.     hanging on a NE2000, or misidentifying some other device 
  4584.     as its own.  A correct device driver shouldn't probe a reserved 
  4585.     region, unless another boot argument explicitly specifies that 
  4586.     it do so.  This implies that <tt/reserve/ will most often be used 
  4587.     with some other boot argument. Hence if you specify a <tt/reserve/ 
  4588.     region to protect a specific device, you must generally specify 
  4589.     an explicit probe for that device. Most drivers ignore the port 
  4590.     registration table if they are given an explicit address.
  4591.  
  4592.     For example, the boot line
  4593.  
  4594. <tscreen>
  4595.     LILO: linux  reserve=0x300,32  ether=0,0x300,eth0
  4596. </tscreen>
  4597.  
  4598.     keeps all device drivers except the ethercard drivers from 
  4599.     probing 0x300-0x31f.
  4600.  
  4601.     As usual with boot-time specifiers there is an 11 parameter limit,
  4602.     thus you can only specify 5 reserved regions per <tt/reserve/ keyword.
  4603.     Multiple <tt/reserve/ specifiers will work if you have an unusually
  4604.     complicated request.
  4605.  
  4606. <sect1>Using the Ethernet Drivers as Modules<label id="modules">
  4607. <p>
  4608.  
  4609.     At present, all the modules are put in the subdirectory
  4610.     <tt/modules/ in your Linux kernel source tree (usually in
  4611.     the form of symbolic links). To actually generate the modules,
  4612.     you have to type <tt/make modules/ after you have finished building
  4613.     the kernel proper. Earlier kernels built them automatically,
  4614.     which wasn't fair to those compiling on 4MB 386sx-16 machines.
  4615.  
  4616.     Most modules accept parameters like <tt/io=0x340/ and
  4617.     <tt/irq=12/ on the <tt/insmod/ command line. It 
  4618.     is <em/STRONGLY ADVISED/ that you supply these parameters
  4619.     to avoid probing for the card. Unlike PCI and EISA devices,
  4620.     there is no real safe way to do auto-probing for ISA devices,
  4621.     and so it should be avoided when using drivers as modules.
  4622.  
  4623.     A list of all the parameters that each module accepts can be
  4624.     found in the file:
  4625.  
  4626.     <tt>/usr/src/linux/Documentation/networking/net-modules.txt</tt>
  4627.  
  4628.     It is recommended that you read that to find out what options
  4629.     you can use for your particular card.
  4630.  
  4631.     Once you have figured out the arguments/options you are going 
  4632.     to use, you can insert the module by typing as root:
  4633. <code>
  4634.     insmod mod_name.o [io=val1[,val2,...]] [irq=val7[,val8,...]]
  4635. </code>
  4636.     The comma separated value lists are used for modules that
  4637.     have the capability to handle multiple devices from a single
  4638.     module, such as all the 8390 drivers, and the PLIP driver.
  4639.  
  4640.     See the <tt/insmod(8)/ manual page for information on passing
  4641.     arguments to the module as it is being loaded.
  4642.     The command <tt/lsmod/ will show you what modules are
  4643.     loaded, and <tt/rmmod/ will remove them.
  4644.  
  4645.     Once a module is inserted, then you can use it just like normal,
  4646.     and give <tt/ifconfig/ commands. If you set up your networking at
  4647.     boot, then make sure your <tt>/etc/rc*</tt> files run the
  4648.     <tt/insmod/ command(s) before getting to the <tt/ifconfig/ command.
  4649.  
  4650.     Also note that a <em/busy/ module can't be removed. That means
  4651.     that you will have to <tt/ifconfig eth0 down/  (shut down the
  4652.     ethernet card) before you can remove the module(s).
  4653.  
  4654. <sect2>8390 Based Cards as Modules<label id="mod8390">
  4655. <p>
  4656.  
  4657.     The present list of 8390 based drivers is: 3c503, ac3200, e2100,
  4658.     hp, hp-plus, ne, smc-ultra and wd. These cards were not 
  4659.     supported as modules for kernel versions prior to 1.3.42.
  4660.     (This does not include some
  4661.     of the separately distributed PCMCIA drivers (e.g. de-650)
  4662.     that are also 8390 based, that have had module support for quite
  4663.     some time now.)
  4664.  
  4665.     If you have an 8390 based card, you may have to insert
  4666.     <em/two/ modules, 8390.o and then the module for your card.
  4667.     If 8390 support has been built into your kernel, then you
  4668.     will not need to insert the 8390 module. (8390 support is
  4669.     built in whenever an 8390 based card is selected to be built
  4670.     into the kernel.) Doing a <tt>cat /proc/ksyms | grep 8390</tt>
  4671.     will tell you if 8390 support is in your kernel.
  4672.  
  4673.     For an 8390 based card, you will have to remove the card module
  4674.     before removing the 8390 module, as the 8390 module is used by
  4675.     the card module, and thus marked as <em/busy/.
  4676.  
  4677.     <label id="multmod8390">
  4678.  
  4679.     The 8390 series of network drivers now support multiple 
  4680.     card systems without reloading the same module multiple 
  4681.     times (memory efficient!) This is done by specifying 
  4682.     multiple comma separated values, such as:
  4683.     
  4684. <code>
  4685.     insmod 3c503.o io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1
  4686. </code>
  4687.     
  4688.     The above would have the one module controlling four 
  4689.     3c503 cards, with card 2 and 4 using external 
  4690.     transcievers. 
  4691.     
  4692.     It is *STRONGLY RECOMMENDED* that you supply "io=" 
  4693.     instead of autoprobing.  If an "io=" argument is not 
  4694.     supplied, then the ISA 8390 drivers will complain about 
  4695.     autoprobing being not recommended, and begrudgingly 
  4696.     autoprobe for a *SINGLE CARD ONLY* -- if you want to use 
  4697.     multiple cards you *have* to supply an 
  4698.     "io=0xNNN,0xQQQ,..." argument.
  4699.     
  4700.     The ne module is an exception to the above. A NE2000 is 
  4701.     essentially an 8390 chip, some bus glue and some RAM. 
  4702.     Because of this, the ne probe is more invasive than the 
  4703.     rest, and so at boot we make sure the ne probe is done 
  4704.     last of all the 8390 cards (so that it won't trip over 
  4705.     other 8390 based cards) With modules we can't ensure 
  4706.     that all other non-ne 8390 cards have already been 
  4707.     found. Because of this, the ne module <em/REQUIRES/ an 
  4708.     <tt/io=0xNNN/ argument passed in via insmod. It 
  4709.     will <em/refuse/ to autoprobe.
  4710.     
  4711.     It is also worth noting that auto-IRQ probably isn't as 
  4712.     reliable during the flurry of interrupt activity on a 
  4713.     running machine. Cards such as the ne2000 that can't get 
  4714.     the IRQ setting from an EEPROM or configuration register 
  4715.     are probably best supplied with an <tt/irq=M/ argument as 
  4716.     well. The file 
  4717.  
  4718.         <tt>/usr/src/linux/Documentation/networking/net-modules.txt</tt>
  4719.  
  4720.     also lists how the interrupt settings are determined for the
  4721.     various cards if an <tt/irq=N/ value is not given.
  4722.  
  4723. <sect1>Mailing Lists and the Linux Newsgroups<label id="mailing-lists">
  4724. <p>
  4725.  
  4726.     If you have questions about your ethernet card, please READ this
  4727.     document first. You may also want to join the NET channel of the
  4728.     Linux mailing lists by sending mail to
  4729.     <tt/majordomo@vger.rutgers.edu/ to get help with what lists
  4730.     are available, and how to join them.
  4731.  
  4732.     Furthermore keep in mind that the NET channel is for development
  4733.     discussions only. General questions on how to configure your system
  4734.     should be directed to comp.os.linux.setup unless you are actively
  4735.     involved in the development of part of the networking for Linux.
  4736.     We ask that you <em/please/ respect this general guideline for content.
  4737.  
  4738.     Also, the news groups
  4739.     <em/comp.sys.ibm.pc.hardware.networking/ and 
  4740.     <em/comp.dcom.lans.ethernet/ should be used for questions that
  4741.     are not Linux specific.
  4742.  
  4743. <sect1>Related Documentation<label id="other_docs">
  4744. <p>
  4745.  
  4746.     Much of this info came from saved postings from the comp.os.linux
  4747.     groups, which shows that it is a valuable resource of information.
  4748.     Other useful information came from a bunch of small files by Donald
  4749.     himself. Of course, if you are setting up an Ethernet card,
  4750.     then you will want to read the NET-2 Howto so that you can actually
  4751.     configure the software you will use.  Also, if you fancy yourself as
  4752.     a bit of a hacker, you can always scrounge some additional info
  4753.     from the driver source files as well. There is usually a paragraph
  4754.     or two in there describing any important points before any actual
  4755.     code starts..
  4756.  
  4757.     For those looking for information that is not specific in any way
  4758.     to Linux (i.e. what is 10BaseT, what is AUI, what does a hub do, etc.)
  4759.     I strongly recommend the <bf/Ethernet-FAQ/  that is 
  4760.     posted regularly to the newsgroup <em/comp.dcom.lans.ethernet/.
  4761.     You can grab it from the following URL:
  4762.  
  4763.     <url url="ftp://dorm.rutgers.edu/pub/novell/info_and_docs/Ethernet.FAQ"
  4764.         name="Ethernet FAQ">
  4765.  
  4766.     You can also have a look at the `Ethernet-HomePage' so to speak, 
  4767.     which is at the following URL:
  4768.  
  4769.     <url url="http://wwwhost.ots.utexas.edu/ethernet/ethernet-home.html"
  4770.         name="Ethernet-HomePage">
  4771.  
  4772. <sect1>Contributors<label id="contrib">
  4773. <p>
  4774.  
  4775.     Other people who have contributed (directly or indirectly) 
  4776.     to the Ethernet-Howto are, in alphabetical order:
  4777.  
  4778. <verb>
  4779.     Ross Biro               <bir7@leland.stanford.edu>
  4780.     Alan Cox                <iialan@www.linux.org.uk>
  4781.     David C. Davies         <davies@wanton.enet.dec.com>
  4782.     Bjorn Ekwall            <bj0rn@blox.se>
  4783.     David Hinds        <dhinds@allegro.stanford.edu>
  4784.     Michael Hipp        <mhipp@student.uni-tuebingen.de>
  4785.     Mike Jagdis             <jaggy@purplet.demon.co.uk>
  4786.     Duke Kamstra            <kamstra@ccmail.west.smc.com>
  4787.     Russell Nelson          <nelson@crynwr.com>
  4788.     Cameron Spitzer         <camerons@NAD.3Com.com>
  4789.     Dave Roberts            <david.roberts@amd.com>
  4790.     Glenn Talbott           <gt@hprnd.rose.hp.com>
  4791. </verb>
  4792.  
  4793.  
  4794.     Many thanks to the above people, and all the other unmentioned
  4795.     testers out there.
  4796.  
  4797. <sect1>Closing
  4798. <p>
  4799.  
  4800.     If you have found any glaring typos, or outdated info in this
  4801.     document, please let one of us know. It's getting big, and it
  4802.     is easy to overlook stuff.
  4803.  
  4804.     Thanks,
  4805.  
  4806.     Paul Gortmaker, <tt/Paul.Gortmaker@anu.edu.au/
  4807.  
  4808.     Donald J. Becker, <tt/becker@cesdis.gsfc.nasa.gov/
  4809.  
  4810.  
  4811. </article>
  4812.