diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2008-08-08 21:35:51 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-08-14 04:40:03 -0400 |
commit | 2d06cad1a5ceb3b04dc9547e261ad4fcebf7433d (patch) | |
tree | 685175f1f7b6bbbde4b07a12391a112601544a97 /drivers/net/e1000e/param.c | |
parent | 56e1f82968af79f70902008098a4687198142ce7 (diff) |
e1000e: Set InterruptThrottleRate to default when invalid value used
During module load, seting the InterruptThrottleRate parameter to an
invalid value would result in the itr/itr_setting pair being set to
unexpected values which would result in poor performance.
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/e1000e/param.c')
-rw-r--r-- | drivers/net/e1000e/param.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/drivers/net/e1000e/param.c b/drivers/net/e1000e/param.c index 8effc3107f9a..b0499f27e5ff 100644 --- a/drivers/net/e1000e/param.c +++ b/drivers/net/e1000e/param.c | |||
@@ -327,11 +327,26 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) | |||
327 | e1000_validate_option(&adapter->itr, &opt, | 327 | e1000_validate_option(&adapter->itr, &opt, |
328 | adapter); | 328 | adapter); |
329 | /* | 329 | /* |
330 | * save the setting, because the dynamic bits | 330 | * Save the setting, because the dynamic bits |
331 | * change itr. clear the lower two bits | 331 | * change itr. |
332 | * because they are used as control | ||
333 | */ | 332 | */ |
334 | adapter->itr_setting = adapter->itr & ~3; | 333 | if (e1000_validate_option(&adapter->itr, &opt, |
334 | adapter) && | ||
335 | (adapter->itr == 3)) { | ||
336 | /* | ||
337 | * In case of invalid user value, | ||
338 | * default to conservative mode. | ||
339 | */ | ||
340 | adapter->itr_setting = adapter->itr; | ||
341 | adapter->itr = 20000; | ||
342 | } else { | ||
343 | /* | ||
344 | * Clear the lower two bits because | ||
345 | * they are used as control. | ||
346 | */ | ||
347 | adapter->itr_setting = | ||
348 | adapter->itr & ~3; | ||
349 | } | ||
335 | break; | 350 | break; |
336 | } | 351 | } |
337 | } else { | 352 | } else { |