u32 current_worker_index = ~0;
u32 cpu_index = os_get_cpu_number ();
+ ASSERT (vec_len (sm->workers));
+
if (PREDICT_FALSE (handoff_queue_elt_by_worker_index == 0))
{
vec_validate (handoff_queue_elt_by_worker_index, tm->n_vlib_mains - 1);
u32 current_worker_index = ~0;
u32 cpu_index = os_get_cpu_number ();
+ ASSERT (vec_len (sm->workers));
+
if (PREDICT_FALSE (handoff_queue_elt_by_worker_index == 0))
{
vec_validate (handoff_queue_elt_by_worker_index, tm->n_vlib_mains - 1);
if (PREDICT_FALSE (next_worker_index != cpu_index))
{
+ do_handoff = 1;
+
if (next_worker_index != current_worker_index)
{
if (hf)
if (!clib_bihash_search_8_8 (&sm->user_hash, &kv, &value))
{
user_index = value.value;
- clib_bihash_search_8_8 (&sm->worker_by_in, &kv, &value);
- tsm = vec_elt_at_index (sm->per_thread_data, value.value);
+ if (!clib_bihash_search_8_8 (&sm->worker_by_in, &kv, &value))
+ tsm = vec_elt_at_index (sm->per_thread_data, value.value);
+ else
+ tsm = vec_elt_at_index (sm->per_thread_data, sm->num_workers);
u = pool_elt_at_index (tsm->users, user_index);
if (u->nstaticsessions)
{