mac80211: fix sign error in pid controller
authorBob Copeland <me@bobcopeland.com>
Sat, 16 Jan 2010 19:36:52 +0000 (14:36 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 18 Jan 2010 20:07:02 +0000 (15:07 -0500)
commite850f68b8f27a76c4377c34f2e216b8e7e10db3d
tree0b2a6ffb15ede031c149d8c37a5ba359bb5695f8
parentbb5d2db5709e469f4a8c01eaaee9a275ed9772aa
mac80211: fix sign error in pid controller

While testing the pid rate controller in mac80211_hwsim, I noticed
that once the controller reached 54 Mbit rates, it would fail to
lower the rate when necessary.  The debug log shows:

1945 186786 pf_sample 50 3534 3577 50

My interpretation is that the fixed point scaling of the target
error value (pf) is incorrect: the error value of 50 compared to
a target of 14 case should result in a scaling value of
(14-50) = -36 * 256 or -9216, but instead it is (14 * 256)-50, or
3534.

Correct this by doing fixed point scaling after subtraction.

Signed-off-by: Bob Copeland <me@bobcopeland.com>
Acked-by: Stefano Brivio <stefano.brivio@polimi.it>
Acked-by: Mattias Nissler <mattias.nissler@gmx.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/rc80211_pid_algo.c