diff options
author | Andrew Yourtchenko <ayourtch@gmail.com> | 2018-09-14 11:21:58 +0200 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2018-09-25 11:31:34 +0000 |
commit | 608f95cddc4e1e78b4d3ac3b2c3f1ae86f1fa632 (patch) | |
tree | 46acac1ad835a1400b377e2f99193e53f6d11278 /src/plugins/acl/fa_node.h | |
parent | eacde3f123727fef65d87f2395e2de245d6efe67 (diff) |
acl-plugin: optimize session idle timer checks
This commit adds explicit signaling from a non-owning thread to the owning thread
to restart the session timer as necessary.
Consequently, we now can sweep the session lists at their respective timeouts,
rather than sweeping all the lists at the pace of the shortest timeout value,
just taking care to wake up if the session requeue to a different list results
in needing to wake up earlier.
Change-Id: Ifc8c500f6988748f4cd3dc184dd7824321aaaaca
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
Diffstat (limited to 'src/plugins/acl/fa_node.h')
-rw-r--r-- | src/plugins/acl/fa_node.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/plugins/acl/fa_node.h b/src/plugins/acl/fa_node.h index e41dd0ad6fd..74b71b93cd9 100644 --- a/src/plugins/acl/fa_node.h +++ b/src/plugins/acl/fa_node.h @@ -145,6 +145,12 @@ CT_ASSERT_EQUAL(fa_5tuple_opaque_t_must_match_5tuple, sizeof(fa_5tuple_opaque_t) typedef struct { /* The pool of sessions managed by this worker */ fa_session_t *fa_sessions_pool; + /* incoming session change requests from other workers */ + clib_spinlock_t pending_session_change_request_lock; + u64 *pending_session_change_requests; + u64 *wip_session_change_requests; + u64 rcvd_session_change_requests; + u64 sent_session_change_requests; /* per-worker ACL_N_TIMEOUTS of conn lists */ u32 *fa_conn_list_head; u32 *fa_conn_list_tail; |