diff options
Diffstat (limited to 'net/mac80211/rc80211_pid_algo.c')
| -rw-r--r-- | net/mac80211/rc80211_pid_algo.c | 34 | 
1 files changed, 16 insertions, 18 deletions
diff --git a/net/mac80211/rc80211_pid_algo.c b/net/mac80211/rc80211_pid_algo.c index b84e51480c8..3e26280d314 100644 --- a/net/mac80211/rc80211_pid_algo.c +++ b/net/mac80211/rc80211_pid_algo.c @@ -74,29 +74,27 @@ static int rate_control_pid_shift_adjust(struct rc_pid_rateinfo *r,  {  	int i, j, k, tmp; -	if (cur + adj < 0) -		return 0; -	if (cur + adj >= l) -		return l - 1; +	j = r[cur].rev_index; +	i = j + adj; -	i = r[cur + adj].rev_index; +	if (i < 0) +		return r[0].index; +	if (i >= l - 1) +		return r[l - 1].index; -	j = r[cur].rev_index; +	tmp = i;  	if (adj < 0) { -			tmp = i; -			for (k = j; k >= i; k--) -				if (r[k].diff <= r[j].diff) -					tmp = k; -			return r[tmp].index; -	} else if (adj > 0) { -			tmp = i; -			for (k = i + 1; k + i < l; k++) -				if (r[k].diff <= r[i].diff) -					tmp = k; -			return r[tmp].index; +		for (k = j; k >= i; k--) +			if (r[k].diff <= r[j].diff) +				tmp = k; +	} else { +		for (k = i + 1; k + i < l; k++) +			if (r[k].diff <= r[i].diff) +				tmp = k;  	} -	return cur + adj; + +	return r[tmp].index;  }  static void rate_control_pid_adjust_rate(struct ieee80211_local *local,  |