summaryrefslogtreecommitdiff
path: root/tunnat/src/runtime.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tunnat/src/runtime.cc')
-rw-r--r--tunnat/src/runtime.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/tunnat/src/runtime.cc b/tunnat/src/runtime.cc
index cb0c7ae..6055d1a 100644
--- a/tunnat/src/runtime.cc
+++ b/tunnat/src/runtime.cc
@@ -705,11 +705,24 @@ void * tunnat_thread_loop(void * arg)
auto & virtdev = instance->virtdevs[0];
auto & phydev = instance->phydevs[0];
+ /* Idle Counter*/
+ unsigned long idle_counter = 0;
+
while (g_keep_running)
{
__phy_to_virt_one_device(instance, th_instance, &phydev, &virtdev);
__virt_to_phy_one_device(instance, th_instance, &phydev, &virtdev);
+
+ if(likely(instance->idle_threshold > 0) &&
+ unlikely(idle_counter >= instance->idle_threshold))
+ {
+ marsio_send_burst_flush(virtdev.vdev_sendpath, th_instance->thread_id);
+ marsio_send_burst_flush(phydev.vdev_sendpath, th_instance->thread_id);
+ idle_counter = 0;
+ }
+
+ idle_counter++;
}
- return 0;
+ return (void *)nullptr;
}