From 52adcdddbfbc7783efb2f4e562af4f8c55325ead Mon Sep 17 00:00:00 2001 From: Bruce Allan Date: Fri, 8 Aug 2008 18:35:51 -0700 Subject: [PATCH] --- yaml --- r: 108765 b: refs/heads/master c: 2d06cad1a5ceb3b04dc9547e261ad4fcebf7433d h: refs/heads/master i: 108763: e33582efcd259ff9c33c8a5cc3f75441aed667b1 v: v3 --- [refs] | 2 +- trunk/drivers/net/e1000e/param.c | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 5b142cbfd4c3..3688bdb499bf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 56e1f82968af79f70902008098a4687198142ce7 +refs/heads/master: 2d06cad1a5ceb3b04dc9547e261ad4fcebf7433d diff --git a/trunk/drivers/net/e1000e/param.c b/trunk/drivers/net/e1000e/param.c index 8effc3107f9a..b0499f27e5ff 100644 --- a/trunk/drivers/net/e1000e/param.c +++ b/trunk/drivers/net/e1000e/param.c @@ -327,11 +327,26 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter) e1000_validate_option(&adapter->itr, &opt, adapter); /* - * save the setting, because the dynamic bits - * change itr. clear the lower two bits - * because they are used as control + * Save the setting, because the dynamic bits + * change itr. */ - adapter->itr_setting = adapter->itr & ~3; + if (e1000_validate_option(&adapter->itr, &opt, + adapter) && + (adapter->itr == 3)) { + /* + * In case of invalid user value, + * default to conservative mode. + */ + adapter->itr_setting = adapter->itr; + adapter->itr = 20000; + } else { + /* + * Clear the lower two bits because + * they are used as control. + */ + adapter->itr_setting = + adapter->itr & ~3; + } break; } } else {