acl-plugin: multicore: session management fixes 70/12770/9
authorAndrew Yourtchenko <ayourtch@gmail.com>
Wed, 30 May 2018 20:29:29 +0000 (22:29 +0200)
committerFlorin Coras <florin.coras@gmail.com>
Sat, 2 Jun 2018 06:01:42 +0000 (06:01 +0000)
commit4bc1796b346efd10f3fb19b176ff089179263a24
treea469e104bd24039fe5f804556446216b9f1ac9e0
parentb2371c25fed6b2e751163df590bb9d9a93a75a0f
acl-plugin: multicore: session management fixes

- implement a 1us purgatory for the session structures
  by adding a special connection list, where all connections
  about to be deleted go.

- add per-list-head timeouts updated upon the list enqueue/dequeue
  for connection idle management

- add a "unused" session list with list ID#0, which should
  never be used unless there is a logic error. Use this ID
  to initialize the sessions.

- improve the maintainability of the session linked list
  structures by using symbolic bogus index name instead of ~0

- change the ordering of session creations - first reverse, then
  local. To minimize the potential for two workers competing for
  the same session in the corner case of the two packets
  on different workers creating the same logical session

- reduce the maximum session count to keep the memory usage the same

- add extra log/debug/trace to session cleaning logic

- be more aggressive with cleaning up sessions - wind up the
  interrupts from the workers to themselves if there is more
  work to do

Change-Id: I3aa1c91a925a08e83793467cb15bda178c21e426
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
src/plugins/acl/acl.c
src/plugins/acl/acl.h
src/plugins/acl/dataplane_node.c
src/plugins/acl/fa_node.h
src/plugins/acl/sess_mgmt_node.c
src/plugins/acl/session_inlines.h