This patch set covers removal of expressions which are subsets of other
wider expressions. This allows to avoid flow explosion in case of
negative matches. More details are in commit messages.
Version 2:
* Became a patch set.
* Added tests and missing bitmap.h include.
* Code switched to work with bitwise maskable fields only (ORDINAL).
* Added a new patch to combine smaller expressions into wider ones.
* Added a patch to fix a crash uncovered with expression aggregation.
Version 3:
* Dropped patch 3 for performance reasons for now, because it doesn't
allow to make use of I-P in many cases.
* Patch 1 re-worked to not cause performance issues for normal
address sets generated in OVN.
* Performance of the patch 1 significantly improved by not perfroming
a full n^2 search and not comparing huge empty parts of subvalues.
The patch became a bit less straightforward, but I hope it's still
fairly readable.
Version 4:
* Added extra comments.
* Added ACK from Han to patch 2.
* Re-worked path shortening (next[]) to track the last non-NULL entry.
* Restricted superset optmization to expressions that do not track
address sets. To preserve ability to use I-P. [Han]
Ilya Maximets (2):
expr: Remove supersets from OR expressions.
expr: Avoid crash if all sub-expressions crushed down to 'true'.
include/ovn/expr.h | 1 +
lib/expr.c | 255 +++++++++++++++++++++++++++++++++++----------
tests/ovn.at | 12 +++
3 files changed, 212 insertions(+), 56 deletions(-)
--
2.39.2
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev