| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters | 
|  | 2 | =============================================================== | 
|  | 3 |  | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 4 | Intel Gigabit Linux driver. | 
|  | 5 | Copyright(c) 1999 - 2010 Intel Corporation. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 6 |  | 
|  | 7 | Contents | 
|  | 8 | ======== | 
|  | 9 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 10 | - Identifying Your Adapter | 
|  | 11 | - Command Line Parameters | 
|  | 12 | - Speed and Duplex Configuration | 
|  | 13 | - Additional Configurations | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 | - Support | 
|  | 15 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 16 | Identifying Your Adapter | 
|  | 17 | ======================== | 
|  | 18 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 19 | For more information on how to identify your adapter, go to the Adapter & | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 20 | Driver ID Guide at: | 
|  | 21 |  | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 22 | http://support.intel.com/support/go/network/adapter/idguide.htm | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 23 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 24 | For the latest Intel network drivers for Linux, refer to the following | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 25 | website.  In the search field, enter your adapter name or type, or use the | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 26 | networking link on the left to search for your adapter: | 
|  | 27 |  | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 28 | http://support.intel.com/support/go/network/adapter/home.htm | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 29 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 30 | Command Line Parameters | 
|  | 31 | ======================= | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 32 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | The default value for each parameter is generally the recommended setting, | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 34 | unless otherwise noted. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 35 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 36 | NOTES:  For more information about the AutoNeg, Duplex, and Speed | 
|  | 37 | parameters, see the "Speed and Duplex Configuration" section in | 
|  | 38 | this document. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 39 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 40 | For more information about the InterruptThrottleRate, | 
|  | 41 | RxIntDelay, TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay | 
|  | 42 | parameters, see the application note at: | 
|  | 43 | http://www.intel.com/design/network/applnots/ap450.htm | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 44 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 45 | AutoNeg | 
|  | 46 | ------- | 
|  | 47 | (Supported only on adapters with copper connections) | 
|  | 48 | Valid Range:   0x01-0x0F, 0x20-0x2F | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 49 | Default Value: 0x2F | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 50 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 51 | This parameter is a bit-mask that specifies the speed and duplex settings | 
|  | 52 | advertised by the adapter.  When this parameter is used, the Speed and | 
|  | 53 | Duplex parameters must not be specified. | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 54 |  | 
|  | 55 | NOTE:  Refer to the Speed and Duplex section of this readme for more | 
|  | 56 | information on the AutoNeg parameter. | 
|  | 57 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 58 | Duplex | 
|  | 59 | ------ | 
|  | 60 | (Supported only on adapters with copper connections) | 
|  | 61 | Valid Range:   0-2 (0=auto-negotiate, 1=half, 2=full) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 62 | Default Value: 0 | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 63 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 64 | This defines the direction in which data is allowed to flow.  Can be | 
|  | 65 | either one or two-directional.  If both Duplex and the link partner are | 
|  | 66 | set to auto-negotiate, the board auto-detects the correct duplex.  If the | 
|  | 67 | link partner is forced (either full or half), Duplex defaults to half- | 
|  | 68 | duplex. | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 69 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 70 | FlowControl | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 71 | ----------- | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 72 | Valid Range:   0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) | 
|  | 73 | Default Value: Reads flow control settings from the EEPROM | 
|  | 74 |  | 
|  | 75 | This parameter controls the automatic generation(Tx) and response(Rx) | 
|  | 76 | to Ethernet PAUSE frames. | 
|  | 77 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 78 | InterruptThrottleRate | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 79 | --------------------- | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 80 | (not supported on Intel(R) 82542, 82543 or 82544-based adapters) | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 81 | Valid Range:   0,1,3,4,100-100000 (0=off, 1=dynamic, 3=dynamic conservative, | 
| Jeff Kirsher | 96c3c03 | 2010-12-09 23:42:00 -0800 | [diff] [blame] | 82 | 4=simplified balancing) | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 83 | Default Value: 3 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 84 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 85 | The driver can limit the amount of interrupts per second that the adapter | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 86 | will generate for incoming packets. It does this by writing a value to the | 
|  | 87 | adapter that is based on the maximum amount of interrupts that the adapter | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 88 | will generate per second. | 
|  | 89 |  | 
|  | 90 | Setting InterruptThrottleRate to a value greater or equal to 100 | 
|  | 91 | will program the adapter to send out a maximum of that many interrupts | 
|  | 92 | per second, even if more packets have come in. This reduces interrupt | 
|  | 93 | load on the system and can lower CPU utilization under heavy load, | 
|  | 94 | but will increase latency as packets are not processed as quickly. | 
|  | 95 |  | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 96 | The default behaviour of the driver previously assumed a static | 
|  | 97 | InterruptThrottleRate value of 8000, providing a good fallback value for | 
|  | 98 | all traffic types,but lacking in small packet performance and latency. | 
|  | 99 | The hardware can handle many more small packets per second however, and | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 100 | for this reason an adaptive interrupt moderation algorithm was implemented. | 
|  | 101 |  | 
|  | 102 | Since 7.3.x, the driver has two adaptive modes (setting 1 or 3) in which | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 103 | it dynamically adjusts the InterruptThrottleRate value based on the traffic | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 104 | that it receives. After determining the type of incoming traffic in the last | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 105 | timeframe, it will adjust the InterruptThrottleRate to an appropriate value | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 106 | for that traffic. | 
|  | 107 |  | 
|  | 108 | The algorithm classifies the incoming traffic every interval into | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 109 | classes.  Once the class is determined, the InterruptThrottleRate value is | 
|  | 110 | adjusted to suit that traffic type the best. There are three classes defined: | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 111 | "Bulk traffic", for large amounts of packets of normal size; "Low latency", | 
|  | 112 | for small amounts of traffic and/or a significant percentage of small | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 113 | packets; and "Lowest latency", for almost completely small packets or | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 114 | minimal traffic. | 
|  | 115 |  | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 116 | In dynamic conservative mode, the InterruptThrottleRate value is set to 4000 | 
|  | 117 | for traffic that falls in class "Bulk traffic". If traffic falls in the "Low | 
|  | 118 | latency" or "Lowest latency" class, the InterruptThrottleRate is increased | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 119 | stepwise to 20000. This default mode is suitable for most applications. | 
|  | 120 |  | 
|  | 121 | For situations where low latency is vital such as cluster or | 
|  | 122 | grid computing, the algorithm can reduce latency even more when | 
|  | 123 | InterruptThrottleRate is set to mode 1. In this mode, which operates | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 124 | the same as mode 3, the InterruptThrottleRate will be increased stepwise to | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 125 | 70000 for traffic in class "Lowest latency". | 
|  | 126 |  | 
| Jeff Kirsher | 96c3c03 | 2010-12-09 23:42:00 -0800 | [diff] [blame] | 127 | In simplified mode the interrupt rate is based on the ratio of TX and | 
|  | 128 | RX traffic.  If the bytes per second rate is approximately equal, the | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 129 | interrupt rate will drop as low as 2000 interrupts per second.  If the | 
|  | 130 | traffic is mostly transmit or mostly receive, the interrupt rate could | 
|  | 131 | be as high as 8000. | 
|  | 132 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 133 | Setting InterruptThrottleRate to 0 turns off any interrupt moderation | 
|  | 134 | and may improve small packet latency, but is generally not suitable | 
|  | 135 | for bulk throughput traffic. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 136 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 137 | NOTE:  InterruptThrottleRate takes precedence over the TxAbsIntDelay and | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 138 | RxAbsIntDelay parameters.  In other words, minimizing the receive | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 139 | and/or transmit absolute delays does not force the controller to | 
|  | 140 | generate more interrupts than what the Interrupt Throttle Rate | 
|  | 141 | allows. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 142 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 143 | CAUTION:  If you are using the Intel(R) PRO/1000 CT Network Connection | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 144 | (controller 82547), setting InterruptThrottleRate to a value | 
|  | 145 | greater than 75,000, may hang (stop transmitting) adapters | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 146 | under certain network conditions.  If this occurs a NETDEV | 
|  | 147 | WATCHDOG message is logged in the system event log.  In | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 148 | addition, the controller is automatically reset, restoring | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 149 | the network connection.  To eliminate the potential for the | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 150 | hang, ensure that InterruptThrottleRate is set no greater | 
|  | 151 | than 75,000 and is not set to 0. | 
|  | 152 |  | 
|  | 153 | NOTE:  When e1000 is loaded with default settings and multiple adapters | 
|  | 154 | are in use simultaneously, the CPU utilization may increase non- | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 155 | linearly.  In order to limit the CPU utilization without impacting | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 156 | the overall throughput, we recommend that you load the driver as | 
|  | 157 | follows: | 
|  | 158 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 159 | modprobe e1000 InterruptThrottleRate=3000,3000,3000 | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 160 |  | 
|  | 161 | This sets the InterruptThrottleRate to 3000 interrupts/sec for | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 162 | the first, second, and third instances of the driver.  The range | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 163 | of 2000 to 3000 interrupts per second works on a majority of | 
|  | 164 | systems and is a good starting point, but the optimal value will | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 165 | be platform-specific.  If CPU utilization is not a concern, use | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 166 | RX_POLLING (NAPI) and default driver settings. | 
|  | 167 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 168 | RxDescriptors | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 169 | ------------- | 
|  | 170 | Valid Range:   80-256 for 82542 and 82543-based adapters | 
|  | 171 | 80-4096 for all other supported adapters | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 172 | Default Value: 256 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 173 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 174 | This value specifies the number of receive buffer descriptors allocated | 
|  | 175 | by the driver.  Increasing this value allows the driver to buffer more | 
|  | 176 | incoming packets, at the expense of increased system memory utilization. | 
|  | 177 |  | 
|  | 178 | Each descriptor is 16 bytes.  A receive buffer is also allocated for each | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 179 | descriptor and can be either 2048, 4096, 8192, or 16384 bytes, depending | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 180 | on the MTU setting. The maximum MTU size is 16110. | 
|  | 181 |  | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 182 | NOTE:  MTU designates the frame size.  It only needs to be set for Jumbo | 
|  | 183 | Frames.  Depending on the available system resources, the request | 
|  | 184 | for a higher number of receive descriptors may be denied.  In this | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 185 | case, use a lower number. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 186 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 187 | RxIntDelay | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 188 | ---------- | 
|  | 189 | Valid Range:   0-65535 (0=off) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 190 | Default Value: 0 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 191 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 192 | This value delays the generation of receive interrupts in units of 1.024 | 
|  | 193 | microseconds.  Receive interrupt reduction can improve CPU efficiency if | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 194 | properly tuned for specific network traffic.  Increasing this value adds | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 195 | extra latency to frame reception and can end up decreasing the throughput | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 196 | of TCP traffic.  If the system is reporting dropped receives, this value | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 197 | may be set too high, causing the driver to run out of available receive | 
|  | 198 | descriptors. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 199 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 200 | CAUTION:  When setting RxIntDelay to a value other than 0, adapters may | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 201 | hang (stop transmitting) under certain network conditions.  If | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 202 | this occurs a NETDEV WATCHDOG message is logged in the system | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 203 | event log.  In addition, the controller is automatically reset, | 
|  | 204 | restoring the network connection.  To eliminate the potential | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 205 | for the hang ensure that RxIntDelay is set to 0. | 
|  | 206 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 207 | RxAbsIntDelay | 
|  | 208 | ------------- | 
|  | 209 | (This parameter is supported only on 82540, 82545 and later adapters.) | 
|  | 210 | Valid Range:   0-65535 (0=off) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 211 | Default Value: 128 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 212 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 213 | This value, in units of 1.024 microseconds, limits the delay in which a | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 214 | receive interrupt is generated.  Useful only if RxIntDelay is non-zero, | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 215 | this value ensures that an interrupt is generated after the initial | 
|  | 216 | packet is received within the set amount of time.  Proper tuning, | 
|  | 217 | along with RxIntDelay, may improve traffic throughput in specific network | 
|  | 218 | conditions. | 
|  | 219 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 220 | Speed | 
|  | 221 | ----- | 
|  | 222 | (This parameter is supported only on adapters with copper connections.) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 223 | Valid Settings: 0, 10, 100, 1000 | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 224 | Default Value:  0 (auto-negotiate at all supported speeds) | 
|  | 225 |  | 
|  | 226 | Speed forces the line speed to the specified value in megabits per second | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 227 | (Mbps).  If this parameter is not specified or is set to 0 and the link | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 228 | partner is set to auto-negotiate, the board will auto-detect the correct | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 229 | speed.  Duplex should also be set when Speed is set to either 10 or 100. | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 230 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 231 | TxDescriptors | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 232 | ------------- | 
|  | 233 | Valid Range:   80-256 for 82542 and 82543-based adapters | 
|  | 234 | 80-4096 for all other supported adapters | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 235 | Default Value: 256 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 236 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 237 | This value is the number of transmit descriptors allocated by the driver. | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 238 | Increasing this value allows the driver to queue more transmits.  Each | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 239 | descriptor is 16 bytes. | 
|  | 240 |  | 
|  | 241 | NOTE:  Depending on the available system resources, the request for a | 
|  | 242 | higher number of transmit descriptors may be denied.  In this case, | 
|  | 243 | use a lower number. | 
|  | 244 |  | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 245 | TxDescriptorStep | 
|  | 246 | ---------------- | 
|  | 247 | Valid Range:    1 (use every Tx Descriptor) | 
| Jeff Kirsher | 96c3c03 | 2010-12-09 23:42:00 -0800 | [diff] [blame] | 248 | 4 (use every 4th Tx Descriptor) | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 249 |  | 
|  | 250 | Default Value:  1 (use every Tx Descriptor) | 
|  | 251 |  | 
|  | 252 | On certain non-Intel architectures, it has been observed that intense TX | 
|  | 253 | traffic bursts of short packets may result in an improper descriptor | 
|  | 254 | writeback. If this occurs, the driver will report a "TX Timeout" and reset | 
|  | 255 | the adapter, after which the transmit flow will restart, though data may | 
|  | 256 | have stalled for as much as 10 seconds before it resumes. | 
|  | 257 |  | 
|  | 258 | The improper writeback does not occur on the first descriptor in a system | 
|  | 259 | memory cache-line, which is typically 32 bytes, or 4 descriptors long. | 
|  | 260 |  | 
|  | 261 | Setting TxDescriptorStep to a value of 4 will ensure that all TX descriptors | 
|  | 262 | are aligned to the start of a system memory cache line, and so this problem | 
|  | 263 | will not occur. | 
|  | 264 |  | 
|  | 265 | NOTES: Setting TxDescriptorStep to 4 effectively reduces the number of | 
|  | 266 | TxDescriptors available for transmits to 1/4 of the normal allocation. | 
|  | 267 | This has a possible negative performance impact, which may be | 
|  | 268 | compensated for by allocating more descriptors using the TxDescriptors | 
|  | 269 | module parameter. | 
|  | 270 |  | 
|  | 271 | There are other conditions which may result in "TX Timeout", which will | 
|  | 272 | not be resolved by the use of the TxDescriptorStep parameter. As the | 
|  | 273 | issue addressed by this parameter has never been observed on Intel | 
|  | 274 | Architecture platforms, it should not be used on Intel platforms. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 275 |  | 
|  | 276 | TxIntDelay | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 277 | ---------- | 
|  | 278 | Valid Range:   0-65535 (0=off) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 279 | Default Value: 64 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 280 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 281 | This value delays the generation of transmit interrupts in units of | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 282 | 1.024 microseconds.  Transmit interrupt reduction can improve CPU | 
|  | 283 | efficiency if properly tuned for specific network traffic.  If the | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 284 | system is reporting dropped transmits, this value may be set too high | 
|  | 285 | causing the driver to run out of available transmit descriptors. | 
|  | 286 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 287 | TxAbsIntDelay | 
|  | 288 | ------------- | 
|  | 289 | (This parameter is supported only on 82540, 82545 and later adapters.) | 
|  | 290 | Valid Range:   0-65535 (0=off) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 291 | Default Value: 64 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 292 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 293 | This value, in units of 1.024 microseconds, limits the delay in which a | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 294 | transmit interrupt is generated.  Useful only if TxIntDelay is non-zero, | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 295 | this value ensures that an interrupt is generated after the initial | 
|  | 296 | packet is sent on the wire within the set amount of time.  Proper tuning, | 
|  | 297 | along with TxIntDelay, may improve traffic throughput in specific | 
|  | 298 | network conditions. | 
|  | 299 |  | 
|  | 300 | XsumRX | 
|  | 301 | ------ | 
|  | 302 | (This parameter is NOT supported on the 82542-based adapter.) | 
|  | 303 | Valid Range:   0-1 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 304 | Default Value: 1 | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 305 |  | 
|  | 306 | A value of '1' indicates that the driver should enable IP checksum | 
|  | 307 | offload for received packets (both UDP and TCP) to the adapter hardware. | 
|  | 308 |  | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 309 | Copybreak | 
|  | 310 | --------- | 
|  | 311 | Valid Range:   0-xxxxxxx (0=off) | 
|  | 312 | Default Value: 256 | 
|  | 313 | Usage: insmod e1000.ko copybreak=128 | 
|  | 314 |  | 
| Jeff Kirsher | 96c3c03 | 2010-12-09 23:42:00 -0800 | [diff] [blame] | 315 | Driver copies all packets below or equaling this size to a fresh RX | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 316 | buffer before handing it up the stack. | 
|  | 317 |  | 
|  | 318 | This parameter is different than other parameters, in that it is a | 
|  | 319 | single (not 1,1,1 etc.) parameter applied to all driver instances and | 
|  | 320 | it is also available during runtime at | 
|  | 321 | /sys/module/e1000/parameters/copybreak | 
|  | 322 |  | 
|  | 323 | SmartPowerDownEnable | 
|  | 324 | -------------------- | 
|  | 325 | Valid Range: 0-1 | 
|  | 326 | Default Value:  0 (disabled) | 
|  | 327 |  | 
|  | 328 | Allows PHY to turn off in lower power states. The user can turn off | 
|  | 329 | this parameter in supported chipsets. | 
|  | 330 |  | 
|  | 331 | KumeranLockLoss | 
|  | 332 | --------------- | 
|  | 333 | Valid Range: 0-1 | 
|  | 334 | Default Value: 1 (enabled) | 
|  | 335 |  | 
|  | 336 | This workaround skips resetting the PHY at shutdown for the initial | 
|  | 337 | silicon releases of ICH8 systems. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 338 |  | 
|  | 339 | Speed and Duplex Configuration | 
|  | 340 | ============================== | 
|  | 341 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 342 | Three keywords are used to control the speed and duplex configuration. | 
|  | 343 | These keywords are Speed, Duplex, and AutoNeg. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 344 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 345 | If the board uses a fiber interface, these keywords are ignored, and the | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 346 | fiber interface board only links at 1000 Mbps full-duplex. | 
|  | 347 |  | 
|  | 348 | For copper-based boards, the keywords interact as follows: | 
|  | 349 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 350 | The default operation is auto-negotiate.  The board advertises all | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 351 | supported speed and duplex combinations, and it links at the highest | 
|  | 352 | common speed and duplex mode IF the link partner is set to auto-negotiate. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 353 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 354 | If Speed = 1000, limited auto-negotiation is enabled and only 1000 Mbps | 
|  | 355 | is advertised (The 1000BaseT spec requires auto-negotiation.) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 356 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 357 | If Speed = 10 or 100, then both Speed and Duplex should be set.  Auto- | 
|  | 358 | negotiation is disabled, and the AutoNeg parameter is ignored.  Partner | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 359 | SHOULD also be forced. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 360 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 361 | The AutoNeg parameter is used when more control is required over the | 
|  | 362 | auto-negotiation process.  It should be used when you wish to control which | 
|  | 363 | speed and duplex combinations are advertised during the auto-negotiation | 
|  | 364 | process. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 365 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 366 | The parameter may be specified as either a decimal or hexadecimal value as | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 367 | determined by the bitmap below. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 368 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 369 | Bit position   7      6      5       4       3      2      1       0 | 
|  | 370 | Decimal Value  128    64     32      16      8      4      2       1 | 
|  | 371 | Hex value      80     40     20      10      8      4      2       1 | 
|  | 372 | Speed (Mbps)   N/A    N/A    1000    N/A     100    100    10      10 | 
|  | 373 | Duplex                       Full            Full   Half   Full    Half | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 374 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 375 | Some examples of using AutoNeg: | 
|  | 376 |  | 
|  | 377 | modprobe e1000 AutoNeg=0x01 (Restricts autonegotiation to 10 Half) | 
|  | 378 | modprobe e1000 AutoNeg=1 (Same as above) | 
|  | 379 | modprobe e1000 AutoNeg=0x02 (Restricts autonegotiation to 10 Full) | 
|  | 380 | modprobe e1000 AutoNeg=0x03 (Restricts autonegotiation to 10 Half or 10 Full) | 
|  | 381 | modprobe e1000 AutoNeg=0x04 (Restricts autonegotiation to 100 Half) | 
|  | 382 | modprobe e1000 AutoNeg=0x05 (Restricts autonegotiation to 10 Half or 100 | 
|  | 383 | Half) | 
|  | 384 | modprobe e1000 AutoNeg=0x020 (Restricts autonegotiation to 1000 Full) | 
|  | 385 | modprobe e1000 AutoNeg=32 (Same as above) | 
|  | 386 |  | 
|  | 387 | Note that when this parameter is used, Speed and Duplex must not be specified. | 
|  | 388 |  | 
|  | 389 | If the link partner is forced to a specific speed and duplex, then this | 
|  | 390 | parameter should not be used.  Instead, use the Speed and Duplex parameters | 
|  | 391 | previously mentioned to force the adapter to the same speed and duplex. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 392 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 393 | Additional Configurations | 
|  | 394 | ========================= | 
|  | 395 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 396 | Jumbo Frames | 
|  | 397 | ------------ | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 398 | Jumbo Frames support is enabled by changing the MTU to a value larger than | 
|  | 399 | the default of 1500.  Use the ifconfig command to increase the MTU size. | 
|  | 400 | For example: | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 401 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 402 | ifconfig eth<x> mtu 9000 up | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 403 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 404 | This setting is not saved across reboots.  It can be made permanent if | 
|  | 405 | you add: | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 406 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 407 | MTU=9000 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 408 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 409 | to the file /etc/sysconfig/network-scripts/ifcfg-eth<x>.  This example | 
|  | 410 | applies to the Red Hat distributions; other distributions may store this | 
|  | 411 | setting in a different location. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 412 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 413 | Notes: | 
| Jeff Kirsher | 2bff89c | 2010-10-05 01:17:05 +0000 | [diff] [blame] | 414 | Degradation in throughput performance may be observed in some Jumbo frames | 
|  | 415 | environments. If this is observed, increasing the application's socket buffer | 
|  | 416 | size and/or increasing the /proc/sys/net/ipv4/tcp_*mem entry values may help. | 
|  | 417 | See the specific application manual and /usr/src/linux*/Documentation/ | 
|  | 418 | networking/ip-sysctl.txt for more details. | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 419 |  | 
|  | 420 | - The maximum MTU setting for Jumbo Frames is 16110.  This value coincides | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 421 | with the maximum Jumbo Frames size of 16128. | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 422 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 423 | - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or | 
|  | 424 | loss of link. | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 425 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 426 | - Adapters based on the Intel(R) 82542 and 82573V/E controller do not | 
|  | 427 | support Jumbo Frames. These correspond to the following product names: | 
|  | 428 | Intel(R) PRO/1000 Gigabit Server Adapter | 
|  | 429 | Intel(R) PRO/1000 PM Network Connection | 
|  | 430 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 431 | Ethtool | 
|  | 432 | ------- | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 433 | The driver utilizes the ethtool interface for driver configuration and | 
| Jeff Kirsher | 68f20d9 | 2010-12-17 12:14:34 +0000 | [diff] [blame] | 434 | diagnostics, as well as displaying statistical information.  The ethtool | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 435 | version 1.6 or later is required for this functionality. | 
|  | 436 |  | 
|  | 437 | The latest release of ethtool can be found from | 
| Jeff Kirsher | 68f20d9 | 2010-12-17 12:14:34 +0000 | [diff] [blame] | 438 | http://ftp.kernel.org/pub/software/network/ethtool/ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 439 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 440 | Enabling Wake on LAN* (WoL) | 
|  | 441 | --------------------------- | 
| Jeff Kirsher | 68f20d9 | 2010-12-17 12:14:34 +0000 | [diff] [blame] | 442 | WoL is configured through the ethtool* utility. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 443 |  | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 444 | WoL will be enabled on the system during the next shut down or reboot. | 
|  | 445 | For this driver version, in order to enable WoL, the e1000 driver must be | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 446 | loaded when shutting down or rebooting the system. | 
|  | 447 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 448 | Support | 
|  | 449 | ======= | 
|  | 450 |  | 
|  | 451 | For general information, go to the Intel support website at: | 
|  | 452 |  | 
|  | 453 | http://support.intel.com | 
|  | 454 |  | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 455 | or the Intel Wired Networking project hosted by Sourceforge at: | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 456 |  | 
|  | 457 | http://sourceforge.net/projects/e1000 | 
|  | 458 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 459 | If an issue is identified with the released source code on the supported | 
| Jesse Brandeburg | 55be062 | 2006-03-15 12:18:13 -0800 | [diff] [blame] | 460 | kernel with a supported adapter, email the specific information related | 
| Auke Kok | de3edab | 2006-11-01 08:48:18 -0800 | [diff] [blame] | 461 | to the issue to e1000-devel@lists.sf.net |