always_inline int
fa_session_get_timeout_type (acl_main_t * am, fa_session_t * sess)
{
- /* seen both SYNs and ACKs but not FINs means we are in establshed state */
+ /* seen both SYNs and ACKs but not FINs means we are in established state */
u16 masked_flags =
sess->tcp_flags_seen.as_u16 & ((TCP_FLAGS_RSTFINACKSYN << 8) +
TCP_FLAGS_RSTFINACKSYN);
else
{
/*
- * Our thread does not own this connection, so we can not delete
- * The session. To avoid the complicated signaling, we simply
- * pick the list waiting time to be the shortest of the timeouts.
- * This way we do not have to do anything special, and let
- * the regular requeue check take care of everything.
+ * Our thread does not own this connection, so we can not requeue
+ * The session. So we post the signal to the owner.
*/
+ aclp_post_session_change_request (am, sess_id.thread_index,
+ sess_id.session_index,
+ ACL_FA_REQ_SESS_RESCHEDULE);
return 0;
}
}
as the caller must have dealt with the timers. */
vec_validate (pw->fa_session_dels_by_sw_if_index, sw_if_index);
clib_mem_set_heap (oldheap);
- clib_smp_atomic_add (&pw->fa_session_dels_by_sw_if_index[sw_if_index], 1);
+ pw->fa_session_dels_by_sw_if_index[sw_if_index]++;
clib_smp_atomic_add (&am->fa_session_total_dels, 1);
}
vec_validate (pw->fa_session_adds_by_sw_if_index, sw_if_index);
clib_mem_set_heap (oldheap);
- clib_smp_atomic_add (&pw->fa_session_adds_by_sw_if_index[sw_if_index], 1);
+ pw->fa_session_adds_by_sw_if_index[sw_if_index]++;
clib_smp_atomic_add (&am->fa_session_total_adds, 1);
return sess;
}