Skip to content

Commit

Permalink
rc80211-pid: simplify and fix shift_adjust
Browse files Browse the repository at this point in the history
Simplify and fix rate_control_pid_shift_adjust(). A bug prevented correct
mapping of sorted rates, and readability was seriously flawed.

Signed-off-by: Stefano Brivio <stefano.brivio@polimi.it>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Stefano Brivio authored and David S. Miller committed Jan 28, 2008
1 parent ca5fbca commit fa44327
Showing 1 changed file with 16 additions and 18 deletions.
34 changes: 16 additions & 18 deletions net/mac80211/rc80211_pid_algo.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit fa44327

Please sign in to comment.