diff options
| -rw-r--r-- | Documentation/networking/e1000.txt | 620 |
1 files changed, 395 insertions, 225 deletions
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 @@ | |||
| 1 | Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters | 1 | Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters |
| 2 | =============================================================== | 2 | =============================================================== |
| 3 | 3 | ||
| 4 | November 17, 2004 | 4 | November 15, 2005 |
| 5 | 5 | ||
| 6 | 6 | ||
| 7 | Contents | 7 | Contents |
| @@ -20,254 +20,316 @@ In This Release | |||
| 20 | =============== | 20 | =============== |
| 21 | 21 | ||
| 22 | This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family | 22 | This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family |
| 23 | of Adapters, version 5.x.x. | 23 | of Adapters. This driver includes support for Itanium(R)2-based systems. |
| 24 | 24 | ||
| 25 | For questions related to hardware requirements, refer to the documentation | 25 | For questions related to hardware requirements, refer to the documentation |
| 26 | supplied with your Intel PRO/1000 adapter. All hardware requirements listed | 26 | supplied with your Intel PRO/1000 adapter. All hardware requirements listed |
| 27 | apply to use with Linux. | 27 | apply to use with Linux. |
| 28 | 28 | ||
| 29 | Native VLANs are now available with supported kernels. | 29 | The following features are now available in supported kernels: |
| 30 | - Native VLANs | ||
| 31 | - Channel Bonding (teaming) | ||
| 32 | - SNMP | ||
| 33 | |||
| 34 | Channel Bonding documentation can be found in the Linux kernel source: | ||
| 35 | /Documentation/networking/bonding.txt | ||
| 36 | |||
| 37 | The driver information previously displayed in the /proc filesystem is not | ||
| 38 | supported in this release. Alternatively, you can use ethtool (version 1.6 | ||
| 39 | or later), lspci, and ifconfig to obtain the same information. | ||
| 40 | |||
| 41 | Instructions on updating ethtool can be found in the section "Additional | ||
| 42 | Configurations" later in this document. | ||
| 43 | |||
| 30 | 44 | ||
| 31 | Identifying Your Adapter | 45 | Identifying Your Adapter |
| 32 | ======================== | 46 | ======================== |
| 33 | 47 | ||
| 34 | For more information on how to identify your adapter, go to the Adapter & | 48 | For more information on how to identify your adapter, go to the Adapter & |
| 35 | Driver ID Guide at: | 49 | Driver 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 | ||
| 39 | For the latest Intel network drivers for Linux, refer to the following | 53 | For the latest Intel network drivers for Linux, refer to the following |
| 40 | website. In the search field, enter your adapter name or type, or use the | 54 | website. In the search field, enter your adapter name or type, or use the |
| 41 | networking link on the left to search for your adapter: | 55 | networking 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 | ||
| 45 | Command Line Parameters | ||
| 46 | ======================= | ||
| 47 | 59 | ||
| 48 | If the driver is built as a module, the following optional parameters are | 60 | Command Line Parameters ======================= |
| 49 | used by entering them on the command line with the modprobe or insmod command | 61 | |
| 50 | using this syntax: | 62 | If the driver is built as a module, the following optional parameters |
| 63 | are used by entering them on the command line with the modprobe or insmod | ||
| 64 | command 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 | ||
| 56 | For example, with two PRO/1000 PCI adapters, entering: | 70 | For example, with two PRO/1000 PCI adapters, entering: |
| 57 | 71 | ||
| 58 | insmod e1000 TxDescriptors=80,128 | 72 | insmod e1000 TxDescriptors=80,128 |
| 59 | 73 | ||
| 60 | loads the e1000 driver with 80 TX descriptors for the first adapter and 128 TX | 74 | loads the e1000 driver with 80 TX descriptors for the first adapter and 128 |
| 61 | descriptors for the second adapter. | 75 | TX descriptors for the second adapter. |
| 62 | 76 | ||
| 63 | The default value for each parameter is generally the recommended setting, | 77 | The default value for each parameter is generally the recommended setting, |
| 64 | unless otherwise noted. Also, if the driver is statically built into the | 78 | unless otherwise noted. |
| 65 | kernel, the driver is loaded with the default values for all the parameters. | 79 | |
| 66 | Ethtool can be used to change some of the parameters at runtime. | 80 | NOTES: 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 | ||
| 80 | AutoNeg (adapters using copper connections only) | 93 | AutoNeg |
| 81 | Valid Range: 0x01-0x0F, 0x20-0x2F | 94 | ------- |
| 95 | (Supported only on adapters with copper connections) | ||
| 96 | Valid Range: 0x01-0x0F, 0x20-0x2F | ||
| 82 | Default Value: 0x2F | 97 | Default 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 | 99 | This parameter is a bit mask that specifies which speed and duplex |
| 85 | Duplex parameters must not be specified. | 100 | settings the board advertises. When this parameter is used, the Speed |
| 86 | NOTE: Refer to the Speed and Duplex section of this readme for more | 101 | and Duplex parameters must not be specified. |
| 87 | information on the AutoNeg parameter. | 102 | |
| 88 | 103 | NOTE: Refer to the Speed and Duplex section of this readme for more | |
| 89 | Duplex (adapters using copper connections only) | 104 | information on the AutoNeg parameter. |
| 90 | Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full) | 105 | |
| 106 | |||
| 107 | Duplex | ||
| 108 | ------ | ||
| 109 | (Supported only on adapters with copper connections) | ||
| 110 | Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full) | ||
| 91 | Default Value: 0 | 111 | Default 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- | 113 | Defines 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 | 114 | one 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. | 115 | auto-negotiate, the board auto-detects the correct duplex. If the link |
| 116 | partner is forced (either full or half), Duplex defaults to half-duplex. | ||
| 117 | |||
| 96 | 118 | ||
| 97 | FlowControl | 119 | FlowControl |
| 98 | Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) | 120 | ---------- |
| 99 | Default: Read flow control settings from the EEPROM | 121 | Valid 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 | 122 | Default Value: Reads flow control settings from the EEPROM |
| 101 | Ethernet PAUSE frames. | 123 | |
| 124 | This parameter controls the automatic generation(Tx) and response(Rx) | ||
| 125 | to Ethernet PAUSE frames. | ||
| 126 | |||
| 102 | 127 | ||
| 103 | InterruptThrottleRate | 128 | InterruptThrottleRate |
| 104 | Valid Range: 100-100000 (0=off, 1=dynamic) | 129 | --------------------- |
| 130 | (not supported on Intel 82542, 82543 or 82544-based adapters) | ||
| 131 | Valid Range: 100-100000 (0=off, 1=dynamic) | ||
| 105 | Default Value: 8000 | 132 | Default Value: 8000 |
| 106 | This value represents the maximum number of interrupts per second the | 133 | |
| 107 | controller generates. InterruptThrottleRate is another setting used in | 134 | This value represents the maximum number of interrupts per second the |
| 108 | interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust | 135 | controller generates. InterruptThrottleRate is another setting used in |
| 109 | InterruptThrottleRate based on the current traffic load. | 136 | interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust |
| 110 | Un-supported Adapters: InterruptThrottleRate is NOT supported by 82542, 82543 | 137 | InterruptThrottleRate based on the current traffic load. |
| 111 | or 82544-based adapters. | 138 | |
| 112 | 139 | NOTE: 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 | 145 | CAUTION: 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. | 155 | NOTE: 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 | ||
| 141 | RxDescriptors | 171 | RxDescriptors |
| 142 | Valid Range: 80-256 for 82542 and 82543-based adapters | 172 | ------------- |
| 143 | 80-4096 for all other supported adapters | 173 | Valid Range: 80-256 for 82542 and 82543-based adapters |
| 174 | 80-4096 for all other supported adapters | ||
| 144 | Default Value: 256 | 175 | Default 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. | 177 | This value specifies the number of receive descriptors allocated by the |
| 151 | The maximum MTU size is 16110. | 178 | driver. Increasing this value allows the driver to buffer more incoming |
| 179 | packets. Each descriptor is 16 bytes. A receive buffer is also | ||
| 180 | allocated 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 | ||
| 159 | RxIntDelay | 183 | RxIntDelay |
| 160 | Valid Range: 0-65535 (0=off) | 184 | ---------- |
| 185 | Valid Range: 0-65535 (0=off) | ||
| 161 | Default Value: 0 | 186 | Default 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 | 188 | This value delays the generation of receive interrupts in units of 1.024 |
| 164 | properly tuned for specific network traffic. Increasing this value adds | 189 | microseconds. Receive interrupt reduction can improve CPU efficiency if |
| 165 | extra latency to frame reception and can end up decreasing the throughput | 190 | properly tuned for specific network traffic. Increasing this value adds |
| 166 | of TCP traffic. If the system is reporting dropped receives, this value | 191 | extra 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 | 192 | of TCP traffic. If the system is reporting dropped receives, this value |
| 168 | descriptors. | 193 | may be set too high, causing the driver to run out of available receive |
| 169 | 194 | descriptors. | |
| 170 | CAUTION: When setting RxIntDelay to a value other than 0, adapters may | 195 | |
| 171 | hang (stop transmitting) under certain network conditions. If | 196 | CAUTION: 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. | |
| 177 | RxAbsIntDelay (82540, 82545 and later adapters only) | 202 | |
| 178 | Valid Range: 0-65535 (0=off) | 203 | |
| 204 | RxAbsIntDelay | ||
| 205 | ------------- | ||
| 206 | (This parameter is supported only on 82540, 82545 and later adapters.) | ||
| 207 | Valid Range: 0-65535 (0=off) | ||
| 179 | Default Value: 128 | 208 | Default 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, | 210 | This 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 | 211 | receive interrupt is generated. Useful only if RxIntDelay is non-zero, |
| 183 | packet is received within the set amount of time. Proper tuning, | 212 | this value ensures that an interrupt is generated after the initial |
| 184 | along with RxIntDelay, may improve traffic throughput in specific network | 213 | packet is received within the set amount of time. Proper tuning, |
| 185 | conditions. | 214 | along with RxIntDelay, may improve traffic throughput in specific network |
| 186 | 215 | conditions. | |
| 187 | Speed (adapters using copper connections only) | 216 | |
| 217 | |||
| 218 | Speed | ||
| 219 | ----- | ||
| 220 | (This parameter is supported only on adapters with copper connections.) | ||
| 188 | Valid Settings: 0, 10, 100, 1000 | 221 | Valid Settings: 0, 10, 100, 1000 |
| 189 | Default Value: 0 (auto-negotiate at all supported speeds) | 222 | Default 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 | 224 | Speed 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. | 226 | partner is set to auto-negotiate, the board will auto-detect the correct |
| 227 | speed. Duplex should also be set when Speed is set to either 10 or 100. | ||
| 228 | |||
| 194 | 229 | ||
| 195 | TxDescriptors | 230 | TxDescriptors |
| 196 | Valid Range: 80-256 for 82542 and 82543-based adapters | 231 | ------------- |
| 197 | 80-4096 for all other supported adapters | 232 | Valid Range: 80-256 for 82542 and 82543-based adapters |
| 233 | 80-4096 for all other supported adapters | ||
| 198 | Default Value: 256 | 234 | Default 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 | 236 | This value is the number of transmit descriptors allocated by the driver. |
| 204 | higher number of transmit descriptors may be denied. In this case, | 237 | Increasing this value allows the driver to queue more transmits. Each |
| 205 | use a lower number. | 238 | descriptor is 16 bytes. |
| 239 | |||
| 240 | NOTE: 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 | ||
| 207 | TxIntDelay | 245 | TxIntDelay |
| 208 | Valid Range: 0-65535 (0=off) | 246 | ---------- |
| 247 | Valid Range: 0-65535 (0=off) | ||
| 209 | Default Value: 64 | 248 | Default 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 | 250 | This value delays the generation of transmit interrupts in units of |
| 212 | efficiency if properly tuned for specific network traffic. If the | 251 | 1.024 microseconds. Transmit interrupt reduction can improve CPU |
| 213 | system is reporting dropped transmits, this value may be set too high | 252 | efficiency if properly tuned for specific network traffic. If the |
| 214 | causing the driver to run out of available transmit descriptors. | 253 | system is reporting dropped transmits, this value may be set too high |
| 215 | 254 | causing the driver to run out of available transmit descriptors. | |
| 216 | TxAbsIntDelay (82540, 82545 and later adapters only) | 255 | |
| 217 | Valid Range: 0-65535 (0=off) | 256 | |
| 257 | TxAbsIntDelay | ||
| 258 | ------------- | ||
| 259 | (This parameter is supported only on 82540, 82545 and later adapters.) | ||
| 260 | Valid Range: 0-65535 (0=off) | ||
| 218 | Default Value: 64 | 261 | Default 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, | 263 | This 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 | 264 | transmit 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, | 265 | this value ensures that an interrupt is generated after the initial |
| 223 | along with TxIntDelay, may improve traffic throughput in specific | 266 | packet is sent on the wire within the set amount of time. Proper tuning, |
| 224 | network conditions. | 267 | along with TxIntDelay, may improve traffic throughput in specific |
| 225 | 268 | network conditions. | |
| 226 | XsumRX (not available on the 82542-based adapter) | 269 | |
| 227 | Valid Range: 0-1 | 270 | XsumRX |
| 271 | ------ | ||
| 272 | (This parameter is NOT supported on the 82542-based adapter.) | ||
| 273 | Valid Range: 0-1 | ||
| 228 | Default Value: 1 | 274 | Default 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. | 276 | A value of '1' indicates that the driver should enable IP checksum |
| 277 | offload for received packets (both UDP and TCP) to the adapter hardware. | ||
| 278 | |||
| 231 | 279 | ||
| 232 | Speed and Duplex Configuration | 280 | Speed and Duplex Configuration |
| 233 | ============================== | 281 | ============================== |
| 234 | 282 | ||
| 235 | Three keywords are used to control the speed and duplex configuration. These | 283 | Three keywords are used to control the speed and duplex configuration. |
| 236 | keywords are Speed, Duplex, and AutoNeg. | 284 | These keywords are Speed, Duplex, and AutoNeg. |
| 237 | 285 | ||
| 238 | If the board uses a fiber interface, these keywords are ignored, and the | 286 | If the board uses a fiber interface, these keywords are ignored, and the |
| 239 | fiber interface board only links at 1000 Mbps full-duplex. | 287 | fiber interface board only links at 1000 Mbps full-duplex. |
| 240 | 288 | ||
| 241 | For copper-based boards, the keywords interact as follows: | 289 | For 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 | |||
| 302 | The AutoNeg parameter is used when more control is required over the | ||
| 303 | auto-negotiation process. It should be used when you wish to control which | ||
| 304 | speed and duplex combinations are advertised during the auto-negotiation | ||
| 305 | process. | ||
| 306 | |||
| 307 | The parameter may be specified as either a decimal or hexidecimal value as | ||
| 308 | determined by the bitmap below. | ||
| 253 | 309 | ||
| 254 | The AutoNeg parameter is used when more control is required over the auto- | 310 | Bit position 7 6 5 4 3 2 1 0 |
| 255 | negotiation process. When this parameter is used, Speed and Duplex parameters | 311 | Decimal Value 128 64 32 16 8 4 2 1 |
| 256 | must not be specified. The following table describes supported values for the | 312 | Hex value 80 40 20 10 8 4 2 1 |
| 257 | AutoNeg parameter: | 313 | Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 |
| 314 | Duplex Full Full Half Full Half | ||
| 258 | 315 | ||
| 259 | Speed (Mbps) 1000 100 100 10 10 | 316 | Some examples of using AutoNeg: |
| 260 | Duplex Full Full Half Full Half | ||
| 261 | Value (in base 16) 0x20 0x08 0x04 0x02 0x01 | ||
| 262 | 317 | ||
| 263 | Example: insmod e1000 AutoNeg=0x03, loads e1000 and specifies (10 full duplex, | 318 | modprobe e1000 AutoNeg=0x01 (Restricts autonegotiation to 10 Half) |
| 264 | 10 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 | ||
| 266 | Note that setting AutoNeg does not guarantee that the board will link at the | 328 | Note that when this parameter is used, Speed and Duplex must not be specified. |
| 267 | highest specified speed or duplex mode, but the board will link at the | 329 | |
| 268 | highest possible speed/duplex of the link partner IF the link partner is also | 330 | If the link partner is forced to a specific speed and duplex, then this |
| 269 | set to auto-negotiate. If the link partner is forced speed/duplex, the | 331 | parameter should not be used. Instead, use the Speed and Duplex parameters |
| 270 | adapter MUST be forced to the same speed/duplex. | 332 | previously mentioned to force the adapter to the same speed and duplex. |
| 271 | 333 | ||
| 272 | 334 | ||
| 273 | Additional Configurations | 335 | Additional 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 | ||
| 378 | Support | 544 | Support |
| @@ -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 | |||
| 385 | If an issue is identified with the released source code on the supported | 555 | If an issue is identified with the released source code on the supported |
| 386 | kernel with a supported adapter, email the specific information related to | 556 | kernel with a supported adapter, email the specific information related |
| 387 | the issue to linux.nics@intel.com. | 557 | to the issue to e1000-devel@lists.sourceforge.net |
| 388 | 558 | ||
| 389 | 559 | ||
| 390 | License | 560 | License |
| 391 | ======= | 561 | ======= |
| 392 | 562 | ||
| 393 | This software program is released under the terms of a license agreement | 563 | This software program is released under the terms of a license agreement |
| 394 | between you ('Licensee') and Intel. Do not use or load this software or any | 564 | between you ('Licensee') and Intel. Do not use or load this software or any |
| 395 | associated materials (collectively, the 'Software') until you have carefully | 565 | associated materials (collectively, the 'Software') until you have carefully |
| 396 | read the full terms and conditions of the LICENSE located in this software | 566 | read the full terms and conditions of the file COPYING located in this software |
| 397 | package. By loading or using the Software, you agree to the terms of this | 567 | package. By loading or using the Software, you agree to the terms of this |
| 398 | Agreement. If you do not agree with the terms of this Agreement, do not | 568 | Agreement. If you do not agree with the terms of this Agreement, do not |
| 399 | install or use the Software. | 569 | install 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. |
