aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/BUG-HUNTING113
-rw-r--r--Documentation/dvb/get_dvb_firmware2
-rw-r--r--Documentation/filesystems/isofs.txt4
-rw-r--r--Documentation/filesystems/jfs.txt2
-rw-r--r--Documentation/filesystems/vfat.txt6
-rw-r--r--Documentation/networking/e100.txt158
-rw-r--r--Documentation/networking/e1000.txt620
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt71
-rw-r--r--Documentation/sound/alsa/Audiophile-Usb.txt333
-rw-r--r--Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl6
-rw-r--r--Documentation/spinlocks.txt2
11 files changed, 1017 insertions, 300 deletions
diff --git a/Documentation/BUG-HUNTING b/Documentation/BUG-HUNTING
index ca29242dbc38..65b97e1dbf70 100644
--- a/Documentation/BUG-HUNTING
+++ b/Documentation/BUG-HUNTING
@@ -1,3 +1,56 @@
1Table of contents
2=================
3
4Last updated: 20 December 2005
5
6Contents
7========
8
9- Introduction
10- Devices not appearing
11- Finding patch that caused a bug
12-- Finding using git-bisect
13-- Finding it the old way
14- Fixing the bug
15
16Introduction
17============
18
19Always try the latest kernel from kernel.org and build from source. If you are
20not confident in doing that please report the bug to your distribution vendor
21instead of to a kernel developer.
22
23Finding bugs is not always easy. Have a go though. If you can't find it don't
24give up. Report as much as you have found to the relevant maintainer. See
25MAINTAINERS for who that is for the subsystem you have worked on.
26
27Before you submit a bug report read REPORTING-BUGS.
28
29Devices not appearing
30=====================
31
32Often this is caused by udev. Check that first before blaming it on the
33kernel.
34
35Finding patch that caused a bug
36===============================
37
38
39
40Finding using git-bisect
41------------------------
42
43Using the provided tools with git makes finding bugs easy provided the bug is
44reproducible.
45
46Steps to do it:
47- start using git for the kernel source
48- read the man page for git-bisect
49- have fun
50
51Finding it the old way
52----------------------
53
1[Sat Mar 2 10:32:33 PST 1996 KERNEL_BUG-HOWTO lm@sgi.com (Larry McVoy)] 54[Sat Mar 2 10:32:33 PST 1996 KERNEL_BUG-HOWTO lm@sgi.com (Larry McVoy)]
2 55
3This is how to track down a bug if you know nothing about kernel hacking. 56This is how to track down a bug if you know nothing about kernel hacking.
@@ -90,3 +143,63 @@ it does work and it lets non-hackers help fix bugs. And it is cool
90because Linux snapshots will let you do this - something that you can't 143because Linux snapshots will let you do this - something that you can't
91do with vendor supplied releases. 144do with vendor supplied releases.
92 145
146Fixing the bug
147==============
148
149Nobody is going to tell you how to fix bugs. Seriously. You need to work it
150out. But below are some hints on how to use the tools.
151
152To debug a kernel, use objdump and look for the hex offset from the crash
153output to find the valid line of code/assembler. Without debug symbols, you
154will see the assembler code for the routine shown, but if your kernel has
155debug symbols the C code will also be available. (Debug symbols can be enabled
156in the kernel hacking menu of the menu configuration.) For example:
157
158 objdump -r -S -l --disassemble net/dccp/ipv4.o
159
160NB.: you need to be at the top level of the kernel tree for this to pick up
161your C files.
162
163If you don't have access to the code you can also debug on some crash dumps
164e.g. crash dump output as shown by Dave Miller.
165
166> EIP is at ip_queue_xmit+0x14/0x4c0
167> ...
168> Code: 44 24 04 e8 6f 05 00 00 e9 e8 fe ff ff 8d 76 00 8d bc 27 00 00
169> 00 00 55 57 56 53 81 ec bc 00 00 00 8b ac 24 d0 00 00 00 8b 5d 08
170> <8b> 83 3c 01 00 00 89 44 24 14 8b 45 28 85 c0 89 44 24 18 0f 85
171>
172> Put the bytes into a "foo.s" file like this:
173>
174> .text
175> .globl foo
176> foo:
177> .byte .... /* bytes from Code: part of OOPS dump */
178>
179> Compile it with "gcc -c -o foo.o foo.s" then look at the output of
180> "objdump --disassemble foo.o".
181>
182> Output:
183>
184> ip_queue_xmit:
185> push %ebp
186> push %edi
187> push %esi
188> push %ebx
189> sub $0xbc, %esp
190> mov 0xd0(%esp), %ebp ! %ebp = arg0 (skb)
191> mov 0x8(%ebp), %ebx ! %ebx = skb->sk
192> mov 0x13c(%ebx), %eax ! %eax = inet_sk(sk)->opt
193
194Another very useful option of the Kernel Hacking section in menuconfig is
195Debug memory allocations. This will help you see whether data has been
196initialised and not set before use etc. To see the values that get assigned
197with this look at mm/slab.c and search for POISON_INUSE. When using this an
198Oops will often show the poisoned data instead of zero which is the default.
199
200Once you have worked out a fix please submit it upstream. After all open
201source is about sharing what you do and don't you want to be recognised for
202your genius?
203
204Please do read Documentation/SubmittingPatches though to help your code get
205accepted.
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware
index bb55f49f2745..15fc8fbef67e 100644
--- a/Documentation/dvb/get_dvb_firmware
+++ b/Documentation/dvb/get_dvb_firmware
@@ -246,7 +246,7 @@ sub vp7041 {
246} 246}
247 247
248sub dibusb { 248sub dibusb {
249 my $url = "http://www.linuxtv.org/downloads/firmware/dvb-dibusb-5.0.0.11.fw"; 249 my $url = "http://www.linuxtv.org/downloads/firmware/dvb-usb-dibusb-5.0.0.11.fw";
250 my $outfile = "dvb-dibusb-5.0.0.11.fw"; 250 my $outfile = "dvb-dibusb-5.0.0.11.fw";
251 my $hash = "fa490295a527360ca16dcdf3224ca243"; 251 my $hash = "fa490295a527360ca16dcdf3224ca243";
252 252
diff --git a/Documentation/filesystems/isofs.txt b/Documentation/filesystems/isofs.txt
index 424585ff6ea1..758e50401c16 100644
--- a/Documentation/filesystems/isofs.txt
+++ b/Documentation/filesystems/isofs.txt
@@ -9,9 +9,9 @@ when using discs encoded using Microsoft's Joliet extensions.
9 iocharset=name Character set to use for converting from Unicode to 9 iocharset=name Character set to use for converting from Unicode to
10 ASCII. Joliet filenames are stored in Unicode format, but 10 ASCII. Joliet filenames are stored in Unicode format, but
11 Unix for the most part doesn't know how to deal with Unicode. 11 Unix for the most part doesn't know how to deal with Unicode.
12 There is also an option of doing UTF8 translations with the 12 There is also an option of doing UTF-8 translations with the
13 utf8 option. 13 utf8 option.
14 utf8 Encode Unicode names in UTF8 format. Default is no. 14 utf8 Encode Unicode names in UTF-8 format. Default is no.
15 15
16Mount options unique to the isofs filesystem. 16Mount options unique to the isofs filesystem.
17 block=512 Set the block size for the disk to 512 bytes 17 block=512 Set the block size for the disk to 512 bytes
diff --git a/Documentation/filesystems/jfs.txt b/Documentation/filesystems/jfs.txt
index 3e992daf99ad..bae128663748 100644
--- a/Documentation/filesystems/jfs.txt
+++ b/Documentation/filesystems/jfs.txt
@@ -6,7 +6,7 @@ The following mount options are supported:
6 6
7iocharset=name Character set to use for converting from Unicode to 7iocharset=name Character set to use for converting from Unicode to
8 ASCII. The default is to do no conversion. Use 8 ASCII. The default is to do no conversion. Use
9 iocharset=utf8 for UTF8 translations. This requires 9 iocharset=utf8 for UTF-8 translations. This requires
10 CONFIG_NLS_UTF8 to be set in the kernel .config file. 10 CONFIG_NLS_UTF8 to be set in the kernel .config file.
11 iocharset=none specifies the default behavior explicitly. 11 iocharset=none specifies the default behavior explicitly.
12 12
diff --git a/Documentation/filesystems/vfat.txt b/Documentation/filesystems/vfat.txt
index 5ead20c6c744..2001abbc60e6 100644
--- a/Documentation/filesystems/vfat.txt
+++ b/Documentation/filesystems/vfat.txt
@@ -28,16 +28,16 @@ iocharset=name -- Character set to use for converting between the
28 know how to deal with Unicode. 28 know how to deal with Unicode.
29 By default, FAT_DEFAULT_IOCHARSET setting is used. 29 By default, FAT_DEFAULT_IOCHARSET setting is used.
30 30
31 There is also an option of doing UTF8 translations 31 There is also an option of doing UTF-8 translations
32 with the utf8 option. 32 with the utf8 option.
33 33
34 NOTE: "iocharset=utf8" is not recommended. If unsure, 34 NOTE: "iocharset=utf8" is not recommended. If unsure,
35 you should consider the following option instead. 35 you should consider the following option instead.
36 36
37utf8=<bool> -- UTF8 is the filesystem safe version of Unicode that 37utf8=<bool> -- UTF-8 is the filesystem safe version of Unicode that
38 is used by the console. It can be be enabled for the 38 is used by the console. It can be be enabled for the
39 filesystem with this option. If 'uni_xlate' gets set, 39 filesystem with this option. If 'uni_xlate' gets set,
40 UTF8 gets disabled. 40 UTF-8 gets disabled.
41 41
42uni_xlate=<bool> -- Translate unhandled Unicode characters to special 42uni_xlate=<bool> -- Translate unhandled Unicode characters to special
43 escaped sequences. This would let you backup and 43 escaped sequences. This would let you backup and
diff --git a/Documentation/networking/e100.txt b/Documentation/networking/e100.txt
index 4ef9f7cd5dc3..944aa55e79f8 100644
--- a/Documentation/networking/e100.txt
+++ b/Documentation/networking/e100.txt
@@ -1,16 +1,17 @@
1Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters 1Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters
2============================================================== 2==============================================================
3 3
4November 17, 2004 4November 15, 2005
5
6 5
7Contents 6Contents
8======== 7========
9 8
10- In This Release 9- In This Release
11- Identifying Your Adapter 10- Identifying Your Adapter
11- Building and Installation
12- Driver Configuration Parameters 12- Driver Configuration Parameters
13- Additional Configurations 13- Additional Configurations
14- Known Issues
14- Support 15- Support
15 16
16 17
@@ -18,18 +19,30 @@ In This Release
18=============== 19===============
19 20
20This file describes the Linux* Base Driver for the Intel(R) PRO/100 Family of 21This file describes the Linux* Base Driver for the Intel(R) PRO/100 Family of
21Adapters, version 3.3.x. This driver supports 2.4.x and 2.6.x kernels. 22Adapters. This driver includes support for Itanium(R)2-based systems.
23
24For questions related to hardware requirements, refer to the documentation
25supplied with your Intel PRO/100 adapter.
26
27The following features are now available in supported kernels:
28 - Native VLANs
29 - Channel Bonding (teaming)
30 - SNMP
31
32Channel Bonding documentation can be found in the Linux kernel source:
33/Documentation/networking/bonding.txt
34
22 35
23Identifying Your Adapter 36Identifying Your Adapter
24======================== 37========================
25 38
26For more information on how to identify your adapter, go to the Adapter & 39For more information on how to identify your adapter, go to the Adapter &
27Driver ID Guide at: 40Driver ID Guide at:
28 41
29 http://support.intel.com/support/network/adapter/pro100/21397.htm 42 http://support.intel.com/support/network/adapter/pro100/21397.htm
30 43
31For the latest Intel network drivers for Linux, refer to the following 44For the latest Intel network drivers for Linux, refer to the following
32website. In the search field, enter your adapter name or type, or use the 45website. In the search field, enter your adapter name or type, or use the
33networking link on the left to search for your adapter: 46networking link on the left to search for your adapter:
34 47
35 http://downloadfinder.intel.com/scripts-df/support_intel.asp 48 http://downloadfinder.intel.com/scripts-df/support_intel.asp
@@ -40,73 +53,75 @@ Driver Configuration Parameters
40The default value for each parameter is generally the recommended setting, 53The default value for each parameter is generally the recommended setting,
41unless otherwise noted. 54unless otherwise noted.
42 55
43Rx Descriptors: Number of receive descriptors. A receive descriptor is a data 56Rx Descriptors: Number of receive descriptors. A receive descriptor is a data
44 structure that describes a receive buffer and its attributes to the network 57 structure that describes a receive buffer and its attributes to the network
45 controller. The data in the descriptor is used by the controller to write 58 controller. The data in the descriptor is used by the controller to write
46 data from the controller to host memory. In the 3.0.x driver the valid 59 data from the controller to host memory. In the 3.x.x driver the valid range
47 range for this parameter is 64-256. The default value is 64. This parameter 60 for this parameter is 64-256. The default value is 64. This parameter can be
48 can be changed using the command 61 changed using the command:
49 62
50 ethtool -G eth? rx n, where n is the number of desired rx descriptors. 63 ethtool -G eth? rx n, where n is the number of desired rx descriptors.
51 64
52Tx Descriptors: Number of transmit descriptors. A transmit descriptor is a 65Tx Descriptors: Number of transmit descriptors. A transmit descriptor is a data
53 data structure that describes a transmit buffer and its attributes to the 66 structure that describes a transmit buffer and its attributes to the network
54 network controller. The data in the descriptor is used by the controller to 67 controller. The data in the descriptor is used by the controller to read
55 read data from the host memory to the controller. In the 3.0.x driver the 68 data from the host memory to the controller. In the 3.x.x driver the valid
56 valid range for this parameter is 64-256. The default value is 64. This 69 range for this parameter is 64-256. The default value is 64. This parameter
57 parameter can be changed using the command 70 can be changed using the command:
58 71
59 ethtool -G eth? tx n, where n is the number of desired tx descriptors. 72 ethtool -G eth? tx n, where n is the number of desired tx descriptors.
60 73
61Speed/Duplex: The driver auto-negotiates the link speed and duplex settings by 74Speed/Duplex: The driver auto-negotiates the link speed and duplex settings by
62 default. Ethtool can be used as follows to force speed/duplex. 75 default. Ethtool can be used as follows to force speed/duplex.
63 76
64 ethtool -s eth? autoneg off speed {10|100} duplex {full|half} 77 ethtool -s eth? autoneg off speed {10|100} duplex {full|half}
65 78
66 NOTE: setting the speed/duplex to incorrect values will cause the link to 79 NOTE: setting the speed/duplex to incorrect values will cause the link to
67 fail. 80 fail.
68 81
69Event Log Message Level: The driver uses the message level flag to log events 82Event Log Message Level: The driver uses the message level flag to log events
70 to syslog. The message level can be set at driver load time. It can also be 83 to syslog. The message level can be set at driver load time. It can also be
71 set using the command 84 set using the command:
72 85
73 ethtool -s eth? msglvl n 86 ethtool -s eth? msglvl n
74 87
88
75Additional Configurations 89Additional Configurations
76========================= 90=========================
77 91
78 Configuring the Driver on Different Distributions 92 Configuring the Driver on Different Distributions
79 ------------------------------------------------- 93 -------------------------------------------------
80 94
81 Configuring a network driver to load properly when the system is started is 95 Configuring a network driver to load properly when the system is started is
82 distribution dependent. Typically, the configuration process involves adding 96 distribution dependent. Typically, the configuration process involves adding
83 an alias line to /etc/modules.conf as well as editing other system startup 97 an alias line to /etc/modules.conf or /etc/modprobe.conf as well as editing
84 scripts and/or configuration files. Many popular Linux distributions ship 98 other system startup scripts and/or configuration files. Many popular Linux
85 with tools to make these changes for you. To learn the proper way to 99 distributions ship with tools to make these changes for you. To learn the
86 configure a network device for your system, refer to your distribution 100 proper way to configure a network device for your system, refer to your
87 documentation. If during this process you are asked for the driver or module 101 distribution documentation. If during this process you are asked for the
88 name, the name for the Linux Base Driver for the Intel PRO/100 Family of 102 driver or module name, the name for the Linux Base Driver for the Intel
89 Adapters is e100. 103 PRO/100 Family of Adapters is e100.
90 104
91 As an example, if you install the e100 driver for two PRO/100 adapters 105 As an example, if you install the e100 driver for two PRO/100 adapters
92 (eth0 and eth1), add the following to modules.conf: 106 (eth0 and eth1), add the following to modules.conf or modprobe.conf:
93 107
94 alias eth0 e100 108 alias eth0 e100
95 alias eth1 e100 109 alias eth1 e100
96 110
97 Viewing Link Messages 111 Viewing Link Messages
98 --------------------- 112 ---------------------
99 In order to see link messages and other Intel driver information on your 113 In order to see link messages and other Intel driver information on your
100 console, you must set the dmesg level up to six. This can be done by 114 console, you must set the dmesg level up to six. This can be done by
101 entering the following on the command line before loading the e100 driver: 115 entering the following on the command line before loading the e100 driver:
102 116
103 dmesg -n 8 117 dmesg -n 8
104 118
105 If you wish to see all messages issued by the driver, including debug 119 If you wish to see all messages issued by the driver, including debug
106 messages, set the dmesg level to eight. 120 messages, set the dmesg level to eight.
107 121
108 NOTE: This setting is not saved across reboots. 122 NOTE: This setting is not saved across reboots.
109 123
124
110 Ethtool 125 Ethtool
111 ------- 126 -------
112 127
@@ -114,29 +129,27 @@ Additional Configurations
114 diagnostics, as well as displaying statistical information. Ethtool 129 diagnostics, as well as displaying statistical information. Ethtool
115 version 1.6 or later is required for this functionality. 130 version 1.6 or later is required for this functionality.
116 131
117 The latest release of ethtool can be found at: 132 The latest release of ethtool can be found from
118 http://sf.net/projects/gkernel. 133 http://sourceforge.net/projects/gkernel.
119 134
120 NOTE: This driver uses mii support from the kernel. As a result, when 135 NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support
121 there is no link, ethtool will report speed/duplex to be 10/half. 136 for a more complete ethtool feature set can be enabled by upgrading
137 ethtool to ethtool-1.8.1.
122 138
123 NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support
124 for a more complete ethtool feature set can be enabled by upgrading
125 ethtool to ethtool-1.8.1.
126 139
127 Enabling Wake on LAN* (WoL) 140 Enabling Wake on LAN* (WoL)
128 --------------------------- 141 ---------------------------
129 WoL is provided through the Ethtool* utility. Ethtool is included with Red 142 WoL is provided through the Ethtool* utility. Ethtool is included with Red
130 Hat* 8.0. For other Linux distributions, download and install Ethtool from 143 Hat* 8.0. For other Linux distributions, download and install Ethtool from
131 the following website: http://sourceforge.net/projects/gkernel. 144 the following website: http://sourceforge.net/projects/gkernel.
132 145
133 For instructions on enabling WoL with Ethtool, refer to the Ethtool man 146 For instructions on enabling WoL with Ethtool, refer to the Ethtool man page.
134 page.
135 147
136 WoL will be enabled on the system during the next shut down or reboot. For 148 WoL will be enabled on the system during the next shut down or reboot. For
137 this driver version, in order to enable WoL, the e100 driver must be 149 this driver version, in order to enable WoL, the e100 driver must be
138 loaded when shutting down or rebooting the system. 150 loaded when shutting down or rebooting the system.
139 151
152
140 NAPI 153 NAPI
141 ---- 154 ----
142 155
@@ -144,6 +157,25 @@ Additional Configurations
144 157
145 See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. 158 See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI.
146 159
160 Multiple Interfaces on Same Ethernet Broadcast Network
161 ------------------------------------------------------
162
163 Due to the default ARP behavior on Linux, it is not possible to have
164 one system on two IP networks in the same Ethernet broadcast domain
165 (non-partitioned switch) behave as expected. All Ethernet interfaces
166 will respond to IP traffic for any IP address assigned to the system.
167 This results in unbalanced receive traffic.
168
169 If you have multiple interfaces in a server, either turn on ARP
170 filtering by
171
172 (1) entering: echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
173 (this only works if your kernel's version is higher than 2.4.5), or
174
175 (2) installing the interfaces in separate broadcast domains (either
176 in different switches or in a switch partitioned to VLANs).
177
178
147Support 179Support
148======= 180=======
149 181
@@ -151,20 +183,24 @@ For general information, go to the Intel support website at:
151 183
152 http://support.intel.com 184 http://support.intel.com
153 185
186 or the Intel Wired Networking project hosted by Sourceforge at:
187
188 http://sourceforge.net/projects/e1000
189
154If an issue is identified with the released source code on the supported 190If an issue is identified with the released source code on the supported
155kernel with a supported adapter, email the specific information related to 191kernel with a supported adapter, email the specific information related to the
156the issue to linux.nics@intel.com. 192issue to e1000-devel@lists.sourceforge.net.
157 193
158 194
159License 195License
160======= 196=======
161 197
162This software program is released under the terms of a license agreement 198This software program is released under the terms of a license agreement
163between you ('Licensee') and Intel. Do not use or load this software or any 199between you ('Licensee') and Intel. Do not use or load this software or any
164associated materials (collectively, the 'Software') until you have carefully 200associated materials (collectively, the 'Software') until you have carefully
165read the full terms and conditions of the LICENSE located in this software 201read the full terms and conditions of the file COPYING located in this software
166package. By loading or using the Software, you agree to the terms of this 202package. By loading or using the Software, you agree to the terms of this
167Agreement. If you do not agree with the terms of this Agreement, do not 203Agreement. If you do not agree with the terms of this Agreement, do not install
168install or use the Software. 204or use the Software.
169 205
170* Other names and brands may be claimed as the property of others. 206* Other names and brands may be claimed as the property of others.
diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/e1000.txt
index 2ebd4058d46d..71fe15af356c 100644
--- a/Documentation/networking/e1000.txt
+++ b/Documentation/networking/e1000.txt
@@ -1,7 +1,7 @@
1Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters 1Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters
2=============================================================== 2===============================================================
3 3
4November 17, 2004 4November 15, 2005
5 5
6 6
7Contents 7Contents
@@ -20,254 +20,316 @@ In This Release
20=============== 20===============
21 21
22This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family 22This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family
23of Adapters, version 5.x.x. 23of Adapters. This driver includes support for Itanium(R)2-based systems.
24 24
25For questions related to hardware requirements, refer to the documentation 25For questions related to hardware requirements, refer to the documentation
26supplied with your Intel PRO/1000 adapter. All hardware requirements listed 26supplied with your Intel PRO/1000 adapter. All hardware requirements listed
27apply to use with Linux. 27apply to use with Linux.
28 28
29Native VLANs are now available with supported kernels. 29The following features are now available in supported kernels:
30 - Native VLANs
31 - Channel Bonding (teaming)
32 - SNMP
33
34Channel Bonding documentation can be found in the Linux kernel source:
35/Documentation/networking/bonding.txt
36
37The driver information previously displayed in the /proc filesystem is not
38supported in this release. Alternatively, you can use ethtool (version 1.6
39or later), lspci, and ifconfig to obtain the same information.
40
41Instructions on updating ethtool can be found in the section "Additional
42Configurations" later in this document.
43
30 44
31Identifying Your Adapter 45Identifying Your Adapter
32======================== 46========================
33 47
34For more information on how to identify your adapter, go to the Adapter & 48For more information on how to identify your adapter, go to the Adapter &
35Driver ID Guide at: 49Driver ID Guide at:
36 50
37 http://support.intel.com/support/network/adapter/pro100/21397.htm 51 http://support.intel.com/support/network/adapter/pro100/21397.htm
38 52
39For the latest Intel network drivers for Linux, refer to the following 53For the latest Intel network drivers for Linux, refer to the following
40website. In the search field, enter your adapter name or type, or use the 54website. In the search field, enter your adapter name or type, or use the
41networking link on the left to search for your adapter: 55networking link on the left to search for your adapter:
42 56
43 http://downloadfinder.intel.com/scripts-df/support_intel.asp 57 http://downloadfinder.intel.com/scripts-df/support_intel.asp
44 58
45Command Line Parameters
46=======================
47 59
48If the driver is built as a module, the following optional parameters are 60Command Line Parameters =======================
49used by entering them on the command line with the modprobe or insmod command 61
50using this syntax: 62If the driver is built as a module, the following optional parameters
63are used by entering them on the command line with the modprobe or insmod
64command using this syntax:
51 65
52 modprobe e1000 [<option>=<VAL1>,<VAL2>,...] 66 modprobe e1000 [<option>=<VAL1>,<VAL2>,...]
53 67
54 insmod e1000 [<option>=<VAL1>,<VAL2>,...] 68 insmod e1000 [<option>=<VAL1>,<VAL2>,...]
55 69
56For example, with two PRO/1000 PCI adapters, entering: 70For example, with two PRO/1000 PCI adapters, entering:
57 71
58 insmod e1000 TxDescriptors=80,128 72 insmod e1000 TxDescriptors=80,128
59 73
60loads the e1000 driver with 80 TX descriptors for the first adapter and 128 TX 74loads the e1000 driver with 80 TX descriptors for the first adapter and 128
61descriptors for the second adapter. 75TX descriptors for the second adapter.
62 76
63The default value for each parameter is generally the recommended setting, 77The default value for each parameter is generally the recommended setting,
64unless otherwise noted. Also, if the driver is statically built into the 78unless otherwise noted.
65kernel, the driver is loaded with the default values for all the parameters. 79
66Ethtool can be used to change some of the parameters at runtime. 80NOTES: For more information about the AutoNeg, Duplex, and Speed
81 parameters, see the "Speed and Duplex Configuration" section in
82 this document.
67 83
68 NOTES: For more information about the AutoNeg, Duplex, and Speed 84 For more information about the InterruptThrottleRate,
69 parameters, see the "Speed and Duplex Configuration" section in 85 RxIntDelay, TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay
70 this document. 86 parameters, see the application note at:
87 http://www.intel.com/design/network/applnots/ap450.htm
71 88
72 For more information about the InterruptThrottleRate, RxIntDelay, 89 A descriptor describes a data buffer and attributes related to
73 TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay parameters, see the 90 the data buffer. This information is accessed by the hardware.
74 application note at:
75 http://www.intel.com/design/network/applnots/ap450.htm
76 91
77 A descriptor describes a data buffer and attributes related to the
78 data buffer. This information is accessed by the hardware.
79 92
80AutoNeg (adapters using copper connections only) 93AutoNeg
81Valid Range: 0x01-0x0F, 0x20-0x2F 94-------
95(Supported only on adapters with copper connections)
96Valid Range: 0x01-0x0F, 0x20-0x2F
82Default Value: 0x2F 97Default Value: 0x2F
83 This parameter is a bit mask that specifies which speed and duplex 98
84 settings the board advertises. When this parameter is used, the Speed and 99This parameter is a bit mask that specifies which speed and duplex
85 Duplex parameters must not be specified. 100settings the board advertises. When this parameter is used, the Speed
86 NOTE: Refer to the Speed and Duplex section of this readme for more 101and Duplex parameters must not be specified.
87 information on the AutoNeg parameter. 102
88 103NOTE: Refer to the Speed and Duplex section of this readme for more
89Duplex (adapters using copper connections only) 104 information on the AutoNeg parameter.
90Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full) 105
106
107Duplex
108------
109(Supported only on adapters with copper connections)
110Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full)
91Default Value: 0 111Default Value: 0
92 Defines the direction in which data is allowed to flow. Can be either one 112
93 or two-directional. If both Duplex and the link partner are set to auto- 113Defines the direction in which data is allowed to flow. Can be either
94 negotiate, the board auto-detects the correct duplex. If the link partner 114one or two-directional. If both Duplex and the link partner are set to
95 is forced (either full or half), Duplex defaults to half-duplex. 115auto-negotiate, the board auto-detects the correct duplex. If the link
116partner is forced (either full or half), Duplex defaults to half-duplex.
117
96 118
97FlowControl 119FlowControl
98Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) 120----------
99Default: Read flow control settings from the EEPROM 121Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx)
100 This parameter controls the automatic generation(Tx) and response(Rx) to 122Default Value: Reads flow control settings from the EEPROM
101 Ethernet PAUSE frames. 123
124This parameter controls the automatic generation(Tx) and response(Rx)
125to Ethernet PAUSE frames.
126
102 127
103InterruptThrottleRate 128InterruptThrottleRate
104Valid Range: 100-100000 (0=off, 1=dynamic) 129---------------------
130(not supported on Intel 82542, 82543 or 82544-based adapters)
131Valid Range: 100-100000 (0=off, 1=dynamic)
105Default Value: 8000 132Default Value: 8000
106 This value represents the maximum number of interrupts per second the 133
107 controller generates. InterruptThrottleRate is another setting used in 134This value represents the maximum number of interrupts per second the
108 interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust 135controller generates. InterruptThrottleRate is another setting used in
109 InterruptThrottleRate based on the current traffic load. 136interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust
110Un-supported Adapters: InterruptThrottleRate is NOT supported by 82542, 82543 137InterruptThrottleRate based on the current traffic load.
111 or 82544-based adapters. 138
112 139NOTE: InterruptThrottleRate takes precedence over the TxAbsIntDelay and
113 NOTE: InterruptThrottleRate takes precedence over the TxAbsIntDelay and 140 RxAbsIntDelay parameters. In other words, minimizing the receive
114 RxAbsIntDelay parameters. In other words, minimizing the receive 141 and/or transmit absolute delays does not force the controller to
115 and/or transmit absolute delays does not force the controller to 142 generate more interrupts than what the Interrupt Throttle Rate
116 generate more interrupts than what the Interrupt Throttle Rate 143 allows.
117 allows. 144
118 CAUTION: If you are using the Intel PRO/1000 CT Network Connection 145CAUTION: If you are using the Intel PRO/1000 CT Network Connection
119 (controller 82547), setting InterruptThrottleRate to a value 146 (controller 82547), setting InterruptThrottleRate to a value
120 greater than 75,000, may hang (stop transmitting) adapters under 147 greater than 75,000, may hang (stop transmitting) adapters
121 certain network conditions. If this occurs a NETDEV WATCHDOG 148 under certain network conditions. If this occurs a NETDEV
122 message is logged in the system event log. In addition, the 149 WATCHDOG message is logged in the system event log. In
123 controller is automatically reset, restoring the network 150 addition, the controller is automatically reset, restoring
124 connection. To eliminate the potential for the hang, ensure 151 the network connection. To eliminate the potential for the
125 that InterruptThrottleRate is set no greater than 75,000 and is 152 hang, ensure that InterruptThrottleRate is set no greater
126 not set to 0. 153 than 75,000 and is not set to 0.
127 NOTE: When e1000 is loaded with default settings and multiple adapters are 154
128 in use simultaneously, the CPU utilization may increase non-linearly. 155NOTE: When e1000 is loaded with default settings and multiple adapters
129 In order to limit the CPU utilization without impacting the overall 156 are in use simultaneously, the CPU utilization may increase non-
130 throughput, we recommend that you load the driver as follows: 157 linearly. In order to limit the CPU utilization without impacting
131 158 the overall throughput, we recommend that you load the driver as
132 insmod e1000.o InterruptThrottleRate=3000,3000,3000 159 follows:
133 160
134 This sets the InterruptThrottleRate to 3000 interrupts/sec for the 161 insmod e1000.o InterruptThrottleRate=3000,3000,3000
135 first, second, and third instances of the driver. The range of 2000 to 162
136 3000 interrupts per second works on a majority of systems and is a 163 This sets the InterruptThrottleRate to 3000 interrupts/sec for
137 good starting point, but the optimal value will be platform-specific. 164 the first, second, and third instances of the driver. The range
138 If CPU utilization is not a concern, use RX_POLLING (NAPI) and default 165 of 2000 to 3000 interrupts per second works on a majority of
139 driver settings. 166 systems and is a good starting point, but the optimal value will
167 be platform-specific. If CPU utilization is not a concern, use
168 RX_POLLING (NAPI) and default driver settings.
169
140 170
141RxDescriptors 171RxDescriptors
142Valid Range: 80-256 for 82542 and 82543-based adapters 172-------------
143 80-4096 for all other supported adapters 173Valid Range: 80-256 for 82542 and 82543-based adapters
174 80-4096 for all other supported adapters
144Default Value: 256 175Default Value: 256
145 This value is the number of receive descriptors allocated by the driver.
146 Increasing this value allows the driver to buffer more incoming packets.
147 Each descriptor is 16 bytes. A receive buffer is allocated for each
148 descriptor and can either be 2048 or 4096 bytes long, depending on the MTU
149 176
150 setting. An incoming packet can span one or more receive descriptors. 177This value specifies the number of receive descriptors allocated by the
151 The maximum MTU size is 16110. 178driver. Increasing this value allows the driver to buffer more incoming
179packets. Each descriptor is 16 bytes. A receive buffer is also
180allocated for each descriptor and is 2048.
152 181
153 NOTE: MTU designates the frame size. It only needs to be set for Jumbo
154 Frames.
155 NOTE: Depending on the available system resources, the request for a
156 higher number of receive descriptors may be denied. In this case,
157 use a lower number.
158 182
159RxIntDelay 183RxIntDelay
160Valid Range: 0-65535 (0=off) 184----------
185Valid Range: 0-65535 (0=off)
161Default Value: 0 186Default Value: 0
162 This value delays the generation of receive interrupts in units of 1.024 187
163 microseconds. Receive interrupt reduction can improve CPU efficiency if 188This value delays the generation of receive interrupts in units of 1.024
164 properly tuned for specific network traffic. Increasing this value adds 189microseconds. Receive interrupt reduction can improve CPU efficiency if
165 extra latency to frame reception and can end up decreasing the throughput 190properly tuned for specific network traffic. Increasing this value adds
166 of TCP traffic. If the system is reporting dropped receives, this value 191extra latency to frame reception and can end up decreasing the throughput
167 may be set too high, causing the driver to run out of available receive 192of TCP traffic. If the system is reporting dropped receives, this value
168 descriptors. 193may be set too high, causing the driver to run out of available receive
169 194descriptors.
170 CAUTION: When setting RxIntDelay to a value other than 0, adapters may 195
171 hang (stop transmitting) under certain network conditions. If 196CAUTION: When setting RxIntDelay to a value other than 0, adapters may
172 this occurs a NETDEV WATCHDOG message is logged in the system 197 hang (stop transmitting) under certain network conditions. If
173 event log. In addition, the controller is automatically reset, 198 this occurs a NETDEV WATCHDOG message is logged in the system
174 restoring the network connection. To eliminate the potential for 199 event log. In addition, the controller is automatically reset,
175 the hang ensure that RxIntDelay is set to 0. 200 restoring the network connection. To eliminate the potential
176 201 for the hang ensure that RxIntDelay is set to 0.
177RxAbsIntDelay (82540, 82545 and later adapters only) 202
178Valid Range: 0-65535 (0=off) 203
204RxAbsIntDelay
205-------------
206(This parameter is supported only on 82540, 82545 and later adapters.)
207Valid Range: 0-65535 (0=off)
179Default Value: 128 208Default Value: 128
180 This value, in units of 1.024 microseconds, limits the delay in which a 209
181 receive interrupt is generated. Useful only if RxIntDelay is non-zero, 210This value, in units of 1.024 microseconds, limits the delay in which a
182 this value ensures that an interrupt is generated after the initial 211receive interrupt is generated. Useful only if RxIntDelay is non-zero,
183 packet is received within the set amount of time. Proper tuning, 212this value ensures that an interrupt is generated after the initial
184 along with RxIntDelay, may improve traffic throughput in specific network 213packet is received within the set amount of time. Proper tuning,
185 conditions. 214along with RxIntDelay, may improve traffic throughput in specific network
186 215conditions.
187Speed (adapters using copper connections only) 216
217
218Speed
219-----
220(This parameter is supported only on adapters with copper connections.)
188Valid Settings: 0, 10, 100, 1000 221Valid Settings: 0, 10, 100, 1000
189Default Value: 0 (auto-negotiate at all supported speeds) 222Default Value: 0 (auto-negotiate at all supported speeds)
190 Speed forces the line speed to the specified value in megabits per second 223
191 (Mbps). If this parameter is not specified or is set to 0 and the link 224Speed forces the line speed to the specified value in megabits per second
192 partner is set to auto-negotiate, the board will auto-detect the correct 225(Mbps). If this parameter is not specified or is set to 0 and the link
193 speed. Duplex should also be set when Speed is set to either 10 or 100. 226partner is set to auto-negotiate, the board will auto-detect the correct
227speed. Duplex should also be set when Speed is set to either 10 or 100.
228
194 229
195TxDescriptors 230TxDescriptors
196Valid Range: 80-256 for 82542 and 82543-based adapters 231-------------
197 80-4096 for all other supported adapters 232Valid Range: 80-256 for 82542 and 82543-based adapters
233 80-4096 for all other supported adapters
198Default Value: 256 234Default Value: 256
199 This value is the number of transmit descriptors allocated by the driver.
200 Increasing this value allows the driver to queue more transmits. Each
201 descriptor is 16 bytes.
202 235
203 NOTE: Depending on the available system resources, the request for a 236This value is the number of transmit descriptors allocated by the driver.
204 higher number of transmit descriptors may be denied. In this case, 237Increasing this value allows the driver to queue more transmits. Each
205 use a lower number. 238descriptor is 16 bytes.
239
240NOTE: Depending on the available system resources, the request for a
241 higher number of transmit descriptors may be denied. In this case,
242 use a lower number.
243
206 244
207TxIntDelay 245TxIntDelay
208Valid Range: 0-65535 (0=off) 246----------
247Valid Range: 0-65535 (0=off)
209Default Value: 64 248Default Value: 64
210 This value delays the generation of transmit interrupts in units of 249
211 1.024 microseconds. Transmit interrupt reduction can improve CPU 250This value delays the generation of transmit interrupts in units of
212 efficiency if properly tuned for specific network traffic. If the 2511.024 microseconds. Transmit interrupt reduction can improve CPU
213 system is reporting dropped transmits, this value may be set too high 252efficiency if properly tuned for specific network traffic. If the
214 causing the driver to run out of available transmit descriptors. 253system is reporting dropped transmits, this value may be set too high
215 254causing the driver to run out of available transmit descriptors.
216TxAbsIntDelay (82540, 82545 and later adapters only) 255
217Valid Range: 0-65535 (0=off) 256
257TxAbsIntDelay
258-------------
259(This parameter is supported only on 82540, 82545 and later adapters.)
260Valid Range: 0-65535 (0=off)
218Default Value: 64 261Default Value: 64
219 This value, in units of 1.024 microseconds, limits the delay in which a 262
220 transmit interrupt is generated. Useful only if TxIntDelay is non-zero, 263This value, in units of 1.024 microseconds, limits the delay in which a
221 this value ensures that an interrupt is generated after the initial 264transmit interrupt is generated. Useful only if TxIntDelay is non-zero,
222 packet is sent on the wire within the set amount of time. Proper tuning, 265this value ensures that an interrupt is generated after the initial
223 along with TxIntDelay, may improve traffic throughput in specific 266packet is sent on the wire within the set amount of time. Proper tuning,
224 network conditions. 267along with TxIntDelay, may improve traffic throughput in specific
225 268network conditions.
226XsumRX (not available on the 82542-based adapter) 269
227Valid Range: 0-1 270XsumRX
271------
272(This parameter is NOT supported on the 82542-based adapter.)
273Valid Range: 0-1
228Default Value: 1 274Default Value: 1
229 A value of '1' indicates that the driver should enable IP checksum 275
230 offload for received packets (both UDP and TCP) to the adapter hardware. 276A value of '1' indicates that the driver should enable IP checksum
277offload for received packets (both UDP and TCP) to the adapter hardware.
278
231 279
232Speed and Duplex Configuration 280Speed and Duplex Configuration
233============================== 281==============================
234 282
235Three keywords are used to control the speed and duplex configuration. These 283Three keywords are used to control the speed and duplex configuration.
236keywords are Speed, Duplex, and AutoNeg. 284These keywords are Speed, Duplex, and AutoNeg.
237 285
238If the board uses a fiber interface, these keywords are ignored, and the 286If the board uses a fiber interface, these keywords are ignored, and the
239fiber interface board only links at 1000 Mbps full-duplex. 287fiber interface board only links at 1000 Mbps full-duplex.
240 288
241For copper-based boards, the keywords interact as follows: 289For copper-based boards, the keywords interact as follows:
242 290
243 The default operation is auto-negotiate. The board advertises all supported 291 The default operation is auto-negotiate. The board advertises all
244 speed and duplex combinations, and it links at the highest common speed and 292 supported speed and duplex combinations, and it links at the highest
245 duplex mode IF the link partner is set to auto-negotiate. 293 common speed and duplex mode IF the link partner is set to auto-negotiate.
246 294
247 If Speed = 1000, limited auto-negotiation is enabled and only 1000 Mbps is 295 If Speed = 1000, limited auto-negotiation is enabled and only 1000 Mbps
248 advertised (The 1000BaseT spec requires auto-negotiation.) 296 is advertised (The 1000BaseT spec requires auto-negotiation.)
249 297
250 If Speed = 10 or 100, then both Speed and Duplex should be set. Auto- 298 If Speed = 10 or 100, then both Speed and Duplex should be set. Auto-
251 negotiation is disabled, and the AutoNeg parameter is ignored. Partner SHOULD 299 negotiation is disabled, and the AutoNeg parameter is ignored. Partner
252 also be forced. 300 SHOULD also be forced.
301
302The AutoNeg parameter is used when more control is required over the
303auto-negotiation process. It should be used when you wish to control which
304speed and duplex combinations are advertised during the auto-negotiation
305process.
306
307The parameter may be specified as either a decimal or hexidecimal value as
308determined by the bitmap below.
253 309
254The AutoNeg parameter is used when more control is required over the auto- 310Bit position 7 6 5 4 3 2 1 0
255negotiation process. When this parameter is used, Speed and Duplex parameters 311Decimal Value 128 64 32 16 8 4 2 1
256must not be specified. The following table describes supported values for the 312Hex value 80 40 20 10 8 4 2 1
257AutoNeg parameter: 313Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10
314Duplex Full Full Half Full Half
258 315
259Speed (Mbps) 1000 100 100 10 10 316Some examples of using AutoNeg:
260Duplex Full Full Half Full Half
261Value (in base 16) 0x20 0x08 0x04 0x02 0x01
262 317
263Example: insmod e1000 AutoNeg=0x03, loads e1000 and specifies (10 full duplex, 318 modprobe e1000 AutoNeg=0x01 (Restricts autonegotiation to 10 Half)
26410 half duplex) for negotiation with the peer. 319 modprobe e1000 AutoNeg=1 (Same as above)
320 modprobe e1000 AutoNeg=0x02 (Restricts autonegotiation to 10 Full)
321 modprobe e1000 AutoNeg=0x03 (Restricts autonegotiation to 10 Half or 10 Full)
322 modprobe e1000 AutoNeg=0x04 (Restricts autonegotiation to 100 Half)
323 modprobe e1000 AutoNeg=0x05 (Restricts autonegotiation to 10 Half or 100
324 Half)
325 modprobe e1000 AutoNeg=0x020 (Restricts autonegotiation to 1000 Full)
326 modprobe e1000 AutoNeg=32 (Same as above)
265 327
266Note that setting AutoNeg does not guarantee that the board will link at the 328Note that when this parameter is used, Speed and Duplex must not be specified.
267highest specified speed or duplex mode, but the board will link at the 329
268highest possible speed/duplex of the link partner IF the link partner is also 330If the link partner is forced to a specific speed and duplex, then this
269set to auto-negotiate. If the link partner is forced speed/duplex, the 331parameter should not be used. Instead, use the Speed and Duplex parameters
270adapter MUST be forced to the same speed/duplex. 332previously mentioned to force the adapter to the same speed and duplex.
271 333
272 334
273Additional Configurations 335Additional Configurations
@@ -276,19 +338,19 @@ Additional Configurations
276 Configuring the Driver on Different Distributions 338 Configuring the Driver on Different Distributions
277 ------------------------------------------------- 339 -------------------------------------------------
278 340
279 Configuring a network driver to load properly when the system is started is 341 Configuring a network driver to load properly when the system is started
280 distribution dependent. Typically, the configuration process involves adding 342 is distribution dependent. Typically, the configuration process involves
281 an alias line to /etc/modules.conf as well as editing other system startup 343 adding an alias line to /etc/modules.conf or /etc/modprobe.conf as well
282 scripts and/or configuration files. Many popular Linux distributions ship 344 as editing other system startup scripts and/or configuration files. Many
283 with tools to make these changes for you. To learn the proper way to 345 popular Linux distributions ship with tools to make these changes for you.
284 configure a network device for your system, refer to your distribution 346 To learn the proper way to configure a network device for your system,
285 documentation. If during this process you are asked for the driver or module 347 refer to your distribution documentation. If during this process you are
286 name, the name for the Linux Base Driver for the Intel PRO/1000 Family of 348 asked for the driver or module name, the name for the Linux Base Driver
287 Adapters is e1000. 349 for the Intel PRO/1000 Family of Adapters is e1000.
288 350
289 As an example, if you install the e1000 driver for two PRO/1000 adapters 351 As an example, if you install the e1000 driver for two PRO/1000 adapters
290 (eth0 and eth1) and set the speed and duplex to 10full and 100half, add the 352 (eth0 and eth1) and set the speed and duplex to 10full and 100half, add
291 following to modules.conf: 353 the following to modules.conf or or modprobe.conf:
292 354
293 alias eth0 e1000 355 alias eth0 e1000
294 alias eth1 e1000 356 alias eth1 e1000
@@ -297,9 +359,9 @@ Additional Configurations
297 Viewing Link Messages 359 Viewing Link Messages
298 --------------------- 360 ---------------------
299 361
300 Link messages will not be displayed to the console if the distribution is 362 Link messages will not be displayed to the console if the distribution is
301 restricting system messages. In order to see network driver link messages on 363 restricting system messages. In order to see network driver link messages
302 your console, set dmesg to eight by entering the following: 364 on your console, set dmesg to eight by entering the following:
303 365
304 dmesg -n 8 366 dmesg -n 8
305 367
@@ -308,22 +370,42 @@ Additional Configurations
308 Jumbo Frames 370 Jumbo Frames
309 ------------ 371 ------------
310 372
311 The driver supports Jumbo Frames for all adapters except 82542-based 373 The driver supports Jumbo Frames for all adapters except 82542 and
312 adapters. Jumbo Frames support is enabled by changing the MTU to a value 374 82573-based adapters. Jumbo Frames support is enabled by changing the
313 larger than the default of 1500. Use the ifconfig command to increase the 375 MTU to a value larger than the default of 1500. Use the ifconfig command
314 MTU size. For example: 376 to increase the MTU size. For example:
377
378 ifconfig eth<x> mtu 9000 up
379
380 This setting is not saved across reboots. It can be made permanent if
381 you add:
382
383 MTU=9000
315 384
316 ifconfig ethx mtu 9000 up 385 to the file /etc/sysconfig/network-scripts/ifcfg-eth<x>. This example
386 applies to the Red Hat distributions; other distributions may store this
387 setting in a different location.
317 388
318 The maximum MTU setting for Jumbo Frames is 16110. This value coincides 389 Notes:
319 with the maximum Jumbo Frames size of 16128.
320 390
321 NOTE: Jumbo Frames are supported at 1000 Mbps only. Using Jumbo Frames at 391 - To enable Jumbo Frames, increase the MTU size on the interface beyond
322 10 or 100 Mbps may result in poor performance or loss of link. 392 1500.
393 - The maximum MTU setting for Jumbo Frames is 16110. This value coincides
394 with the maximum Jumbo Frames size of 16128.
395 - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or
396 loss of link.
397 - Some Intel gigabit adapters that support Jumbo Frames have a frame size
398 limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes.
399 The adapters with this limitation are based on the Intel 82571EB and
400 82572EI controllers, which correspond to these product names:
401 Intel® PRO/1000 PT Dual Port Server Adapter
402 Intel® PRO/1000 PF Dual Port Server Adapter
403 Intel® PRO/1000 PT Server Adapter
404 Intel® PRO/1000 PT Desktop Adapter
405 Intel® PRO/1000 PF Server Adapter
323 406
407 - The Intel PRO/1000 PM Network Connection does not support jumbo frames.
324 408
325 NOTE: MTU designates the frame size. To enable Jumbo Frames, increase the
326 MTU size on the interface beyond 1500.
327 409
328 Ethtool 410 Ethtool
329 ------- 411 -------
@@ -333,32 +415,41 @@ Additional Configurations
333 version 1.6 or later is required for this functionality. 415 version 1.6 or later is required for this functionality.
334 416
335 The latest release of ethtool can be found from 417 The latest release of ethtool can be found from
336 http://sf.net/projects/gkernel. 418 http://sourceforge.net/projects/gkernel.
337 419
338 NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support 420 NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support
339 for a more complete ethtool feature set can be enabled by upgrading 421 for a more complete ethtool feature set can be enabled by upgrading
340 ethtool to ethtool-1.8.1. 422 ethtool to ethtool-1.8.1.
341 423
342 Enabling Wake on LAN* (WoL) 424 Enabling Wake on LAN* (WoL)
343 --------------------------- 425 ---------------------------
344 426
345 WoL is configured through the Ethtool* utility. Ethtool is included with 427 WoL is configured through the Ethtool* utility. Ethtool is included with
346 all versions of Red Hat after Red Hat 7.2. For other Linux distributions, 428 all versions of Red Hat after Red Hat 7.2. For other Linux distributions,
347 download and install Ethtool from the following website: 429 download and install Ethtool from the following website:
348 http://sourceforge.net/projects/gkernel. 430 http://sourceforge.net/projects/gkernel.
349 431
350 For instructions on enabling WoL with Ethtool, refer to the website listed 432 For instructions on enabling WoL with Ethtool, refer to the website listed
351 above. 433 above.
352 434
353 WoL will be enabled on the system during the next shut down or reboot. 435 WoL will be enabled on the system during the next shut down or reboot.
354 For this driver version, in order to enable WoL, the e1000 driver must be 436 For this driver version, in order to enable WoL, the e1000 driver must be
355 loaded when shutting down or rebooting the system. 437 loaded when shutting down or rebooting the system.
356 438
357 NAPI 439 NAPI
358 ---- 440 ----
359 441
360 NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled 442 NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled
361 or disabled based on the configuration of the kernel. 443 or disabled based on the configuration of the kernel. To override
444 the default, use the following compile-time flags.
445
446 To enable NAPI, compile the driver module, passing in a configuration option:
447
448 make CFLAGS_EXTRA=-DE1000_NAPI install
449
450 To disable NAPI, compile the driver module, passing in a configuration option:
451
452 make CFLAGS_EXTRA=-DE1000_NO_NAPI install
362 453
363 See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. 454 See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI.
364 455
@@ -369,10 +460,85 @@ Known Issues
369 Jumbo Frames System Requirement 460 Jumbo Frames System Requirement
370 ------------------------------- 461 -------------------------------
371 462
372 Memory allocation failures have been observed on Linux systems with 64 MB 463 Memory allocation failures have been observed on Linux systems with 64 MB
373 of RAM or less that are running Jumbo Frames. If you are using Jumbo Frames, 464 of RAM or less that are running Jumbo Frames. If you are using Jumbo
374 your system may require more than the advertised minimum requirement of 64 MB 465 Frames, your system may require more than the advertised minimum
375 of system memory. 466 requirement of 64 MB of system memory.
467
468 Performance Degradation with Jumbo Frames
469 -----------------------------------------
470
471 Degradation in throughput performance may be observed in some Jumbo frames
472 environments. If this is observed, increasing the application's socket
473 buffer size and/or increasing the /proc/sys/net/ipv4/tcp_*mem entry values
474 may help. See the specific application manual and
475 /usr/src/linux*/Documentation/
476 networking/ip-sysctl.txt for more details.
477
478 Jumbo frames on Foundry BigIron 8000 switch
479 -------------------------------------------
480 There is a known issue using Jumbo frames when connected to a Foundry
481 BigIron 8000 switch. This is a 3rd party limitation. If you experience
482 loss of packets, lower the MTU size.
483
484 Multiple Interfaces on Same Ethernet Broadcast Network
485 ------------------------------------------------------
486
487 Due to the default ARP behavior on Linux, it is not possible to have
488 one system on two IP networks in the same Ethernet broadcast domain
489 (non-partitioned switch) behave as expected. All Ethernet interfaces
490 will respond to IP traffic for any IP address assigned to the system.
491 This results in unbalanced receive traffic.
492
493 If you have multiple interfaces in a server, either turn on ARP
494 filtering by entering:
495
496 echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
497 (this only works if your kernel's version is higher than 2.4.5),
498
499 NOTE: This setting is not saved across reboots. The configuration
500 change can be made permanent by adding the line:
501 net.ipv4.conf.all.arp_filter = 1
502 to the file /etc/sysctl.conf
503
504 or,
505
506 install the interfaces in separate broadcast domains (either in
507 different switches or in a switch partitioned to VLANs).
508
509 82541/82547 can't link or are slow to link with some link partners
510 -----------------------------------------------------------------
511
512 There is a known compatibility issue with 82541/82547 and some
513 low-end switches where the link will not be established, or will
514 be slow to establish. In particular, these switches are known to
515 be incompatible with 82541/82547:
516
517 Planex FXG-08TE
518 I-O Data ETG-SH8
519
520 To workaround this issue, the driver can be compiled with an override
521 of the PHY's master/slave setting. Forcing master or forcing slave
522 mode will improve time-to-link.
523
524 # make EXTRA_CFLAGS=-DE1000_MASTER_SLAVE=<n>
525
526 Where <n> is:
527
528 0 = Hardware default
529 1 = Master mode
530 2 = Slave mode
531 3 = Auto master/slave
532
533 Disable rx flow control with ethtool
534 ------------------------------------
535
536 In order to disable receive flow control using ethtool, you must turn
537 off auto-negotiation on the same command line.
538
539 For example:
540
541 ethtool -A eth? autoneg off rx off
376 542
377 543
378Support 544Support
@@ -382,20 +548,24 @@ For general information, go to the Intel support website at:
382 548
383 http://support.intel.com 549 http://support.intel.com
384 550
551 or the Intel Wired Networking project hosted by Sourceforge at:
552
553 http://sourceforge.net/projects/e1000
554
385If an issue is identified with the released source code on the supported 555If an issue is identified with the released source code on the supported
386kernel with a supported adapter, email the specific information related to 556kernel with a supported adapter, email the specific information related
387the issue to linux.nics@intel.com. 557to the issue to e1000-devel@lists.sourceforge.net
388 558
389 559
390License 560License
391======= 561=======
392 562
393This software program is released under the terms of a license agreement 563This software program is released under the terms of a license agreement
394between you ('Licensee') and Intel. Do not use or load this software or any 564between you ('Licensee') and Intel. Do not use or load this software or any
395associated materials (collectively, the 'Software') until you have carefully 565associated materials (collectively, the 'Software') until you have carefully
396read the full terms and conditions of the LICENSE located in this software 566read the full terms and conditions of the file COPYING located in this software
397package. By loading or using the Software, you agree to the terms of this 567package. By loading or using the Software, you agree to the terms of this
398Agreement. If you do not agree with the terms of this Agreement, do not 568Agreement. If you do not agree with the terms of this Agreement, do not
399install or use the Software. 569install or use the Software.
400 570
401* Other names and brands may be claimed as the property of others. 571* Other names and brands may be claimed as the property of others.
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 36b511c7cade..1def6049784c 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -513,6 +513,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
513 513
514 This module supports multiple cards and autoprobe. 514 This module supports multiple cards and autoprobe.
515 515
516 The power-management is supported.
517
516 Module snd-ens1371 518 Module snd-ens1371
517 ------------------ 519 ------------------
518 520
@@ -526,6 +528,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
526 528
527 This module supports multiple cards and autoprobe. 529 This module supports multiple cards and autoprobe.
528 530
531 The power-management is supported.
532
529 Module snd-es968 533 Module snd-es968
530 ---------------- 534 ----------------
531 535
@@ -671,6 +675,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
671 675
672 model - force the model name 676 model - force the model name
673 position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size) 677 position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size)
678 single_cmd - Use single immediate commands to communicate with
679 codecs (for debugging only)
674 680
675 This module supports one card and autoprobe. 681 This module supports one card and autoprobe.
676 682
@@ -694,13 +700,34 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
694 asus 3-jack 700 asus 3-jack
695 uniwill 3-jack 701 uniwill 3-jack
696 F1734 2-jack 702 F1734 2-jack
703 lg LG laptop (m1 express dual)
697 test for testing/debugging purpose, almost all controls can be 704 test for testing/debugging purpose, almost all controls can be
698 adjusted. Appearing only when compiled with 705 adjusted. Appearing only when compiled with
699 $CONFIG_SND_DEBUG=y 706 $CONFIG_SND_DEBUG=y
707 auto auto-config reading BIOS (default)
700 708
701 ALC260 709 ALC260
702 hp HP machines 710 hp HP machines
703 fujitsu Fujitsu S7020 711 fujitsu Fujitsu S7020
712 acer Acer TravelMate
713 basic fixed pin assignment (old default model)
714 auto auto-config reading BIOS (default)
715
716 ALC262
717 fujitsu Fujitsu Laptop
718 basic fixed pin assignment w/o SPDIF
719 auto auto-config reading BIOS (default)
720
721 ALC882/883/885
722 3stack-dig 3-jack with SPDIF I/O
723 6stck-dig 6-jack digital with SPDIF I/O
724 auto auto-config reading BIOS (default)
725
726 ALC861
727 3stack 3-jack
728 3stack-dig 3-jack with SPDIF I/O
729 6stack-dig 6-jack with SPDIF I/O
730 auto auto-config reading BIOS (default)
704 731
705 CMI9880 732 CMI9880
706 minimal 3-jack in back 733 minimal 3-jack in back
@@ -710,6 +737,28 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
710 allout 5-jack in back, 2-jack in front, SPDIF out 737 allout 5-jack in back, 2-jack in front, SPDIF out
711 auto auto-config reading BIOS (default) 738 auto auto-config reading BIOS (default)
712 739
740 AD1981
741 basic 3-jack (default)
742 hp HP nx6320
743
744 AD1986A
745 6stack 6-jack, separate surrounds (default)
746 3stack 3-stack, shared surrounds
747 laptop 2-channel only (FSC V2060, Samsung M50)
748 laptop-eapd 2-channel with EAPD (Samsung R65, ASUS A6J)
749
750 AD1988
751 6stack 6-jack
752 6stack-dig ditto with SPDIF
753 3stack 3-jack
754 3stack-dig ditto with SPDIF
755 laptop 3-jack with hp-jack automute
756 laptop-dig ditto with SPDIF
757 auto auto-confgi reading BIOS (default)
758
759 STAC7661(?)
760 vaio Setup for VAIO FE550G/SZ110
761
713 If the default configuration doesn't work and one of the above 762 If the default configuration doesn't work and one of the above
714 matches with your device, report it together with the PCI 763 matches with your device, report it together with the PCI
715 subsystem ID (output of "lspci -nv") to ALSA BTS or alsa-devel 764 subsystem ID (output of "lspci -nv") to ALSA BTS or alsa-devel
@@ -723,6 +772,17 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
723 (Usually SD_LPLIB register is more accurate than the 772 (Usually SD_LPLIB register is more accurate than the
724 position buffer.) 773 position buffer.)
725 774
775 NB: If you get many "azx_get_response timeout" messages at
776 loading, it's likely a problem of interrupts (e.g. ACPI irq
777 routing). Try to boot with options like "pci=noacpi". Also, you
778 can try "single_cmd=1" module option. This will switch the
779 communication method between HDA controller and codecs to the
780 single immediate commands instead of CORB/RIRB. Basically, the
781 single command mode is provided only for BIOS, and you won't get
782 unsolicited events, too. But, at least, this works independently
783 from the irq. Remember this is a last resort, and should be
784 avoided as much as possible...
785
726 The power-management is supported. 786 The power-management is supported.
727 787
728 Module snd-hdsp 788 Module snd-hdsp
@@ -802,6 +862,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
802 ------------------ 862 ------------------
803 863
804 Module for Envy24HT (VT/ICE1724), Envy24PT (VT1720) based PCI sound cards. 864 Module for Envy24HT (VT/ICE1724), Envy24PT (VT1720) based PCI sound cards.
865 * MidiMan M Audio Revolution 5.1
805 * MidiMan M Audio Revolution 7.1 866 * MidiMan M Audio Revolution 7.1
806 * AMP Ltd AUDIO2000 867 * AMP Ltd AUDIO2000
807 * TerraTec Aureon 5.1 Sky 868 * TerraTec Aureon 5.1 Sky
@@ -810,6 +871,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
810 * TerraTec Phase 22 871 * TerraTec Phase 22
811 * TerraTec Phase 28 872 * TerraTec Phase 28
812 * AudioTrak Prodigy 7.1 873 * AudioTrak Prodigy 7.1
874 * AudioTrak Prodigy 7.1LT
813 * AudioTrak Prodigy 192 875 * AudioTrak Prodigy 192
814 * Pontis MS300 876 * Pontis MS300
815 * Albatron K8X800 Pro II 877 * Albatron K8X800 Pro II
@@ -820,9 +882,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
820 * Shuttle SN25P 882 * Shuttle SN25P
821 883
822 model - Use the given board model, one of the following: 884 model - Use the given board model, one of the following:
823 revo71, amp2000, prodigy71, prodigy192, aureon51, 885 revo51, revo71, amp2000, prodigy71, prodigy71lt,
824 aureon71, universe, k8x800, phase22, phase28, ms300, 886 prodigy192, aureon51, aureon71, universe,
825 av710 887 k8x800, phase22, phase28, ms300, av710
826 888
827 This module supports multiple cards and autoprobe. 889 This module supports multiple cards and autoprobe.
828 890
@@ -1353,6 +1415,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1353 1415
1354 vid - Vendor ID for the device (optional) 1416 vid - Vendor ID for the device (optional)
1355 pid - Product ID for the device (optional) 1417 pid - Product ID for the device (optional)
1418 device_setup - Device specific magic number (optional)
1419 - Influence depends on the device
1420 - Default: 0x0000
1356 1421
1357 This module supports multiple devices, autoprobe and hotplugging. 1422 This module supports multiple devices, autoprobe and hotplugging.
1358 1423
diff --git a/Documentation/sound/alsa/Audiophile-Usb.txt b/Documentation/sound/alsa/Audiophile-Usb.txt
new file mode 100644
index 000000000000..4692c8e77dc1
--- /dev/null
+++ b/Documentation/sound/alsa/Audiophile-Usb.txt
@@ -0,0 +1,333 @@
1 Guide to using M-Audio Audiophile USB with ALSA and Jack v1.2
2 ========================================================
3
4 Thibault Le Meur <Thibault.LeMeur@supelec.fr>
5
6This document is a guide to using the M-Audio Audiophile USB (tm) device with
7ALSA and JACK.
8
91 - Audiophile USB Specs and correct usage
10==========================================
11This part is a reminder of important facts about the functions and limitations
12of the device.
13
14The device has 4 audio interfaces, and 2 MIDI ports:
15 * Analog Stereo Input (Ai)
16 - This port supports 2 pairs of line-level audio inputs (1/4" TS and RCA)
17 - When the 1/4" TS (jack) connectors are connected, the RCA connectors
18 are disabled
19 * Analog Stereo Output (Ao)
20 * Digital Stereo Input (Di)
21 * Digital Stereo Output (Do)
22 * Midi In (Mi)
23 * Midi Out (Mo)
24
25The internal DAC/ADC has the following caracteristics:
26* sample depth of 16 or 24 bits
27* sample rate from 8kHz to 96kHz
28* Two ports can't use different sample depths at the same time.Moreover, the
29Audiophile USB documentation gives the following Warning: "Please exit any
30audio application running before switching between bit depths"
31
32Due to the USB 1.1 bandwidth limitation, a limited number of interfaces can be
33activated at the same time depending on the audio mode selected:
34 * 16-bit/48kHz ==> 4 channels in/ 4 channels out
35 - Ai+Ao+Di+Do
36 * 24-bit/48kHz ==> 4 channels in/2 channels out,
37 or 2 channels in/4 channels out
38 - Ai+Ao+Do or Ai+Di+Ao or Ai+Di+Do or Di+Ao+Do
39 * 24-bit/96kHz ==> 2 channels in, or 2 channels out (half duplex only)
40 - Ai or Ao or Di or Do
41
42Important facts about the Digital interface:
43--------------------------------------------
44 * The Do port additionnaly supports surround-encoded AC-3 and DTS passthrough,
45though I haven't tested it under linux
46 - Note that in this setup only the Do interface can be enabled
47 * Apart from recording an audio digital stream, enabling the Di port is a way
48to synchronize the device to an external sample clock
49 - As a consequence, the Di port must be enable only if an active Digital
50source is connected
51 - Enabling Di when no digital source is connected can result in a
52synchronization error (for instance sound played at an odd sample rate)
53
54
552 - Audiophile USB support in ALSA
56==================================
57
582.1 - MIDI ports
59----------------
60The Audiophile USB MIDI ports will be automatically supported once the
61following modules have been loaded:
62 * snd-usb-audio
63 * snd-seq
64 * snd-seq-midi
65
66No additionnal setting is required.
67
682.2 - Audio ports
69-----------------
70
71Audio functions of the Audiophile USB device are handled by the snd-usb-audio
72module. This module can work in a default mode (without any device-specific
73parameter), or in an advanced mode with the device-specific parameter called
74"device_setup".
75
762.2.1 - Default Alsa driver mode
77
78The default behaviour of the snd-usb-audio driver is to parse the device
79capabilities at startup and enable all functions inside the device (including
80all ports at any sample rates and any sample depths supported). This approach
81has the advantage to let the driver easily switch from sample rates/depths
82automatically according to the need of the application claiming the device.
83
84In this case the Audiophile ports are mapped to alsa pcm devices in the
85following way (I suppose the device's index is 1):
86 * hw:1,0 is Ao in playback and Di in capture
87 * hw:1,1 is Do in playback and Ai in capture
88 * hw:1,2 is Do in AC3/DTS passthrough mode
89
90You must note as well that the device uses Big Endian byte encoding so that
91supported audio format are S16_BE for 16-bit depth modes and S24_3BE for
9224-bits depth mode. One exception is the hw:1,2 port which is Little Endian
93compliant and thus uses S16_LE.
94
95Examples:
96 * playing a S24_3BE encoded raw file to the Ao port
97 % aplay -D hw:1,0 -c2 -t raw -r48000 -fS24_3BE test.raw
98 * recording a S24_3BE encoded raw file from the Ai port
99 % arecord -D hw:1,1 -c2 -t raw -r48000 -fS24_3BE test.raw
100 * playing a S16_BE encoded raw file to the Do port
101 % aplay -D hw:1,1 -c2 -t raw -r48000 -fS16_BE test.raw
102
103If you're happy with the default Alsa driver setup and don't experience any
104issue with this mode, then you can skip the following chapter.
105
1062.2.2 - Advanced module setup
107
108Due to the hardware constraints described above, the device initialization made
109by the Alsa driver in default mode may result in a corrupted state of the
110device. For instance, a particularly annoying issue is that the sound captured
111from the Ai port sounds distorted (as if boosted with an excessive high volume
112gain).
113
114For people having this problem, the snd-usb-audio module has a new module
115parameter called "device_setup".
116
1172.2.2.1 - Initializing the working mode of the Audiohile USB
118
119As far as the Audiohile USB device is concerned, this value let the user
120specify:
121 * the sample depth
122 * the sample rate
123 * whether the Di port is used or not
124
125Here is a list of supported device_setup values for this device:
126 * device_setup=0x00 (or omitted)
127 - Alsa driver default mode
128 - maintains backward compatibility with setups that do not use this
129 parameter by not introducing any change
130 - results sometimes in corrupted sound as decribed earlier
131 * device_setup=0x01
132 - 16bits 48kHz mode with Di disabled
133 - Ai,Ao,Do can be used at the same time
134 - hw:1,0 is not available in capture mode
135 - hw:1,2 is not available
136 * device_setup=0x11
137 - 16bits 48kHz mode with Di enabled
138 - Ai,Ao,Di,Do can be used at the same time
139 - hw:1,0 is available in capture mode
140 - hw:1,2 is not available
141 * device_setup=0x09
142 - 24bits 48kHz mode with Di disabled
143 - Ai,Ao,Do can be used at the same time
144 - hw:1,0 is not available in capture mode
145 - hw:1,2 is not available
146 * device_setup=0x19
147 - 24bits 48kHz mode with Di enabled
148 - 3 ports from {Ai,Ao,Di,Do} can be used at the same time
149 - hw:1,0 is available in capture mode and an active digital source must be
150 connected to Di
151 - hw:1,2 is not available
152 * device_setup=0x0D or 0x10
153 - 24bits 96kHz mode
154 - Di is enabled by default for this mode but does not need to be connected
155 to an active source
156 - Only 1 port from {Ai,Ao,Di,Do} can be used at the same time
157 - hw:1,0 is available in captured mode
158 - hw:1,2 is not available
159 * device_setup=0x03
160 - 16bits 48kHz mode with only the Do port enabled
161 - AC3 with DTS passthru (not tested)
162 - Caution with this setup the Do port is mapped to the pcm device hw:1,0
163
1642.2.2.2 - Setting and switching configurations with the device_setup parameter
165
166The parameter can be given:
167 * By manually probing the device (as root):
168 # modprobe -r snd-usb-audio
169 # modprobe snd-usb-audio index=1 device_setup=0x09
170 * Or while configuring the modules options in your modules configuration file
171 - For Fedora distributions, edit the /etc/modprobe.conf file:
172 alias snd-card-1 snd-usb-audio
173 options snd-usb-audio index=1 device_setup=0x09
174
175IMPORTANT NOTE WHEN SWITCHING CONFIGURATION:
176-------------------------------------------
177 * You may need to _first_ intialize the module with the correct device_setup
178 parameter and _only_after_ turn on the Audiophile USB device
179 * This is especially true when switching the sample depth:
180 - first trun off the device
181 - de-register the snd-usb-audio module
182 - change the device_setup parameter (by either manually reprobing the module
183 or changing modprobe.conf)
184 - turn on the device
185
1862.2.2.3 - Audiophile USB's device_setup structure
187
188If you want to understand the device_setup magic numbers for the Audiophile
189USB, you need some very basic understanding of binary computation. However,
190this is not required to use the parameter and you may skip thi section.
191
192The device_setup is one byte long and its structure is the following:
193
194 +---+---+---+---+---+---+---+---+
195 | b7| b6| b5| b4| b3| b2| b1| b0|
196 +---+---+---+---+---+---+---+---+
197 | 0 | 0 | 0 | Di|24B|96K|DTS|SET|
198 +---+---+---+---+---+---+---+---+
199
200Where:
201 * b0 is the "SET" bit
202 - it MUST be set if device_setup is initialized
203 * b1 is the "DTS" bit
204 - it is set only for Digital output with DTS/AC3
205 - this setup is not tested
206 * b2 is the Rate selection flag
207 - When set to "1" the rate range is 48.1-96kHz
208 - Otherwise the sample rate range is 8-48kHz
209 * b3 is the bit depth selection flag
210 - When set to "1" samples are 24bits long
211 - Otherwise they are 16bits long
212 - Note that b2 implies b3 as the 96kHz mode is only supported for 24 bits
213 samples
214 * b4 is the Digital input flag
215 - When set to "1" the device assumes that an active digital source is
216 connected
217 - You shouldn't enable Di if no source is seen on the port (this leads to
218 synchronization issues)
219 - b4 is implied by b2 (since only one port is enabled at a time no synch
220 error can occur)
221 * b5 to b7 are reserved for future uses, and must be set to "0"
222 - might become Ao, Do, Ai, for b7, b6, b4 respectively
223
224Caution:
225 * there is no check on the value you will give to device_setup
226 - for instance choosing 0x05 (16bits 96kHz) will fail back to 0x09 since
227 b2 implies b3. But _there_will_be_no_warning_ in /var/log/messages
228 * Hardware constraints due to the USB bus limitation aren't checked
229 - choosing b2 will prepare all interfaces for 24bits/96kHz but you'll
230 only be able to use one at the same time
231
2322.2.3 - USB implementation details for this device
233
234You may safely skip this section if you're not interrested in driver
235development.
236
237This section describes some internals aspect of the device and summarize the
238data I got by usb-snooping the windows and linux drivers.
239
240The M-Audio Audiophile USB has 7 USB Interfaces:
241a "USB interface":
242 * USB Interface nb.0
243 * USB Interface nb.1
244 - Audio Control function
245 * USB Interface nb.2
246 - Analog Output
247 * USB Interface nb.3
248 - Digital Output
249 * USB Interface nb.4
250 - Analog Input
251 * USB Interface nb.5
252 - Digital Input
253 * USB Interface nb.6
254 - MIDI interface compliant with the MIDIMAN quirk
255
256Each interface has 5 altsettings (AltSet 1,2,3,4,5) except:
257 * Interface 3 (Digital Out) has an extra Alset nb.6
258 * Interface 5 (Digital In) does not have Alset nb.3 and 5
259
260Here is a short description of the AltSettings capabilities:
261 * AltSettings 1 corresponds to
262 - 24-bit depth, 48.1-96kHz sample mode
263 - Adaptive playback (Ao and Do), Synch capture (Ai), or Asynch capture (Di)
264 * AltSettings 2 corresponds to
265 - 24-bit depth, 8-48kHz sample mode
266 - Asynch capture and playback (Ao,Ai,Do,Di)
267 * AltSettings 3 corresponds to
268 - 24-bit depth, 8-48kHz sample mode
269 - Synch capture (Ai) and Adaptive playback (Ao,Do)
270 * AltSettings 4 corresponds to
271 - 16-bit depth, 8-48kHz sample mode
272 - Asynch capture and playback (Ao,Ai,Do,Di)
273 * AltSettings 5 corresponds to
274 - 16-bit depth, 8-48kHz sample mode
275 - Synch capture (Ai) and Adaptive playback (Ao,Do)
276 * AltSettings 6 corresponds to
277 - 16-bit depth, 8-48kHz sample mode
278 - Synch playback (Do), audio format type III IEC1937_AC-3
279
280In order to ensure a correct intialization of the device, the driver
281_must_know_ how the device will be used:
282 * if DTS is choosen, only Interface 2 with AltSet nb.6 must be
283 registered
284 * if 96KHz only AltSets nb.1 of each interface must be selected
285 * if samples are using 24bits/48KHz then AltSet 2 must me used if
286 Digital input is connected, and only AltSet nb.3 if Digital input
287 is not connected
288 * if samples are using 16bits/48KHz then AltSet 4 must me used if
289 Digital input is connected, and only AltSet nb.5 if Digital input
290 is not connected
291
292When device_setup is given as a parameter to the snd-usb-audio module, the
293parse_audio_enpoint function uses a quirk called
294"audiophile_skip_setting_quirk" in order to prevent AltSettings not
295corresponding to device_setup from being registered in the driver.
296
2973 - Audiophile USB and Jack support
298===================================
299
300This section deals with support of the Audiophile USB device in Jack.
301The main issue regarding this support is that the device is Big Endian
302compliant.
303
3043.1 - Using the plug alsa plugin
305--------------------------------
306
307Jack doesn't directly support big endian devices. Thus, one way to have support
308for this device with Alsa is to use the Alsa "plug" converter.
309
310For instance here is one way to run Jack with 2 playback channels on Ao and 2
311capture channels from Ai:
312 % jackd -R -dalsa -dplughw:1 -r48000 -p256 -n2 -D -Cplughw:1,1
313
314
315However you may see the following warning message:
316"You appear to be using the ALSA software "plug" layer, probably a result of
317using the "default" ALSA device. This is less efficient than it could be.
318Consider using a hardware device instead rather than using the plug layer."
319
320
3213.2 - Patching alsa to use direct pcm device
322-------------------------------------------
323A patch for Jack by Andreas Steinmetz adds support for Big Endian devices.
324However it has not been included in the CVS tree.
325
326You can find it at the following URL:
327http://sourceforge.net/tracker/index.php?func=detail&aid=1289682&group_id=39687&
328atid=425939
329
330After having applied the patch you can run jackd with the following command
331line:
332 % jackd -R -dalsa -Phw:1,0 -r48000 -p128 -n2 -D -Chw:1,1
333
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
index 4251085d38d3..6dc9d9f622ca 100644
--- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
@@ -1834,7 +1834,7 @@
1834 mychip_set_sample_format(chip, runtime->format); 1834 mychip_set_sample_format(chip, runtime->format);
1835 mychip_set_sample_rate(chip, runtime->rate); 1835 mychip_set_sample_rate(chip, runtime->rate);
1836 mychip_set_channels(chip, runtime->channels); 1836 mychip_set_channels(chip, runtime->channels);
1837 mychip_set_dma_setup(chip, runtime->dma_area, 1837 mychip_set_dma_setup(chip, runtime->dma_addr,
1838 chip->buffer_size, 1838 chip->buffer_size,
1839 chip->period_size); 1839 chip->period_size);
1840 return 0; 1840 return 0;
@@ -3388,7 +3388,7 @@ struct _snd_pcm_runtime {
3388 .name = "PCM Playback Switch", 3388 .name = "PCM Playback Switch",
3389 .index = 0, 3389 .index = 0,
3390 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, 3390 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3391 .private_values = 0xffff, 3391 .private_value = 0xffff,
3392 .info = my_control_info, 3392 .info = my_control_info,
3393 .get = my_control_get, 3393 .get = my_control_get,
3394 .put = my_control_put 3394 .put = my_control_put
@@ -3449,7 +3449,7 @@ struct _snd_pcm_runtime {
3449 </para> 3449 </para>
3450 3450
3451 <para> 3451 <para>
3452 The <structfield>private_values</structfield> field contains 3452 The <structfield>private_value</structfield> field contains
3453 an arbitrary long integer value for this record. When using 3453 an arbitrary long integer value for this record. When using
3454 generic <structfield>info</structfield>, 3454 generic <structfield>info</structfield>,
3455 <structfield>get</structfield> and 3455 <structfield>get</structfield> and
diff --git a/Documentation/spinlocks.txt b/Documentation/spinlocks.txt
index c2122996631e..a661d684768e 100644
--- a/Documentation/spinlocks.txt
+++ b/Documentation/spinlocks.txt
@@ -9,7 +9,7 @@ removed soon. So for any new code dynamic initialization should be used:
9 static int __init xxx_init(void) 9 static int __init xxx_init(void)
10 { 10 {
11 spin_lock_init(&xxx_lock); 11 spin_lock_init(&xxx_lock);
12 rw_lock_init(&xxx_rw_lock); 12 rwlock_init(&xxx_rw_lock);
13 ... 13 ...
14 } 14 }
15 15