3Com Vortex device driver¶ Andrew Morton. This document describes the usage and errata of the 3Com “Vortex” device driver for Linux, 3c59x.c. The driver was written by Donald Becker Don is no longer the prime maintainer of this version of the driver. Please report problems to one or more of: Andrew Morton. Here is the driver files for the 3Com 3CRUSB10075 Wireless Office Connect adapter. This will work on a Windows 2000, Windows XP and Windows Me system. If you want it to run on a Windows 7 or Windows Vista system then check the sidebar of the website as to how to install the driver on those systems. 3Com EtherLink XL 10/100 PCI NIC (3C905-TX) free download. Get the latest version now. 3Com EtherLink XL 10/100 PCI NIC (3C905-TX).
This file contains the instructions and caveats for v1.18c and higher versionsof the 3c509 driver. You should not use the driver without reading this file.

release 1.0
28 February 2002
- Current maintainer (corrections to):
- David Ruggiero <jdr@farfalle.com>
3com Drivers For Win7
Introduction¶
The following are notes and information on using the 3Com EtherLink III seriesethercards in Linux. These cards are commonly known by the most widely-usedcard’s 3Com model number, 3c509. They are all 10mb/s ISA-bus cards and shouldn’tbe (but sometimes are) confused with the similarly-numbered PCI-bus “3c905”(aka “Vortex” or “Boomerang”) series. Kernel support for the 3c509 family isprovided by the module 3c509.c, which has code to support all of the followingmodels:
- 3c509 (original ISA card)
- 3c509B (later revision of the ISA card; supports full-duplex)
- 3c589 (PCMCIA)
- 3c589B (later revision of the 3c589; supports full-duplex)
- 3c579 (EISA)
Large portions of this documentation were heavily borrowed from the guidewritten the original author of the 3c509 driver, Donald Becker. The mastercopy of that document, which contains notes on older versions of the driver,currently resides on Scyld web server: http://www.scyld.com/.
Special Driver Features¶
Overriding card settings
The driver allows boot- or load-time overriding of the card’s detected IOADDR,IRQ, and transceiver settings, although this capability shouldn’t generally beneeded except to enable full-duplex mode (see below). An example of the syntaxfor LILO parameters for doing this:
This configures the first found 3c509 card for IRQ 10, base I/O 0x310, andtransceiver type 3 (10base2). The flag “0x3c509” must be set to avoid conflictswith other card types when overriding the I/O address. When the driver isloaded as a module, only the IRQ may be overridden. For example,setting two cards to IRQ10 and IRQ11 is done by using the irq moduleoption:
Full-duplex mode¶
The v1.18c driver added support for the 3c509B’s full-duplex capabilities.In order to enable and successfully use full-duplex mode, three conditionsmust be met:
(a) You must have a Etherlink III card model whose hardware supports full-duplex operations. Currently, the only members of the 3c509 family that arepositively known to support full-duplex are the 3c509B (ISA bus) and 3c589B(PCMCIA) cards. Cards without the “B” model designation do not supportfull-duplex mode; these include the original 3c509 (no “B”), the original3c589, the 3c529 (MCA bus), and the 3c579 (EISA bus).
(b) You must be using your card’s 10baseT transceiver (i.e., the RJ-45connector), not its AUI (thick-net) or 10base2 (thin-net/coax) interfaces.AUI and 10base2 network cabling is physically incapable of full-duplexoperation. Ambient driver.
(c) Most importantly, your 3c509B must be connected to a link partner that isitself full-duplex capable. Altera driver download for windows 10. This is almost certainly one of two things: a full-duplex-capable Ethernet switch (not a hub), or a full-duplex-capable NIC onanother system that’s connected directly to the 3c509B via a crossover cable.
Full-duplex mode can be enabled using ‘ethtool’.
Warning
Extremely important caution concerning full-duplex mode
Understand that the 3c509B’s hardware’s full-duplex support is much morelimited than that provide by more modern network interface cards. Althoughat the physical layer of the network it fully supports full-duplex operation,the card was designed before the current Ethernet auto-negotiation (N-way)spec was written. This means that the 3c509B family *cannot and will notauto-negotiate a full-duplex connection with its link partner under anycircumstances, no matter how it is initialized*. If the full-duplex modeof the 3c509B is enabled, its link partner will very likely need to beindependently _forced_ into full-duplex mode as well; otherwise various nastyfailures will occur - at the very least, you’ll see massive numbers of packetcollisions. This is one of very rare circumstances where disabling auto-negotiation and forcing the duplex mode of a network interface card or switchwould ever be necessary or desirable.
Available Transceiver Types¶
For versions of the driver v1.18c and above, the available transceiver types are:
| 0 | transceiver type from EEPROM config (normally 10baseT); force half-duplex |
| 1 | AUI (thick-net / DB15 connector) |
| 2 | (undefined) |
| 3 | 10base2 (thin-net coax / BNC connector) |
| 4 | 10baseT (RJ-45 connector); force half-duplex mode |
| 8 | transceiver type and duplex mode taken from card’s EEPROM config settings |
| 12 | 10baseT (RJ-45 connector); force full-duplex mode |
Prior to driver version 1.18c, only transceiver codes 0-4 were supported. Notethat the new transceiver codes 8 and 12 are the only ones that will enablefull-duplex mode, no matter what the card’s detected EEPROM settings might be.This insured that merely upgrading the driver from an earlier version wouldnever automatically enable full-duplex mode in an existing installation;it must always be explicitly enabled via one of these code in order to beactivated.
The transceiver type can be changed using ‘ethtool’.
Interpretation of error messages and common problems¶
Error Messages¶
eth0: Infinite loop in interrupt, status 2011.These are “mostly harmless” message indicating that the driver had too muchwork during that interrupt cycle. With a status of 0x2011 you are receivingpackets faster than they can be removed from the card. This should be rareor impossible in normal operation. Possible causes of this error report are:
- a “green” mode enabled that slows the processor down when there is nokeyboard activity.
- some other device or device driver hogging the bus or disabling interrupts.Check /proc/interrupts for excessive interrupt counts. The timer tickinterrupt should always be incrementing faster than the others.
No received packets¶
If a 3c509, 3c562 or 3c589 can successfully transmit packets, but neverreceives packets (as reported by /proc/net/dev or ‘ifconfig’) you likelyhave an interrupt line problem. Check /proc/interrupts to verify that thecard is actually generating interrupts. If the interrupt count is notincreasing you likely have a physical conflict with two devices trying touse the same ISA IRQ line. The common conflict is with a sound card on IRQ10or IRQ5, and the easiest solution is to move the 3c509 to a differentinterrupt line. If the device is receiving packets but ‘ping’ doesn’t work,you have a routing problem.
Tx Carrier Errors Reported in /proc/net/dev¶
If an EtherLink III appears to transmit packets, but the “Tx carrier errors”field in /proc/net/dev increments as quickly as the Tx packet count, youlikely have an unterminated network or the incorrect media transceiver selected.
3c509B card is not detected on machines with an ISA PnP BIOS.¶
While the updated driver works with most PnP BIOS programs, it does not workwith all. This can be fixed by disabling PnP support using the 3Com-suppliedsetup program.
3c509 card is not detected on overclocked machines¶
Increase the delay time in id_read_eeprom() from the current value, 500,to an absurdly high value, such as 5000.
Decoding Status and Error Messages¶
The bits in the main status register are:
| value | description |
|---|---|
| 0x01 | Interrupt latch |
| 0x02 | Tx overrun, or Rx underrun |
| 0x04 | Tx complete |
| 0x08 | Tx FIFO room available |
| 0x10 | A complete Rx packet has arrived |
| 0x20 | A Rx packet has started to arrive |
| 0x40 | The driver has requested an interrupt |
| 0x80 | Statistics counter nearly full |
The bits in the transmit (Tx) status word are:
| value | description |
|---|---|
| 0x02 | Out-of-window collision. |
| 0x04 | Status stack overflow (normally impossible). |
| 0x08 | 16 collisions. |
| 0x10 | Tx underrun (not enough PCI bus bandwidth). |
| 0x20 | Tx jabber. |
| 0x40 | Tx interrupt requested. |
| 0x80 | Status is valid (this should always be set). |
When a transmit error occurs the driver produces a status message such as:
The two values typically seen here are:
0x82¶
Out of window collision. This typically occurs when some other Ethernethost is incorrectly set to full duplex on a half duplex network.
0x88¶
16 collisions. This typically occurs when the network is exceptionally busyor when another host doesn’t correctly back off after a collision. If thiserror is mixed with 0x82 errors it is the result of a host incorrectly setto full duplex (see above).
Both of these errors are the result of network problems that should becorrected. They do not represent driver malfunction.
Revision history (this file)¶
28Feb02 v1.0 DR New; major portions based on Becker original 3c509 docs
Andrew Morton
30 April 2000
This document describes the usage and errata of the 3Com “Vortex” devicedriver for Linux, 3c59x.c.
The driver was written by Donald Becker <becker@scyld.com>
Don is no longer the prime maintainer of this version of the driver.Please report problems to one or more of:
- Andrew Morton
- Netdev mailing list <netdev@vger.kernel.org>
- Linux kernel mailing list <linux-kernel@vger.kernel.org>
Please note the ‘Reporting and Diagnosing Problems’ section at the endof this file.
Since kernel 2.3.99-pre6, this driver incorporates the support for the3c575-series Cardbus cards which used to be handled by 3c575_cb.c.
This driver supports the following hardware:
- 3c590 Vortex 10Mbps
- 3c592 EISA 10Mbps Demon/Vortex
- 3c597 EISA Fast Demon/Vortex
- 3c595 Vortex 100baseTx
- 3c595 Vortex 100baseT4
- 3c595 Vortex 100base-MII
- 3c900 Boomerang 10baseT
- 3c900 Boomerang 10Mbps Combo
- 3c900 Cyclone 10Mbps TPO
- 3c900 Cyclone 10Mbps Combo
- 3c900 Cyclone 10Mbps TPC
- 3c900B-FL Cyclone 10base-FL
- 3c905 Boomerang 100baseTx
- 3c905 Boomerang 100baseT4
- 3c905B Cyclone 100baseTx
- 3c905B Cyclone 10/100/BNC
- 3c905B-FX Cyclone 100baseFx
- 3c905C Tornado
- 3c920B-EMB-WNM (ATI Radeon 9100 IGP)
- 3c980 Cyclone
- 3c980C Python-T
- 3cSOHO100-TX Hurricane
- 3c555 Laptop Hurricane
- 3c556 Laptop Tornado
- 3c556B Laptop Hurricane
- 3c575 [Megahertz] 10/100 LAN CardBus
- 3c575 Boomerang CardBus
- 3CCFE575BT Cyclone CardBus
- 3CCFE575CT Tornado CardBus
- 3CCFE656 Cyclone CardBus
- 3CCFEM656B Cyclone+Winmodem CardBus
- 3CXFEM656C Tornado+Winmodem CardBus
- 3c450 HomePNA Tornado
- 3c920 Tornado
- 3c982 Hydra Dual Port A
- 3c982 Hydra Dual Port B
- 3c905B-T4
- 3c920B-EMB-WNM Tornado
Module parameters¶
There are several parameters which may be provided to the driver whenits module is loaded. These are usually placed in /etc/modprobe.d/*.confconfiguration files. Example:
If you are using the PCMCIA tools (cardmgr) then the options may beplaced in /etc/pcmcia/config.opts:

The supported parameters are:
debug=N
options=N1,N2,N3,…
Each number in the list provides an option to the correspondingnetwork card. So if you have two 3c905’s and you wish to providethem with option 0x204 you would use:
The individual options are composed of a number of bitfields whichhave the following meanings:
Possible media type settings
| 0 | 10baseT |
| 1 | 10Mbs AUI |
| 2 | undefined |
| 3 | 10base2 (BNC) |
| 4 | 100base-TX |
| 5 | 100base-FX |
| 6 | MII (Media Independent Interface) |
| 7 | Use default setting from EEPROM |
| 8 | Autonegotiate |
| 9 | External MII |
| 10 | Use default setting from EEPROM |
When generating a value for the ‘options’ setting, the above mediaselection values may be OR’ed (or added to) the following:
| 0x8000 | Set driver debugging level to 7 |
| 0x4000 | Set driver debugging level to 2 |
| 0x0400 | Enable Wake-on-LAN |
| 0x0200 | Force full duplex mode. |
| 0x0010 | Bus-master enable bit (Old Vortex cards only) |
For example:
will force full-duplex 100base-TX, rather than allowing the usualautonegotiation.
global_options=N
options parameter for all 3c59x NICs in the machine.Entries in the options array above will override any setting ofthis.full_duplex=N1,N2,N3…
Similar to bit 9 of ‘options’. Forces the corresponding card intofull-duplex mode. Please use this in preference to the optionsparameter.
In fact, please don’t use this at all! You’re better off gettingautonegotiation working properly.
global_full_duplex=N1
full_duplex array above will override any setting of this.flow_ctrl=N1,N2,N3…
Use 802.3x MAC-layer flow control. The 3com cards only support thePAUSE command, which means that they will stop sending packets for ashort period if they receive a PAUSE frame from the link partner.
The driver only allows flow control on a link which is operating infull duplex mode.
This feature does not appear to work on the 3c905 - only 3c905B and3c905C have been tested.
The 3com cards appear to only respond to PAUSE frames which aresent to the reserved destination address of 01:80:c2:00:00:01. Theydo not honour PAUSE frames which are sent to the station MAC address.
rx_copybreak=M
The driver preallocates 32 full-sized (1536 byte) network buffersfor receiving. When a packet arrives, the driver has to decidewhether to leave the packet in its full-sized buffer, or to allocatea smaller buffer and copy the packet across into it.
This is a speed/space tradeoff.
The value of rx_copybreak is used to decide when to make the copy.If the packet size is less than rx_copybreak, the packet is copied.The default value for rx_copybreak is 200 bytes.
max_interrupt_work=N
hw_checksums=N1,N2,N3,…
Recent 3com NICs are able to generate IPv4, TCP and UDP checksumsin hardware. Linux has used the Rx checksumming for a long time.The “zero copy” patch which is planned for the 2.4 kernel seriesallows you to make use of the NIC’s DMA scatter/gather and transmitchecksumming as well.
The driver is set up so that, when the zerocopy patch is applied,all Tornado and Cyclone devices will use S/G and Tx checksums.
This module parameter has been provided so you can override thisdecision. If you think that Tx checksums are causing a problem, youmay disable the feature with hw_checksums=0.
If you think your NIC should be performing Tx checksumming and thedriver isn’t enabling it, you can force the use of hardware Txchecksumming with hw_checksums=1.
The driver drops a message in the logfiles to indicate whether ornot it is using hardware scatter/gather and hardware Tx checksums.
Scatter/gather and hardware checksums provide considerableperformance improvement for the sendfile() system call, but a smalldecrease in throughput for send(). There is no effect upon receiveefficiency.
compaq_ioaddr=N,compaq_irq=N,compaq_device_id=N
watchdog=N
enable_wol=N1,N2,N3,…
Enable Wake-on-LAN support for the relevant interface. DonaldBecker’s ether-wake application may be used to wake suspendedmachines.
Also enables the NIC’s power management support.
global_enable_wol=N
enable_wol array above will override any setting of this.Media selection¶
A number of the older NICs such as the 3c590 and 3c900 series have10base2 and AUI interfaces.
Prior to January, 2001 this driver would autoeselect the 10base2 or AUIport if it didn’t detect activity on the 10baseT port. It would thenget stuck on the 10base2 port and a driver reload was necessary toswitch back to 10baseT. This behaviour could not be prevented with amodule option override.
Later (current) versions of the driver _do_ support locking of themedia type. So if you load the driver module with
it will permanently select the 10baseT port. Automatic selection ofother media types does not occur.
Transmit error, Tx status register 82¶
This is a common error which is almost always caused by another host onthe same network being in full-duplex mode, while this host is inhalf-duplex mode. You need to find that other host and make it run inhalf-duplex mode or fix this host to run in full-duplex mode.
As a last resort, you can force the 3c59x driver into full-duplex modewith
but this has to be viewed as a workaround for broken network gear andshould only really be used for equipment which cannot autonegotiate.
Additional resources¶
Details of the device driver implementation are at the top of the source file.
Additional documentation is available at Don Becker’s Linux Drivers site:
Donald Becker’s driver development site:
Donald’s vortex-diag program is useful for inspecting the NIC’s state:
Donald’s mii-diag program may be used for inspecting and manipulatingthe NIC’s Media Independent Interface subsystem:
Donald’s wake-on-LAN page:
3com Drivers Windows 10
3Com’s DOS-based application for setting up the NICs EEPROMs:
Autonegotiation notes¶
The driver uses a one-minute heartbeat for adapting to changes inthe external LAN environment if link is up and 5 seconds if link is down.This means that when, for example, a machine is unplugged from a hubbed10baseT LAN plugged into a switched 100baseT LAN, the throughputwill be quite dreadful for up to sixty seconds. Be patient.
Cisco interoperability note from Walter Wong <wcw+@CMU.EDU>:
On a side note, adding HAS_NWAY seems to share a problem with theCisco 6509 switch. Specifically, you need to change the spanningtree parameter for the port the machine is plugged into to ‘portfast’mode. Otherwise, the negotiation fails. This has been an issuewe’ve noticed for a while but haven’t had the time to track down.
Cisco switches (Jeff Busch <jbusch@deja.com>)
My “standard config” for ports to which PC’s/servers connect directly:
If autonegotiation is a problem, you may need to specify “speed100” and “duplex full” as well (or “speed 10” and “duplex half”).
WARNING: DO NOT hook up hubs/switches/bridges to thesespecially-configured ports! The switch will become very confused.
Reporting and diagnosing problems¶
Maintainers find that accurate and complete problem reports areinvaluable in resolving driver problems. We are frequently not able toreproduce problems and must rely on your patience and efforts to get tothe bottom of the problem.
3com Drivers Windows 10
If you believe you have a driver problem here are some of thesteps you should take:
Is it really a driver problem?
Eliminate some variables: try different cards, differentcomputers, different cables, different ports on the switch/hub,different versions of the kernel or of the driver, etc.
OK, it’s a driver problem.
You need to generate a report. Typically this is an email to themaintainer and/or netdev@vger.kernel.org. The maintainer’semail address will be in the driver source or in the MAINTAINERS file.
The contents of your report will vary a lot depending upon theproblem. If it’s a kernel crash then you should refer to‘Reporting issues’.
But for most problems it is useful to provide the following:
Kernel version, driver version
A copy of the banner message which the driver generates whenit is initialised. For example:
eth0: 3Com PCI 3c905C Tornado at 0xa400, 00:50:da:6a:88:f0, IRQ 198K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.MII transceiver found at address 24, status 782d.Enabling bus-master transmits and whole-frame receives.
NOTE: You must provide the
debug=2modprobe option to generatea full detection message. Please do this:If it is a PCI device, the relevant output from ‘lspci -vx’, eg:
A description of the environment: 10baseT? 100baseT?full/half duplex? switched or hubbed?
Any additional module parameters which you may be providing to the driver.
Any kernel logs which are produced. The more the merrier.If this is a large file and you are sending your report to amailing list, mention that you have the logfile, but don’t sendit. If you’re reporting direct to the maintainer then just sendit.
To ensure that all kernel logs are available, add thefollowing line to /etc/syslog.conf:
Then restart syslogd with:
(The above may vary, depending upon which Linux distribution you use).
- If your problem is reproducible then that’s great. Try thefollowing:
- Increase the debug level. Usually this is done via:
- modprobe driver debug=7
- In /etc/modprobe.d/driver.conf:options driver debug=7
- Recreate the problem with the higher debug level,send all logs to the maintainer.
- Download you card’s diagnostic tool from DonaldBecker’s website <http://www.scyld.com/ethercard_diag.html>.Download mii-diag.c as well. Build these.
- Run ‘vortex-diag -aaee’ and ‘mii-diag -v’ when the card isworking correctly. Save the output.
- Run the above commands when the card is malfunctioning. Sendboth sets of output.
- Increase the debug level. Usually this is done via:
Finally, please be patient and be prepared to do some work. You mayend up working on this problem for a week or more as the maintainerasks more questions, asks for more tests, asks for patches to beapplied, etc. At the end of it all, the problem may even remainunresolved.

