Staging: batman-adv: Fixes rounding issues in vis.c
authorLinus Lüssing <linus.luessing@web.de>
Sat, 2 Jan 2010 10:30:42 +0000 (11:30 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 4 Mar 2010 00:42:35 +0000 (16:42 -0800)
This patches fixes two rounding issues in vis.c for sending and
purging vis packets. Before, the timers and timeouts always got
rounded down to seconds, though we want a precision in
milliseconds.

This also fixes a kernel panic that occures when lowering the
timer for sending vis packets (vis_interval) to less than 1000ms
in main.c manually.

Signed-off-by: Linus Lüssing <linus.luessing@web.de>
Acked-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/batman-adv/vis.c

index 086da87..0546310 100644 (file)
@@ -377,7 +377,7 @@ static void purge_vis_packets(void)
                if (info == my_vis_info)        /* never purge own data. */
                        continue;
                if (time_after(jiffies,
-                              info->first_seen + (VIS_TIMEOUT/1000)*HZ)) {
+                              info->first_seen + (VIS_TIMEOUT*HZ)/1000)) {
                        hash_remove_bucket(vis_hash, &hashit);
                        free_info(info);
                }
@@ -556,6 +556,6 @@ void vis_quit(void)
 static void start_vis_timer(void)
 {
        queue_delayed_work(bat_event_workqueue, &vis_timer_wq,
-                          (atomic_read(&vis_interval)/1000) * HZ);
+                          (atomic_read(&vis_interval) * HZ) / 1000);
 }