mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-11-01 09:13:37 +00:00 
			
		
		
		
	Correct spelling typo in Documentation/networking Signed-off-by: Masanari Iida <standby24x7@gmail.com> Acked-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: David S. Miller <davem@davemloft.net>
		
			
				
	
	
		
			448 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			448 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
Documentation/networking/vortex.txt
 | 
						|
Andrew Morton
 | 
						|
30 April 2000
 | 
						|
 | 
						|
 | 
						|
This document describes the usage and errata of the 3Com "Vortex" device
 | 
						|
driver 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 end
 | 
						|
of this file.
 | 
						|
 | 
						|
 | 
						|
Since kernel 2.3.99-pre6, this driver incorporates the support for the
 | 
						|
3c575-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 when
 | 
						|
its module is loaded.  These are usually placed in /etc/modprobe.d/*.conf
 | 
						|
configuration files.  Example:
 | 
						|
 | 
						|
options 3c59x debug=3 rx_copybreak=300
 | 
						|
 | 
						|
If you are using the PCMCIA tools (cardmgr) then the options may be
 | 
						|
placed in /etc/pcmcia/config.opts:
 | 
						|
 | 
						|
module "3c59x" opts "debug=3 rx_copybreak=300"
 | 
						|
 | 
						|
 | 
						|
The supported parameters are:
 | 
						|
 | 
						|
debug=N
 | 
						|
 | 
						|
  Where N is a number from 0 to 7.  Anything above 3 produces a lot
 | 
						|
  of output in your system logs.  debug=1 is default.
 | 
						|
 | 
						|
options=N1,N2,N3,...
 | 
						|
 | 
						|
  Each number in the list provides an option to the corresponding
 | 
						|
  network card.  So if you have two 3c905's and you wish to provide
 | 
						|
  them with option 0x204 you would use:
 | 
						|
 | 
						|
    options=0x204,0x204
 | 
						|
 | 
						|
  The individual options are composed of a number of bitfields which
 | 
						|
  have 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 media
 | 
						|
  selection 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:
 | 
						|
 | 
						|
    insmod 3c59x options=0x204
 | 
						|
 | 
						|
  will force full-duplex 100base-TX, rather than allowing the usual
 | 
						|
  autonegotiation.
 | 
						|
 | 
						|
global_options=N
 | 
						|
 | 
						|
  Sets the `options' parameter for all 3c59x NICs in the machine. 
 | 
						|
  Entries in the `options' array above will override any setting of
 | 
						|
  this.
 | 
						|
 | 
						|
full_duplex=N1,N2,N3...
 | 
						|
 | 
						|
  Similar to bit 9 of 'options'.  Forces the corresponding card into
 | 
						|
  full-duplex mode.  Please use this in preference to the `options'
 | 
						|
  parameter.
 | 
						|
 | 
						|
  In fact, please don't use this at all! You're better off getting
 | 
						|
  autonegotiation working properly.
 | 
						|
 | 
						|
global_full_duplex=N1
 | 
						|
 | 
						|
  Sets full duplex mode for all 3c59x NICs in the machine.  Entries
 | 
						|
  in the `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 the
 | 
						|
  PAUSE command, which means that they will stop sending packets for a
 | 
						|
  short period if they receive a PAUSE frame from the link partner. 
 | 
						|
 | 
						|
  The driver only allows flow control on a link which is operating in
 | 
						|
  full duplex mode.
 | 
						|
 | 
						|
  This feature does not appear to work on the 3c905 - only 3c905B and
 | 
						|
  3c905C have been tested.
 | 
						|
 | 
						|
  The 3com cards appear to only respond to PAUSE frames which are
 | 
						|
  sent to the reserved destination address of 01:80:c2:00:00:01.  They
 | 
						|
  do not honour PAUSE frames which are sent to the station MAC address.
 | 
						|
 | 
						|
rx_copybreak=M
 | 
						|
 | 
						|
  The driver preallocates 32 full-sized (1536 byte) network buffers
 | 
						|
  for receiving.  When a packet arrives, the driver has to decide
 | 
						|
  whether to leave the packet in its full-sized buffer, or to allocate
 | 
						|
  a 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
 | 
						|
 | 
						|
  The driver's interrupt service routine can handle many receive and
 | 
						|
  transmit packets in a single invocation.  It does this in a loop. 
 | 
						|
  The value of max_interrupt_work governs how many times the interrupt
 | 
						|
  service routine will loop.  The default value is 32 loops.  If this
 | 
						|
  is exceeded the interrupt service routine gives up and generates a
 | 
						|
  warning message "eth0: Too much work in interrupt".
 | 
						|
 | 
						|
hw_checksums=N1,N2,N3,...
 | 
						|
 | 
						|
  Recent 3com NICs are able to generate IPv4, TCP and UDP checksums
 | 
						|
  in hardware.  Linux has used the Rx checksumming for a long time. 
 | 
						|
  The "zero copy" patch which is planned for the 2.4 kernel series
 | 
						|
  allows you to make use of the NIC's DMA scatter/gather and transmit
 | 
						|
  checksumming 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 this
 | 
						|
  decision.  If you think that Tx checksums are causing a problem, you
 | 
						|
  may disable the feature with `hw_checksums=0'.
 | 
						|
 | 
						|
  If you think your NIC should be performing Tx checksumming and the
 | 
						|
  driver isn't enabling it, you can force the use of hardware Tx
 | 
						|
  checksumming with `hw_checksums=1'.
 | 
						|
 | 
						|
  The driver drops a message in the logfiles to indicate whether or
 | 
						|
  not it is using hardware scatter/gather and hardware Tx checksums.
 | 
						|
 | 
						|
  Scatter/gather and hardware checksums provide considerable
 | 
						|
  performance improvement for the sendfile() system call, but a small
 | 
						|
  decrease in throughput for send().  There is no effect upon receive
 | 
						|
  efficiency.
 | 
						|
 | 
						|
compaq_ioaddr=N
 | 
						|
compaq_irq=N
 | 
						|
compaq_device_id=N
 | 
						|
 | 
						|
  "Variables to work-around the Compaq PCI BIOS32 problem"....
 | 
						|
 | 
						|
watchdog=N
 | 
						|
 | 
						|
  Sets the time duration (in milliseconds) after which the kernel
 | 
						|
  decides that the transmitter has become stuck and needs to be reset. 
 | 
						|
  This is mainly for debugging purposes, although it may be advantageous
 | 
						|
  to increase this value on LANs which have very high collision rates.
 | 
						|
  The default value is 5000 (5.0 seconds).
 | 
						|
 | 
						|
enable_wol=N1,N2,N3,...
 | 
						|
 | 
						|
  Enable Wake-on-LAN support for the relevant interface.  Donald
 | 
						|
  Becker's `ether-wake' application may be used to wake suspended
 | 
						|
  machines.
 | 
						|
 | 
						|
  Also enables the NIC's power management support.
 | 
						|
 | 
						|
global_enable_wol=N
 | 
						|
 | 
						|
  Sets enable_wol mode for all 3c59x NICs in the machine.  Entries in
 | 
						|
  the `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 have
 | 
						|
10base2 and AUI interfaces.
 | 
						|
 | 
						|
Prior to January, 2001 this driver would autoeselect the 10base2 or AUI
 | 
						|
port if it didn't detect activity on the 10baseT port.  It would then
 | 
						|
get stuck on the 10base2 port and a driver reload was necessary to
 | 
						|
switch back to 10baseT.  This behaviour could not be prevented with a
 | 
						|
module option override.
 | 
						|
 | 
						|
Later (current) versions of the driver _do_ support locking of the
 | 
						|
media type.  So if you load the driver module with
 | 
						|
 | 
						|
	modprobe 3c59x options=0
 | 
						|
 | 
						|
it will permanently select the 10baseT port.  Automatic selection of
 | 
						|
other media types does not occur.
 | 
						|
 | 
						|
 | 
						|
Transmit error, Tx status register 82
 | 
						|
-------------------------------------
 | 
						|
 | 
						|
This is a common error which is almost always caused by another host on
 | 
						|
the same network being in full-duplex mode, while this host is in
 | 
						|
half-duplex mode.  You need to find that other host and make it run in
 | 
						|
half-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 mode
 | 
						|
with
 | 
						|
 | 
						|
	options 3c59x full_duplex=1
 | 
						|
 | 
						|
but this has to be viewed as a workaround for broken network gear and
 | 
						|
should 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:
 | 
						|
 | 
						|
     http://www.scyld.com/vortex.html
 | 
						|
 | 
						|
Donald Becker's driver development site:
 | 
						|
 | 
						|
     http://www.scyld.com/network.html
 | 
						|
 | 
						|
Donald's vortex-diag program is useful for inspecting the NIC's state:
 | 
						|
 | 
						|
     http://www.scyld.com/ethercard_diag.html
 | 
						|
 | 
						|
Donald's mii-diag program may be used for inspecting and manipulating
 | 
						|
the NIC's Media Independent Interface subsystem:
 | 
						|
 | 
						|
     http://www.scyld.com/ethercard_diag.html#mii-diag
 | 
						|
 | 
						|
Donald's wake-on-LAN page:
 | 
						|
 | 
						|
     http://www.scyld.com/wakeonlan.html
 | 
						|
 | 
						|
3Com's DOS-based application for setting up the NICs EEPROMs:
 | 
						|
 | 
						|
	ftp://ftp.3com.com/pub/nic/3c90x/3c90xx2.exe
 | 
						|
 | 
						|
 | 
						|
Autonegotiation notes
 | 
						|
---------------------
 | 
						|
 | 
						|
  The driver uses a one-minute heartbeat for adapting to changes in
 | 
						|
  the 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 hubbed
 | 
						|
  10baseT LAN plugged into a  switched 100baseT LAN, the throughput
 | 
						|
  will 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 the
 | 
						|
  Cisco 6509 switch.  Specifically, you need to change the spanning
 | 
						|
  tree parameter for the port the machine is plugged into to 'portfast'
 | 
						|
  mode.  Otherwise, the negotiation fails.  This has been an issue
 | 
						|
  we'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:
 | 
						|
 | 
						|
        interface FastEthernet0/N
 | 
						|
        description machinename
 | 
						|
        load-interval 30
 | 
						|
        spanning-tree portfast
 | 
						|
 | 
						|
    If autonegotiation is a problem, you may need to specify "speed
 | 
						|
    100" and "duplex full" as well (or "speed 10" and "duplex half").
 | 
						|
 | 
						|
    WARNING: DO NOT hook up hubs/switches/bridges to these
 | 
						|
    specially-configured ports! The switch will become very confused.
 | 
						|
 | 
						|
 | 
						|
Reporting and diagnosing problems
 | 
						|
---------------------------------
 | 
						|
 | 
						|
Maintainers find that accurate and complete problem reports are
 | 
						|
invaluable in resolving driver problems.  We are frequently not able to
 | 
						|
reproduce problems and must rely on your patience and efforts to get to
 | 
						|
the bottom of the problem.
 | 
						|
 | 
						|
If you believe you have a driver problem here are some of the
 | 
						|
steps you should take:
 | 
						|
 | 
						|
- Is it really a driver problem?
 | 
						|
 | 
						|
   Eliminate some variables: try different cards, different
 | 
						|
   computers, 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 the
 | 
						|
   maintainer and/or netdev@vger.kernel.org.  The maintainer's
 | 
						|
   email address will be in the driver source or in the MAINTAINERS file.
 | 
						|
 | 
						|
- The contents of your report will vary a lot depending upon the
 | 
						|
  problem.  If it's a kernel crash then you should refer to the
 | 
						|
  REPORTING-BUGS file.
 | 
						|
 | 
						|
  But for most problems it is useful to provide the following:
 | 
						|
 | 
						|
   o Kernel version, driver version
 | 
						|
 | 
						|
   o A copy of the banner message which the driver generates when
 | 
						|
     it is initialised.  For example:
 | 
						|
 | 
						|
     eth0: 3Com PCI 3c905C Tornado at 0xa400,  00:50:da:6a:88:f0, IRQ 19
 | 
						|
     8K 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=2' modprobe option to generate
 | 
						|
     a full detection message.  Please do this:
 | 
						|
 | 
						|
	modprobe 3c59x debug=2
 | 
						|
 | 
						|
   o If it is a PCI device, the relevant output from 'lspci -vx', eg:
 | 
						|
 | 
						|
     00:09.0 Ethernet controller: 3Com Corporation 3c905C-TX [Fast Etherlink] (rev 74)
 | 
						|
             Subsystem: 3Com Corporation: Unknown device 9200
 | 
						|
             Flags: bus master, medium devsel, latency 32, IRQ 19
 | 
						|
             I/O ports at a400 [size=128]
 | 
						|
             Memory at db000000 (32-bit, non-prefetchable) [size=128]
 | 
						|
             Expansion ROM at <unassigned> [disabled] [size=128K]
 | 
						|
             Capabilities: [dc] Power Management version 2
 | 
						|
     00: b7 10 00 92 07 00 10 02 74 00 00 02 08 20 00 00
 | 
						|
     10: 01 a4 00 00 00 00 00 db 00 00 00 00 00 00 00 00
 | 
						|
     20: 00 00 00 00 00 00 00 00 00 00 00 00 b7 10 00 10
 | 
						|
     30: 00 00 00 00 dc 00 00 00 00 00 00 00 05 01 0a 0a
 | 
						|
 | 
						|
   o A description of the environment: 10baseT? 100baseT?
 | 
						|
     full/half duplex? switched or hubbed?
 | 
						|
 | 
						|
   o Any additional module parameters which you may be providing to the driver.
 | 
						|
 | 
						|
   o Any kernel logs which are produced.  The more the merrier. 
 | 
						|
     If this is a large file and you are sending your report to a
 | 
						|
     mailing list, mention that you have the logfile, but don't send
 | 
						|
     it.  If you're reporting direct to the maintainer then just send
 | 
						|
     it.
 | 
						|
 | 
						|
     To ensure that all kernel logs are available, add the
 | 
						|
     following line to /etc/syslog.conf:
 | 
						|
 | 
						|
         kern.* /var/log/messages
 | 
						|
 | 
						|
     Then restart syslogd with:
 | 
						|
 | 
						|
         /etc/rc.d/init.d/syslog restart
 | 
						|
 | 
						|
     (The above may vary, depending upon which Linux distribution you use).
 | 
						|
 | 
						|
    o If your problem is reproducible then that's great.  Try the
 | 
						|
      following:
 | 
						|
 | 
						|
      1) Increase the debug level.  Usually this is done via:
 | 
						|
 | 
						|
         a) modprobe driver debug=7
 | 
						|
         b) In /etc/modprobe.d/driver.conf:
 | 
						|
            options driver debug=7
 | 
						|
 | 
						|
      2) Recreate the problem with the higher debug level,
 | 
						|
         send all logs to the maintainer.
 | 
						|
 | 
						|
      3) Download you card's diagnostic tool from Donald
 | 
						|
         Becker's website <http://www.scyld.com/ethercard_diag.html>.
 | 
						|
         Download mii-diag.c as well.  Build these.
 | 
						|
 | 
						|
         a) Run 'vortex-diag -aaee' and 'mii-diag -v' when the card is
 | 
						|
            working correctly.  Save the output.
 | 
						|
 | 
						|
         b) Run the above commands when the card is malfunctioning.  Send
 | 
						|
            both sets of output.
 | 
						|
 | 
						|
Finally, please be patient and be prepared to do some work.  You may
 | 
						|
end up working on this problem for a week or more as the maintainer
 | 
						|
asks more questions, asks for more tests, asks for patches to be
 | 
						|
applied, etc.  At the end of it all, the problem may even remain
 | 
						|
unresolved.
 |