| 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 |