Arnd Hannemann schrieb: > Pavel Roskin schrieb: >> On Mon, 2009-08-24 at 10:57 -0700, Joe Perches wrote: >>> On Mon, 2009-08-24 at 19:42 +0200, Arnd Hannemann wrote: >>>> An integer overflow in the minstrel debug code prevented the >>>> throughput to be displayed correctly. This patch fixes that, >>>> by swaping the division and multiplication. >>>> >>>> Signed-off-by: Arnd Hannemann <hannemann@xxxxxxxxxxxxxxxxxxx> >>>> --- >>>> net/mac80211/rc80211_minstrel_debugfs.c | 2 +- >>>> 1 files changed, 1 insertions(+), 1 deletions(-) >>>> >>>> diff --git a/net/mac80211/rc80211_minstrel_debugfs.c b/net/mac80211/rc80211_minstrel_debugfs.c >>>> index 98f4807..caf9453 100644 >>>> --- a/net/mac80211/rc80211_minstrel_debugfs.c >>>> +++ b/net/mac80211/rc80211_minstrel_debugfs.c >>>> @@ -83,7 +83,7 @@ minstrel_stats_open(struct inode *inode, struct file *file) >>>> p += sprintf(p, "%3u%s", mr->bitrate / 2, >>>> (mr->bitrate & 1 ? ".5" : " ")); >>>> >>>> - tp = ((mr->cur_tp * 96) / 18000) >> 10; >>>> + tp = ((mr->cur_tp / 18000) * 96) >> 10; >>> Maybe do_div instead? >> How about this? >> >> tp = mr->cur_tp / ((18000 << 10) / 96); >> >> ((18000 << 10) / 96) is exactly 192000. >> > > Hmm don't seems to be equivalent with the original statement: > > a = 61027734; > b = ((a * 96) / 18000) >> 10; > c = a / ((18000 << 10) / 96); > printf("%u %u\n", b, c); > > Outputs: > 84 317 Outch, sorry I took the overflowing formula not the fixed one! Best regards, Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html