diff options
| author | Mattias Nissler <mattias.nissler@gmx.de> | 2008-07-07 23:08:19 +0200 | 
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2008-07-09 16:16:31 -0400 | 
| commit | adeed48090fc370afa0db8d007748ee72a40b578 (patch) | |
| tree | a68a360ef3d1fb9c9962a3c894ed51850753bcad | |
| parent | 32e8d4948bb0b5f3f0ac5cdb71d0ac8e305b29a5 (diff) | |
rc80211_pid: Fix fast_start parameter handling
This removes the fast_start parameter from the rc_pid parameters
information and instead uses the parameter macro when initializing
the rc_pid state. Since the parameter is only used on initialization,
there is no point of making exporting it via debugfs. This also fixes
uninitialized memory references to the fast_start and norm_offset
parameters detected by the kmemcheck utility.  Thanks to Vegard Nossum
for reporting the bug.
Signed-off-by: Mattias Nissler <mattias.nissler@gmx.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
| -rw-r--r-- | net/mac80211/rc80211_pid.h | 5 | ||||
| -rw-r--r-- | net/mac80211/rc80211_pid_algo.c | 31 | 
2 files changed, 13 insertions, 23 deletions
diff --git a/net/mac80211/rc80211_pid.h b/net/mac80211/rc80211_pid.h index 04afc13ed825..4ea7b97d1af1 100644 --- a/net/mac80211/rc80211_pid.h +++ b/net/mac80211/rc80211_pid.h @@ -141,7 +141,6 @@ struct rc_pid_events_file_info {   *	rate behaviour values (lower means we should trust more what we learnt   *	about behaviour of rates, higher means we should trust more the natural   *	ordering of rates) - * @fast_start: if Y, push high rates right after initialization   */  struct rc_pid_debugfs_entries {  	struct dentry *dir; @@ -154,7 +153,6 @@ struct rc_pid_debugfs_entries {  	struct dentry *sharpen_factor;  	struct dentry *sharpen_duration;  	struct dentry *norm_offset; -	struct dentry *fast_start;  };  void rate_control_pid_event_tx_status(struct rc_pid_event_buffer *buf, @@ -267,9 +265,6 @@ struct rc_pid_info {  	/* Normalization offset. */  	unsigned int norm_offset; -	/* Fast starst parameter. */ -	unsigned int fast_start; -  	/* Rates information. */  	struct rc_pid_rateinfo *rinfo; diff --git a/net/mac80211/rc80211_pid_algo.c b/net/mac80211/rc80211_pid_algo.c index a849b745bdb5..bcd27c1d7594 100644 --- a/net/mac80211/rc80211_pid_algo.c +++ b/net/mac80211/rc80211_pid_algo.c @@ -398,13 +398,25 @@ static void *rate_control_pid_alloc(struct ieee80211_local *local)  		return NULL;  	} +	pinfo->target = RC_PID_TARGET_PF; +	pinfo->sampling_period = RC_PID_INTERVAL; +	pinfo->coeff_p = RC_PID_COEFF_P; +	pinfo->coeff_i = RC_PID_COEFF_I; +	pinfo->coeff_d = RC_PID_COEFF_D; +	pinfo->smoothing_shift = RC_PID_SMOOTHING_SHIFT; +	pinfo->sharpen_factor = RC_PID_SHARPENING_FACTOR; +	pinfo->sharpen_duration = RC_PID_SHARPENING_DURATION; +	pinfo->norm_offset = RC_PID_NORM_OFFSET; +	pinfo->rinfo = rinfo; +	pinfo->oldrate = 0; +  	/* Sort the rates. This is optimized for the most common case (i.e.  	 * almost-sorted CCK+OFDM rates). Kind of bubble-sort with reversed  	 * mapping too. */  	for (i = 0; i < sband->n_bitrates; i++) {  		rinfo[i].index = i;  		rinfo[i].rev_index = i; -		if (pinfo->fast_start) +		if (RC_PID_FAST_START)  			rinfo[i].diff = 0;  		else  			rinfo[i].diff = i * pinfo->norm_offset; @@ -425,19 +437,6 @@ static void *rate_control_pid_alloc(struct ieee80211_local *local)  			break;  	} -	pinfo->target = RC_PID_TARGET_PF; -	pinfo->sampling_period = RC_PID_INTERVAL; -	pinfo->coeff_p = RC_PID_COEFF_P; -	pinfo->coeff_i = RC_PID_COEFF_I; -	pinfo->coeff_d = RC_PID_COEFF_D; -	pinfo->smoothing_shift = RC_PID_SMOOTHING_SHIFT; -	pinfo->sharpen_factor = RC_PID_SHARPENING_FACTOR; -	pinfo->sharpen_duration = RC_PID_SHARPENING_DURATION; -	pinfo->norm_offset = RC_PID_NORM_OFFSET; -	pinfo->fast_start = RC_PID_FAST_START; -	pinfo->rinfo = rinfo; -	pinfo->oldrate = 0; -  #ifdef CONFIG_MAC80211_DEBUGFS  	de = &pinfo->dentries;  	de->dir = debugfs_create_dir("rc80211_pid", @@ -465,9 +464,6 @@ static void *rate_control_pid_alloc(struct ieee80211_local *local)  	de->norm_offset = debugfs_create_u32("norm_offset",  					     S_IRUSR | S_IWUSR, de->dir,  					     &pinfo->norm_offset); -	de->fast_start = debugfs_create_bool("fast_start", -					     S_IRUSR | S_IWUSR, de->dir, -					     &pinfo->fast_start);  #endif  	return pinfo; @@ -479,7 +475,6 @@ static void rate_control_pid_free(void *priv)  #ifdef CONFIG_MAC80211_DEBUGFS  	struct rc_pid_debugfs_entries *de = &pinfo->dentries; -	debugfs_remove(de->fast_start);  	debugfs_remove(de->norm_offset);  	debugfs_remove(de->sharpen_duration);  	debugfs_remove(de->sharpen_factor);  | 
