diff options
Diffstat (limited to 'drivers/net/e1000/e1000_param.c')
-rw-r--r-- | drivers/net/e1000/e1000_param.c | 98 |
1 files changed, 36 insertions, 62 deletions
diff --git a/drivers/net/e1000/e1000_param.c b/drivers/net/e1000/e1000_param.c index 9c3c1acefccc..cbfcd7f2889f 100644 --- a/drivers/net/e1000/e1000_param.c +++ b/drivers/net/e1000/e1000_param.c | |||
@@ -44,16 +44,6 @@ | |||
44 | */ | 44 | */ |
45 | 45 | ||
46 | #define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET } | 46 | #define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET } |
47 | /* Module Parameters are always initialized to -1, so that the driver | ||
48 | * can tell the difference between no user specified value or the | ||
49 | * user asking for the default value. | ||
50 | * The true default values are loaded in when e1000_check_options is called. | ||
51 | * | ||
52 | * This is a GCC extension to ANSI C. | ||
53 | * See the item "Labeled Elements in Initializers" in the section | ||
54 | * "Extensions to the C Language Family" of the GCC documentation. | ||
55 | */ | ||
56 | |||
57 | #define E1000_PARAM(X, desc) \ | 47 | #define E1000_PARAM(X, desc) \ |
58 | static int __devinitdata X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \ | 48 | static int __devinitdata X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \ |
59 | static int num_##X = 0; \ | 49 | static int num_##X = 0; \ |
@@ -67,7 +57,6 @@ | |||
67 | * | 57 | * |
68 | * Default Value: 256 | 58 | * Default Value: 256 |
69 | */ | 59 | */ |
70 | |||
71 | E1000_PARAM(TxDescriptors, "Number of transmit descriptors"); | 60 | E1000_PARAM(TxDescriptors, "Number of transmit descriptors"); |
72 | 61 | ||
73 | /* Receive Descriptor Count | 62 | /* Receive Descriptor Count |
@@ -77,7 +66,6 @@ E1000_PARAM(TxDescriptors, "Number of transmit descriptors"); | |||
77 | * | 66 | * |
78 | * Default Value: 256 | 67 | * Default Value: 256 |
79 | */ | 68 | */ |
80 | |||
81 | E1000_PARAM(RxDescriptors, "Number of receive descriptors"); | 69 | E1000_PARAM(RxDescriptors, "Number of receive descriptors"); |
82 | 70 | ||
83 | /* User Specified Speed Override | 71 | /* User Specified Speed Override |
@@ -90,7 +78,6 @@ E1000_PARAM(RxDescriptors, "Number of receive descriptors"); | |||
90 | * | 78 | * |
91 | * Default Value: 0 | 79 | * Default Value: 0 |
92 | */ | 80 | */ |
93 | |||
94 | E1000_PARAM(Speed, "Speed setting"); | 81 | E1000_PARAM(Speed, "Speed setting"); |
95 | 82 | ||
96 | /* User Specified Duplex Override | 83 | /* User Specified Duplex Override |
@@ -102,7 +89,6 @@ E1000_PARAM(Speed, "Speed setting"); | |||
102 | * | 89 | * |
103 | * Default Value: 0 | 90 | * Default Value: 0 |
104 | */ | 91 | */ |
105 | |||
106 | E1000_PARAM(Duplex, "Duplex setting"); | 92 | E1000_PARAM(Duplex, "Duplex setting"); |
107 | 93 | ||
108 | /* Auto-negotiation Advertisement Override | 94 | /* Auto-negotiation Advertisement Override |
@@ -119,8 +105,9 @@ E1000_PARAM(Duplex, "Duplex setting"); | |||
119 | * | 105 | * |
120 | * Default Value: 0x2F (copper); 0x20 (fiber) | 106 | * Default Value: 0x2F (copper); 0x20 (fiber) |
121 | */ | 107 | */ |
122 | |||
123 | E1000_PARAM(AutoNeg, "Advertised auto-negotiation setting"); | 108 | E1000_PARAM(AutoNeg, "Advertised auto-negotiation setting"); |
109 | #define AUTONEG_ADV_DEFAULT 0x2F | ||
110 | #define AUTONEG_ADV_MASK 0x2F | ||
124 | 111 | ||
125 | /* User Specified Flow Control Override | 112 | /* User Specified Flow Control Override |
126 | * | 113 | * |
@@ -132,8 +119,8 @@ E1000_PARAM(AutoNeg, "Advertised auto-negotiation setting"); | |||
132 | * | 119 | * |
133 | * Default Value: Read flow control settings from the EEPROM | 120 | * Default Value: Read flow control settings from the EEPROM |
134 | */ | 121 | */ |
135 | |||
136 | E1000_PARAM(FlowControl, "Flow Control setting"); | 122 | E1000_PARAM(FlowControl, "Flow Control setting"); |
123 | #define FLOW_CONTROL_DEFAULT FLOW_CONTROL_FULL | ||
137 | 124 | ||
138 | /* XsumRX - Receive Checksum Offload Enable/Disable | 125 | /* XsumRX - Receive Checksum Offload Enable/Disable |
139 | * | 126 | * |
@@ -144,53 +131,54 @@ E1000_PARAM(FlowControl, "Flow Control setting"); | |||
144 | * | 131 | * |
145 | * Default Value: 1 | 132 | * Default Value: 1 |
146 | */ | 133 | */ |
147 | |||
148 | E1000_PARAM(XsumRX, "Disable or enable Receive Checksum offload"); | 134 | E1000_PARAM(XsumRX, "Disable or enable Receive Checksum offload"); |
149 | 135 | ||
150 | /* Transmit Interrupt Delay in units of 1.024 microseconds | 136 | /* Transmit Interrupt Delay in units of 1.024 microseconds |
137 | * Tx interrupt delay needs to typically be set to something non zero | ||
151 | * | 138 | * |
152 | * Valid Range: 0-65535 | 139 | * Valid Range: 0-65535 |
153 | * | ||
154 | * Default Value: 64 | ||
155 | */ | 140 | */ |
156 | |||
157 | E1000_PARAM(TxIntDelay, "Transmit Interrupt Delay"); | 141 | E1000_PARAM(TxIntDelay, "Transmit Interrupt Delay"); |
142 | #define DEFAULT_TIDV 8 | ||
143 | #define MAX_TXDELAY 0xFFFF | ||
144 | #define MIN_TXDELAY 0 | ||
158 | 145 | ||
159 | /* Transmit Absolute Interrupt Delay in units of 1.024 microseconds | 146 | /* Transmit Absolute Interrupt Delay in units of 1.024 microseconds |
160 | * | 147 | * |
161 | * Valid Range: 0-65535 | 148 | * Valid Range: 0-65535 |
162 | * | ||
163 | * Default Value: 0 | ||
164 | */ | 149 | */ |
165 | |||
166 | E1000_PARAM(TxAbsIntDelay, "Transmit Absolute Interrupt Delay"); | 150 | E1000_PARAM(TxAbsIntDelay, "Transmit Absolute Interrupt Delay"); |
151 | #define DEFAULT_TADV 32 | ||
152 | #define MAX_TXABSDELAY 0xFFFF | ||
153 | #define MIN_TXABSDELAY 0 | ||
167 | 154 | ||
168 | /* Receive Interrupt Delay in units of 1.024 microseconds | 155 | /* Receive Interrupt Delay in units of 1.024 microseconds |
156 | * hardware will likely hang if you set this to anything but zero. | ||
169 | * | 157 | * |
170 | * Valid Range: 0-65535 | 158 | * Valid Range: 0-65535 |
171 | * | ||
172 | * Default Value: 0 | ||
173 | */ | 159 | */ |
174 | |||
175 | E1000_PARAM(RxIntDelay, "Receive Interrupt Delay"); | 160 | E1000_PARAM(RxIntDelay, "Receive Interrupt Delay"); |
161 | #define DEFAULT_RDTR 0 | ||
162 | #define MAX_RXDELAY 0xFFFF | ||
163 | #define MIN_RXDELAY 0 | ||
176 | 164 | ||
177 | /* Receive Absolute Interrupt Delay in units of 1.024 microseconds | 165 | /* Receive Absolute Interrupt Delay in units of 1.024 microseconds |
178 | * | 166 | * |
179 | * Valid Range: 0-65535 | 167 | * Valid Range: 0-65535 |
180 | * | ||
181 | * Default Value: 128 | ||
182 | */ | 168 | */ |
183 | |||
184 | E1000_PARAM(RxAbsIntDelay, "Receive Absolute Interrupt Delay"); | 169 | E1000_PARAM(RxAbsIntDelay, "Receive Absolute Interrupt Delay"); |
170 | #define DEFAULT_RADV 8 | ||
171 | #define MAX_RXABSDELAY 0xFFFF | ||
172 | #define MIN_RXABSDELAY 0 | ||
185 | 173 | ||
186 | /* Interrupt Throttle Rate (interrupts/sec) | 174 | /* Interrupt Throttle Rate (interrupts/sec) |
187 | * | 175 | * |
188 | * Valid Range: 100-100000 (0=off, 1=dynamic) | 176 | * Valid Range: 100-100000 (0=off, 1=dynamic, 3=dynamic conservative) |
189 | * | ||
190 | * Default Value: 8000 | ||
191 | */ | 177 | */ |
192 | |||
193 | E1000_PARAM(InterruptThrottleRate, "Interrupt Throttling Rate"); | 178 | E1000_PARAM(InterruptThrottleRate, "Interrupt Throttling Rate"); |
179 | #define DEFAULT_ITR 3 | ||
180 | #define MAX_ITR 100000 | ||
181 | #define MIN_ITR 100 | ||
194 | 182 | ||
195 | /* Enable Smart Power Down of the PHY | 183 | /* Enable Smart Power Down of the PHY |
196 | * | 184 | * |
@@ -198,7 +186,6 @@ E1000_PARAM(InterruptThrottleRate, "Interrupt Throttling Rate"); | |||
198 | * | 186 | * |
199 | * Default Value: 0 (disabled) | 187 | * Default Value: 0 (disabled) |
200 | */ | 188 | */ |
201 | |||
202 | E1000_PARAM(SmartPowerDownEnable, "Enable PHY smart power down"); | 189 | E1000_PARAM(SmartPowerDownEnable, "Enable PHY smart power down"); |
203 | 190 | ||
204 | /* Enable Kumeran Lock Loss workaround | 191 | /* Enable Kumeran Lock Loss workaround |
@@ -207,33 +194,8 @@ E1000_PARAM(SmartPowerDownEnable, "Enable PHY smart power down"); | |||
207 | * | 194 | * |
208 | * Default Value: 1 (enabled) | 195 | * Default Value: 1 (enabled) |
209 | */ | 196 | */ |
210 | |||
211 | E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround"); | 197 | E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround"); |
212 | 198 | ||
213 | #define AUTONEG_ADV_DEFAULT 0x2F | ||
214 | #define AUTONEG_ADV_MASK 0x2F | ||
215 | #define FLOW_CONTROL_DEFAULT FLOW_CONTROL_FULL | ||
216 | |||
217 | #define DEFAULT_RDTR 0 | ||
218 | #define MAX_RXDELAY 0xFFFF | ||
219 | #define MIN_RXDELAY 0 | ||
220 | |||
221 | #define DEFAULT_RADV 128 | ||
222 | #define MAX_RXABSDELAY 0xFFFF | ||
223 | #define MIN_RXABSDELAY 0 | ||
224 | |||
225 | #define DEFAULT_TIDV 64 | ||
226 | #define MAX_TXDELAY 0xFFFF | ||
227 | #define MIN_TXDELAY 0 | ||
228 | |||
229 | #define DEFAULT_TADV 64 | ||
230 | #define MAX_TXABSDELAY 0xFFFF | ||
231 | #define MIN_TXABSDELAY 0 | ||
232 | |||
233 | #define DEFAULT_ITR 8000 | ||
234 | #define MAX_ITR 100000 | ||
235 | #define MIN_ITR 100 | ||
236 | |||
237 | struct e1000_option { | 199 | struct e1000_option { |
238 | enum { enable_option, range_option, list_option } type; | 200 | enum { enable_option, range_option, list_option } type; |
239 | char *name; | 201 | char *name; |
@@ -510,15 +472,27 @@ e1000_check_options(struct e1000_adapter *adapter) | |||
510 | break; | 472 | break; |
511 | case 1: | 473 | case 1: |
512 | DPRINTK(PROBE, INFO, "%s set to dynamic mode\n", | 474 | DPRINTK(PROBE, INFO, "%s set to dynamic mode\n", |
513 | opt.name); | 475 | opt.name); |
476 | adapter->itr_setting = adapter->itr; | ||
477 | adapter->itr = 20000; | ||
478 | break; | ||
479 | case 3: | ||
480 | DPRINTK(PROBE, INFO, | ||
481 | "%s set to dynamic conservative mode\n", | ||
482 | opt.name); | ||
483 | adapter->itr_setting = adapter->itr; | ||
484 | adapter->itr = 20000; | ||
514 | break; | 485 | break; |
515 | default: | 486 | default: |
516 | e1000_validate_option(&adapter->itr, &opt, | 487 | e1000_validate_option(&adapter->itr, &opt, |
517 | adapter); | 488 | adapter); |
489 | /* save the setting, because the dynamic bits change itr */ | ||
490 | adapter->itr_setting = adapter->itr; | ||
518 | break; | 491 | break; |
519 | } | 492 | } |
520 | } else { | 493 | } else { |
521 | adapter->itr = opt.def; | 494 | adapter->itr_setting = opt.def; |
495 | adapter->itr = 20000; | ||
522 | } | 496 | } |
523 | } | 497 | } |
524 | { /* Smart Power Down */ | 498 | { /* Smart Power Down */ |