diff options
| author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-05-08 13:39:59 +0200 | 
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-05-08 13:39:59 +0200 | 
| commit | 5e13a0c5ec05d382b488a691dfb8af015b1dea1e (patch) | |
| tree | 7a06dfa1f7661f8908193f2437b32452520221d3 /drivers/net/ethernet/intel/e1000e/param.c | |
| parent | b615b57a124a4af7b68196bc2fb8acc236041fa2 (diff) | |
| parent | 4f256e8aa3eda15c11c3cec3ec5336e1fc579cbd (diff) | |
| download | olio-linux-3.10-5e13a0c5ec05d382b488a691dfb8af015b1dea1e.tar.xz olio-linux-3.10-5e13a0c5ec05d382b488a691dfb8af015b1dea1e.zip  | |
Merge remote-tracking branch 'airlied/drm-core-next' into drm-intel-next-queued
Backmerge of drm-next to resolve a few ugly conflicts and to get a few
fixes from 3.4-rc6 (which drm-next has already merged). Note that this
merge also restricts the stencil cache lra evict policy workaround to
snb (as it should) - I had to frob the code anyway because the
CM0_MASK_SHIFT define died in the masked bit cleanups.
We need the backmerge to get Paulo Zanoni's infoframe regression fix
for gm45 - further bugfixes from him touch the same area and would
needlessly conflict.
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/param.c')
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/param.c | 99 | 
1 files changed, 53 insertions, 46 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/param.c b/drivers/net/ethernet/intel/e1000e/param.c index ff796e42c3e..16adeb9418a 100644 --- a/drivers/net/ethernet/intel/e1000e/param.c +++ b/drivers/net/ethernet/intel/e1000e/param.c @@ -106,7 +106,7 @@ E1000_PARAM(RxAbsIntDelay, "Receive Absolute Interrupt Delay");  /*   * Interrupt Throttle Rate (interrupts/sec)   * - * Valid Range: 100-100000 (0=off, 1=dynamic, 3=dynamic conservative) + * Valid Range: 100-100000 or one of: 0=off, 1=dynamic, 3=dynamic conservative   */  E1000_PARAM(InterruptThrottleRate, "Interrupt Throttling Rate");  #define DEFAULT_ITR 3 @@ -344,53 +344,60 @@ void __devinit e1000e_check_options(struct e1000_adapter *adapter)  		if (num_InterruptThrottleRate > bd) {  			adapter->itr = InterruptThrottleRate[bd]; -			switch (adapter->itr) { -			case 0: -				e_info("%s turned off\n", opt.name); -				break; -			case 1: -				e_info("%s set to dynamic mode\n", opt.name); -				adapter->itr_setting = adapter->itr; -				adapter->itr = 20000; -				break; -			case 3: -				e_info("%s set to dynamic conservative mode\n", -					opt.name); -				adapter->itr_setting = adapter->itr; -				adapter->itr = 20000; -				break; -			case 4: -				e_info("%s set to simplified (2000-8000 ints) " -				       "mode\n", opt.name); -				adapter->itr_setting = 4; -				break; -			default: -				/* -				 * Save the setting, because the dynamic bits -				 * change itr. -				 */ -				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; -			} + +			/* +			 * Make sure a message is printed for non-special +			 * values.  And in case of an invalid option, display +			 * warning, use default and got through itr/itr_setting +			 * adjustment logic below +			 */ +			if ((adapter->itr > 4) && +			    e1000_validate_option(&adapter->itr, &opt, adapter)) +				adapter->itr = opt.def;  		} else { -			adapter->itr_setting = opt.def; +			/* +			 * If no option specified, use default value and go +			 * through the logic below to adjust itr/itr_setting +			 */ +			adapter->itr = opt.def; + +			/* +			 * Make sure a message is printed for non-special +			 * default values +			 */ +			if (adapter->itr > 40) +				e_info("%s set to default %d\n", opt.name, +				       adapter->itr); +		} + +		adapter->itr_setting = adapter->itr; +		switch (adapter->itr) { +		case 0: +			e_info("%s turned off\n", opt.name); +			break; +		case 1: +			e_info("%s set to dynamic mode\n", opt.name); +			adapter->itr = 20000; +			break; +		case 3: +			e_info("%s set to dynamic conservative mode\n", +			       opt.name);  			adapter->itr = 20000; +			break; +		case 4: +			e_info("%s set to simplified (2000-8000 ints) mode\n", +			       opt.name); +			break; +		default: +			/* +			 * Save the setting, because the dynamic bits +			 * change itr. +			 * +			 * Clear the lower two bits because +			 * they are used as control. +			 */ +			adapter->itr_setting &= ~3; +			break;  		}  	}  	{ /* Interrupt Mode */  |