From d6f40d09f92a6f2f8b7a45eb2cbc1521d1e3b760 Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Tue, 17 Jul 2012 12:00:58 +0200 Subject: [PATCH] light: speedup network propagation via linear backoff --- sy_old/mars_light.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sy_old/mars_light.c b/sy_old/mars_light.c index 43834d2f..32fad6b2 100644 --- a/sy_old/mars_light.c +++ b/sy_old/mars_light.c @@ -985,6 +985,7 @@ int peer_thread(void *data) struct mars_peerinfo *peer = data; char *real_peer; struct sockaddr_storage sockaddr = {}; + int pause_time = 0; bool flip = false; int status; @@ -1050,6 +1051,7 @@ int peer_thread(void *data) } if (cmd.cmd_code == CMD_NOTIFY) { flip = false; + pause_time = 0; msleep(1000); continue; } @@ -1077,8 +1079,14 @@ int peer_thread(void *data) } msleep(1000); - if (!kthread_should_stop()) - wait_event_interruptible_timeout(remote_event, atomic_read(&peer_thread_count) > 0, CONFIG_MARS_PROPAGATE_INTERVAL * HZ); + if (!kthread_should_stop()) { + if (pause_time < CONFIG_MARS_PROPAGATE_INTERVAL) + pause_time++; + wait_event_interruptible_timeout(remote_event, + atomic_read(&remote_trigger_count) > 0 || + (mars_global && mars_global->main_trigger), + pause_time * HZ); + } } MARS_INF("-------- peer thread terminating\n");