diff options
Diffstat (limited to 'tunnat/src/runtime.cc')
| -rw-r--r-- | tunnat/src/runtime.cc | 15 |
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; } |
