on von vono/spa.14onospa. class="lxr_search">on von von von v typ Search14 on vono/spa.14 vonoinput typ o v/ /1o/a>Documenta v3./networking/vortex.txt / /2o/a>Andrew Morton / /3o/a>30 April 2000 / /4o/a>o/ /5o/a>o/ /6o/a>This document describes the usage and errata of the 3Com "Vortex" deviceo/ /7o/a>driver for Linux, 3c59x.c.o/ /8o/a>o/ /9o/a>The driver was written by Donald Becker <>o/ 1" a>o/ 11o/a>Don is no longer the prime maintainer of this verson> of the driver. o/ 12o/a>Please report problems to one or more of:o/ 13 a>o/ 14o/a> Andrew Morton / 15o/a> Netdev mailing list <>o/ 16o/a> Linux kernel mailing list <>o/ 17 a>o/ 18o/a>Please note the 'Reporting and Diagnosing Problems' sec v3. at the endo/ 19o/a>of this file.o/ 2" a>o/ 21 a>o/ 22o/a>Since kernel " .99-pre6, this driver incorporates the support for theo/ 23o/a>3c575-series Cardbus cards which used to be handled by 3c575_cb.c.o/ 24o/a>o/ 25o/a>This driver supports the following hardware:o/ 26o/a>o/ 27o/a> 3c590 Vortex 1"Mbpso/ 28o/a> 3c592 EISA 1"Mbps Dem3./Vortexo/ 29o/a> 3c597 EISA Fast Dem3./Vortexo/ 30o/a> 3c595 Vortex 1"0baseTxo/ 31o/a> 3c595 Vortex 1"0baseT4o/ 32o/a> 3c595 Vortex 1"0base-MIIo/ 33o/a> 3c900 Boomerang 10baseTo/ 34o/a> 3c900 Boomerang 10Mbps Comboo/ 35o/a> 3c900 Cyclone 10Mbps TPOo/ 36o/a> 3c900 Cyclone 10Mbps Comboo/ 37o/a> 3c900 Cyclone 10Mbps TPCo/ 38o/a> 3c900B-FL Cyclone 10base-FLo/ 39o/a> 3c905 Boomerang 100baseTxo/ 40o/a> 3c905 Boomerang 100baseT4o/ 41o/a> 3c905B Cyclone 100baseTxo/ 42o/a> 3c905B Cyclone 10/100/BNCo/ 43o/a> 3c905B-FX Cyclone 100baseFxo/ 44o/a> 3c905C Tornadoo/ 45o/a> 3c920B-EMB-WNM (ATI Rade3. 9100 IGP)o/ 46o/a> 3c980 Cycloneo/ 47o/a> 3c980C Python-To/ 48o/a> 3cSOHO100-TX Hurricaneo/ 49o/a> 3c555 Laptop Hurricaneo/ 50o/a> 3c556 Laptop Tornadoo/ 51o/a> 3c556B Laptop Hurricaneo/ 52o/a> 3c575 [Megahertz] 10/100 LAN CardBuso/ 53o/a> 3c575 Boomerang CardBuso/ 54o/a> 3CCFE575BT Cyclone CardBuso/ 55o/a> 3CCFE575CT Tornado CardBuso/ 56o/a> 3CCFE656 Cyclone CardBuso/ 57o/a> 3CCFEM656B Cyclone+Winmodem CardBuso/ 58o/a> 3CXFEM656C Tornado+Winmodem CardBuso/ 59o/a> 3c450 HomePNA Tornadoo/ 60o/a> 3c920 Tornadoo/ 61o/a> 3c982 Hydra Dual Port Ao/ 62o/a> 3c982 Hydra Dual Port Bo/ 63o/a> 3c905B-T4o/ 64o/a> 3c920B-EMB-WNM Tornadoo/ 65o/a>o/ 66o/a>Module param terso/ 67o/a>=================o/ 68o/a>o/ 69o/a>There are several param ters which may be provided to the driver when / 70o/a>its module is loaded. These are usually placed in /etc/modprobe.d/*.conf / 71o/a>configure v3. files. Example:o/ 72o/a>o/ 73o/a> v3.s 3c59x debug=3 rx_copybreak=300 / 74o/a>o/ 75o/a>If you are using the PCMCIA tools (cardmgr) then the v3.s may beo/ 76o/a>placed in /etc/pcmcia/config. s:o/ 77 a>o/ 78o/a>module "3c59x" s "debug=3 rx_copybreak=300"o/ 79 a>o/ 8" a>o/ 81o/a>The supported param ters are:o/ 82o/a>o/ 83o/a>debug=No/ 84o/a>o/ 85o/a> Where N is a number from 0 to 7. Anything above 3 produces a lot / 86o/a> of output in your system logs. debug=1 is default.o/ 87 a>o/ 88o/a> v3.s=N1,N2,N3,...o/ 89 a>o/ 90o/a> Each number in the list provides an v3. to the correspondingo/ 91o/a> network card. So if you have two 3c905's and you wish to provideo/ 92o/a> them with v3. 0x204 you would use:o/ 93 a>o/ 94o/a> v3.s=0x204,0x204o/ 95o/a>o/ 96o/a> The individual v3.s are composed of a number of bitfields whicho/ 97o/a> have the following meanings:o/ 98o/a>o/ 99o/a> Possible media typ settingso/100o/a> 0 10baseTo/101o/a> 1 10Mbs AUIo/102o/a> 2 undefinedo/103o/a> 3 10base2 (BNC)o/104o/a> 4 100base-TXo/105o/a> 5 100base-FXo/106o/a> 6 MII (Media Independent Interface)o/107o/a> 7 Use default setting from EEPROMo/108o/a> 8 Autonegotiateo/109o/a> 9 External MIIo/110o/a> 10 Use default setting from EEPROMo/111 a>o/112o/a> When generating a for the ' v3.s' setting, the above mediao/113o/a> selectin> s may be OR'ed (or added to) the following:o/114o/a>o/115o/a> 0x8000 Set driver debugging level to 7o/116o/a> 0x4000 Set driver debugging level to 2o/117o/a> 0x0400 Enable Wake-on-LANo/118o/a> 0x0200 Force full duplex mode.o/119o/a> 0x0010 Bus-master enable bit (Old Vortex cards only)o/12" a>o/121o/a> For example:o/122o/a>o/123o/a> insmod 3c59x v3.s=0x204o/124o/a>o/125o/a> will force full-duplex 100base-TX, rather than allowing the usualo/126o/a> autonegotiatv3..o/127 a>o/128o/a>global_ v3.s=No/129 a>o/130o/a> Sets the ` v3.s' param ter for all 3c59x NICs in the machine. o/131o/a> Entries in the ` v3.s' array above will override any setting of /132o/a> this.o/133 a>o/134o/a>full_duplex=N1,N2,N3...o/135o/a>o/136o/a> Similar to bit 9 of ' v3.s'. Forces the corresponding card intoo/137o/a> full-duplex mode. Please use this in preference to the ` v3.s'o/138o/a> param ter.o/139 a>o/140o/a> In fact, please don't use this at all! You're better off gettingo/141o/a> autonegotiatv3. working properly.o/142o/a>o/143o/a>global_full_duplex=N1o/144o/a>o/145o/a> Sets full duplex mode for all 3c59x NICs in the machine. Entrieso/146o/a> in the `full_duplex' array above will override any setting of this.o/147 a>o/148o/a>flow_ctrl=N1,N2,N3...o/149 a>o/150o/a> Use 802.3x MAC-layer flow control. The 3com cards only support theo/151o/a> PAUSE command, which means that they will stop sending packets for ao/152o/a> short period if they receive a PAUSE fram from the link partner. o/153 a>o/154o/a> The driver only allows flow control 3. a link which is operating in /155o/a> full duplex mode.o/156o/a>o/157o/a> This feature does not appear to work on the 3c905 - only 3c905B ando/158o/a> 3c905C have been tested.o/159 a>o/160o/a> The 3com cards appear to only respond to PAUSE fram s which areo/161o/a> sent to the reserved destinatv3. address of 01:80:c2:00:00:01. Theyo/162o/a> do not honour PAUSE fram s which are sent to the sta v3. MAC address.o/163 a>o/164o/a>rx_copybreak=Mo/165o/a>o/166o/a> The driver preallocates 32 full-sized (1536 byte) network bufferso/167o/a> for receiving. When a packet arrives, the driver has to decideo/168o/a> whether to leave the packet in its full-sized buffer, or to allocateo/169o/a> a smaller buffer and copy the packet across into it.o/17" a>o/171o/a> This is a speed/space trade3ff.o/172o/a>o/173o/a> The of rx_copybreak is used to decide when to make the copy. o/174o/a> If the packet size is less than rx_copybreak, the packet is copied. o/175o/a> The default for rx_copybreak is 200 bytes.o/176o/a>o/177 a>max_interrupt_work=No/178o/a>o/179o/a> The driver's interrupt service routine can handle many receive ando/180o/a> transmit packets in a single invocatv3.. It does this in a loop. o/181o/a> The of max_interrupt_work governs how mnay times the interrupto/182o/a> service routine will loop. The default is 32 loops. If thiso/183o/a> is exceeded the interrupt service routine gives up and generates ao/184o/a> warning message "eth0: Too much work in interrupt".o/185o/a>o/186o/a>hw_checksums=N1,N2,N3,...o/187 a>o/188o/a> Recent 3com NICs are able to generate IPv4, TCP and UDP checksumso/189o/a> in hardware. Linux has used the Rx checksumming for a long time. o/190o/a> The "zero copy" patch which is planned for the 2.4 kernel serieso/191o/a> allows you to make use of the NIC's DMA scatter/gather and transmito/192o/a> checksumming as well.o/193 a>o/194o/a> The driver is set up so that, when the zerocopy patch is applied,o/195o/a> all Tornado and Cyclone devices will use S/G and Tx checksums.o/196o/a>o/197o/a> This module param ter has been provided so you can override thiso/198o/a> decisv3.. If you think that Tx checksums are causing a problem, youo/199o/a> may disable the feature with `hw_checksums=0'.o/20" a>o/201o/a> If you think your NIC should be performing Tx checksumming and theo/202o/a> driver isn't enabling it, you can force the use of hardware Txo/203o/a> checksumming with `hw_checksums=1'.o/204o/a>o/205o/a> The driver drops a message in the logfiles to indicate whether oro/206o/a> not it is using hardware scatter/gather and hardware Tx checksums.o/207 a>o/208o/a> Scatter/gather and hardware checksums provide considerableo/209o/a> performance improvement for the sendfile() system call, but a smallo/210o/a> decrease in throughput for send(). There is no effect upon receiveo/211o/a> efficiency.o/212o/a>o/213o/a>compaq_ioaddr=No/214o/a>compaq_irq=No/215o/a>compaq_device_id/216o/a>o/217o/a> "Variables to work-around the Compaq PCI BIOS32 problem"....o/218o/a>o/219o/a>watchdog=No/22" a>o/221o/a> Sets the time dura v3. (in milliseconds) after which the kernelo/222o/a> decides that the transmitter has become stuck and needs to be reset. o/223o/a> This is mainly for debugging purposes, although it may be advantageouso/224o/a> to increase this v on LANs which have very high collisv3. rates.o/225o/a> The default is 5000 (5.0 seconds).o/226o/a>o/227 a>enable_wol=N1,N2,N3,...o/228o/a>o/229o/a> Enable Wake-on-LAN support for the relevant interface. Donaldo/230o/a> Becker's `ether-wake' applicatv3. may be used to wake suspendedo/231o/a> machines.o/232o/a>o/233o/a> Also enables the NIC's power management support.o/234o/a>o/235o/a>global_enable_wol=No/236o/a>o/237o/a> Sets enable_wol mode for all 3c59x NICs in the machine. Entries in /238o/a> the `enable_wol' array above will override any setting of this.o/239 a>o/240o/a>Media selectin>o/241o/a>---------------o/242o/a>o/243o/a>A number of the lder NICs such as the 3c590 and 3c900 series haveo/244o/a>10base2 and AUI interfaces.o/245o/a>o/246o/a>Prior to January,/20"1 this driver would autoeselect the 10base2 or AUIo/247 a>port if it didn't detect ac vvity on the 10baseT port. It would then /248o/a>get stuck on the 10base2 port and a driver reload was necessary too/249 a>switch back to 10baseT. This behaviour could not be prevented with ao/250o/a>module v3. override.o/251 a>o/252o/a>Later (current) verson>s of the driver _do_ support locking of theo/253 a>media typ . So if you load the driver module witho/254o/a>o/255o/a> modprobe 3c59x v3.s=0o/256o/a>o/257o/a>it will permanently select the 10baseT port. Automa vc selectin> of /258o/a>other media typ s does not occur.o/259 a>o/26" a>o/261o/a>Transmit error, Tx sta us register 82o/262o/a>-------------------------------------o/263 a>o/264o/a>This is a commn> error which is almost always caused by another host n>o/265o/a>the sam network being in full-duplex mode, while this host is in /266o/a>half-duplex mode. You need to find that nther host and make it run in /267o/a>half-duplex mode or fix this host to run in full-duplex mode. /268o/a>o/269o/a>As a last resort, you can force the 3c59x driver into full-duplex modeo/27" a>witho/271 a>o/272o/a> v3.s 3c59x full_duplex=1o/273 a>o/274o/a>but this has to be viewed as a workaround for broken network gear ando/275o/a>should only really be used for equipment which cannot autonegotiate. /276o/a>o/277 a>o/278o/a>Addi resourceso/279o/a>--------------------o/28" a>o/281o/a>Details of the device driver implementa v3. are at the top of the source file. /282o/a>o/283o/a>Addi documenta v3. is available at D3. Becker's Linux Drivers site:o/284o/a>o/285o/a>>o/286o/a>o/287 a>Donald Becker's driver development site:o/288o/a>o/289o/a>>o/29" a>o/291o/a>Donald's vortex-diag program is useful for inspecting the NIC's sta e:o/292o/a>o/293o/a>>o/294o/a>o/295o/a>Donald's mii-diag program may be used for inspecting and manipulatingo/296o/a>the NIC's Media Independent Interface subsystem:o/297 a>o/298o/a> a>o/299 a>o/30" a>Donald's wake-on-LAN page:o/301 a>o/302o/a> a>o/303 a>o/304o/a>3Com's DOS-based applicatv3. for setting up the NICs EEPROMs:o/305o/a>o/306o/a> a>o/308o/a>o/309o/a>Autonegotiatv3. noteso/310o/a>---------------------o/311 a>o/312o/a> The driver uses a one-minute heartbeat for adapting to changes in /313o/a> the external LAN environment if link is up and 5 seconds if link is dow..o/314o/a> This means that when, for example, a machine is unplugged from a hubbedo/315o/a> 10baseT LAN plugged into a switched 100baseT LAN, the throughputo/316o/a> will be quite dreadful for up to sixty seconds. Be patient.o/317 a>o/318o/a> Cisco interoperability note from Walter Wong <wcw+@CMU.EDU>:o/319 a>o/320o/a> On a side note, adding HAS_NWAY seems to share a problem with theo/321o/a> Cisco 6509 switch. Specifically, you need to change the spanningo/322o/a> tree param ter for the port the machine is plugged into to 'portfast'o/323o/a> mode. Otherwise, the negotiatv3. fails. This has been a. issueo/324o/a> we've noticed for a while but haven't had the time to track dow..o/325o/a>o/326o/a> Cisco switches (Jeff Busch <>)o/327 a>o/328o/a> My "standard config" for ports to which PC's/servers connect directly:o/329 a>o/330o/a> interface FastEthernet0/No/331o/a> descriptv3. machinenam o/332o/a> load-interval 30o/333o/a> spanning-tree portfasto/334o/a>o/335o/a> If autonegotiatv3. is a problem, you may need to specify "speedo/336o/a> 100" and "duplex full" as well (or "speed 10" and "duplex half").o/337 a>o/338o/a> WARNING: DO NOT hook up hubs/switches/bridges to thes o/339o/a> specially-configured ports! The switch will become very confused.o/34" a>o/341 a>o/342o/a>Reporting and diagnosing problemso/343o/a>---------------------------------o/344o/a>o/345o/a>Maintainers find that accurate and complete problem reports areo/346o/a>in able in resolving driver problems. We are frequently not able too/347 a>reproduce problems and must rely on your patience and efforts to get too/348o/a>the bottom of the problem.o/349 a>o/350o/a>If you believe you have a driver problem here are some of theo/351 a>steps you should take:o/352o/a>o/353 a>- Is it really a driver problem?o/354o/a>o/355o/a> Eliminate some variables: try different cards, differento/356o/a> computers, different cables, different ports on the switch/hub,o/357o/a> different verson>s of the kernel or of the driver, etc.o/358o/a>o/359 a>- OK, it's a driver problem.o/36" a>o/361o/a> You need to generate a report. Typically this is an email to theo/362o/a> maintainer and/or The maintainer'so/363o/a> email address will be in the driver source or in the MAINTAINERS file. /364o/a>o/365o/a>- The contents of your report will vary a lot depending upon theo/366o/a> problem. If it's a kernel crash then you should refer to theo/367o/a> REPORTING-BUGS file. /368o/a>o/369o/a> But for most problems it is useful to provide the following:o/37" a>o/371o/a> o Kernel verson>, driver verson>o/372o/a>o/373o/a> o A copy of the banner message which the driver generates when /374o/a> it is initialised. For example:o/375o/a>o/376o/a> eth0: 3Com PCI 3c905C Tornado at 0xa400, 00:50:da:6a:88:f0, IRQ 19o/377o/a> 8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.o/378o/a> MII transceiver found at address 24, sta us 782d.o/379o/a> Enabling bus-master transmits and whole-fram receives.o/38" a>o/381o/a> NOTE: You must provide the `debug=2' modprobe v3. to generateo/382o/a> a full detectv3. message. Please do this:o/383 a>o/384o/a> modprobe 3c59x debug=2o/385o/a>o/386o/a> o If it is a PCI device, the relevant output from 'lspci -vx', eg:o/387 a>o/388o/a> 00:09.0 Ethernet controller: 3Com Corporatv3. 3c905C-TX [Fast Etherlink] (rev 74)o/389o/a> Subsystem: 3Com Corporatv3.: Unknown device 9200o/390o/a> Flags: bus master, medium devsel, latency 32, IRQ 19o/391o/a> I/O ports at a400 [size=128]o/392o/a> Memory at db000000 (32-bit, non-prefetchable) [size=128]o/393o/a> Expansv3. ROM at <unassigned> [disabled] [size=128K]o/394o/a> Capabilities: [dc] Power Management verson> 2o/395o/a> 00: b7 10 00 92 07 00 10 02 74 00 00 02 08 20 00 00o/396o/a> 10: 01 a4 00 00 00 00 00 db 00 00 00 00 00 00 00 00o/397o/a> 20: 00 00 00 00 00 00 00 00 00 00 00 00 b7 10 00 10o/398o/a> 30: 00 00 00 00 dc 00 00 00 00 00 00 00 05 01 0a 0ao/399 a>o/400o/a> o A descriptv3. of the environment: 10baseT? 100baseT?o/401o/a> full/half duplex? switched or hubbed?o/402o/a>o/403o/a> o Any addi module param ters which you may be providing to the driver.o/404o/a>o/405o/a> o Any kernel logs which are produced. The more the merrier. o/406o/a> If this is a large file and you are sending your report to ao/407o/a> mailing list, men v3. that you have the logfile, but don't sendo/408o/a> it. If you're reporting direct to the maintainer then just sendo/409o/a> it.o/41" a>o/411o/a> To ensure that all kernel logs are available, add theo/412o/a> following line to /etc/syslog.conf:o/413 a>o/414o/a> kern.* /var/log/messageso/415o/a>o/416o/a> Then restart syslogd with:o/417 a>o/418o/a> /etc/rc.d/init.d/syslog restarto/419 a>o/420o/a> (The above may vary,/depending upon which Linux distribution you use).o/421 a>o/422o/a> o If your problem is reproducible the. that's great. Try theo/423o/a> following:o/424o/a>o/425o/a> 1) Increase the debug level. Usually this is done via:o/426o/a>o/427o/a> a) modprobe driver debug=7o/428o/a> b) In /etc/modprobe.d/driver.conf:o/429o/a> v3.s driver debug=7o/43" a>o/431o/a> 2) Recreate the problem with the higher debug level,o/432o/a> send all logs to the maintainer.o/433 a>o/434o/a> 3) Download you card's diagnos vc tool from Donaldo/435o/a> Becker's website <>o/a>.o/436o/a> Download mii-diag.c as well. Build these.o/437 a>o/438o/a> a) Run 'vortex-diag -aaee' and 'mii-diag -v' when the card iso/439o/a> working correctly. Save the output.o/44" a>o/441o/a> b) Run the above commands when the card is Sendo/442o/a> both sets of output.o/443 a>o/444o/a>Finally, please be patient and be prepared to do some work. You mayo/445o/a>end up working 3. this problem for a week or more as the maintainero/446o/a>asks more questv3.s, asks for more tests, asks for patches to beo/447 a>applied, etc. At the end of it all, the problem may even remaino/448o/a>unresolved.o/449 a> kindly hosted by Redpill Linpro AS a>, provider of Linux consulting and opera v3.s services since 1995.