Hi, I have tw implementation and its working fine for sometime and later the timer_expired_callback function is not invoked even though the tw node is getting scheduled.
Detals: tw_node of type VLIB_NODE_TYPE_INPUT. Node function calls run_timer_wheels : run_timer_wheels(vm) { tw_timer_wheel_1t_1w_2048sl_t* tw; f64 now; u32 thread_id = vlib_get_current_worker_index(); tw = &p_main->timer_wheels[thread_id]; now = vlib_time_now (vm); tw_timer_expire_timers_1t_1w_2048sl(tw, now); } Init: initialize_timer_wheels () { ..... ..... tw_timer_wheel_1t_1w_2048sl_t* tw; int i=0; u32 n_workers = vlib_num_workers(); vec_validate (p_main->timer_wheels, n_workers-1); for(i=0; i<n_workers; i++) { tw = &p_main->timer_wheels[i]; tw_timer_wheel_init_1t_1w_2048sl (tw, timer_expired_callback, 0.1, 1024); tw->last_run_time = vlib_time_now (vlib_get_main()); } } Start Function: start_timer_wheels() { .... u32 n_workers = vlib_num_workers(); for(int i=0; i<n_workers; i++) { p_main->stop_timer_handle[i] = tw_timer_start_1t_1w_2048sl(&p_main->timer_wheels[i], i /*elt-index*/, 0 /*timer-id*/, 1 /*interval*/); } return 0; } timer_expired_callback (u32 * expired_timers) { ........ int i = 0; u32 thread_id = vlib_get_current_worker_index(); vlib_main_t *vm = vlib_get_main(); f64 time_now = vlib_time_now(vm); for (i = 0; i < vec_len (expired_timers); i++) { /* application logic */ } p_main->stop_timer_handle[thread_id] = tw_timer_start_1t_1w_2048sl(&p_main->timer_wheels[thread_id], thread_id, 0, 1); } Any thing I am missing here. thanks.
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#18948): https://lists.fd.io/g/vpp-dev/message/18948 Mute This Topic: https://lists.fd.io/mt/81398894/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-