mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
dpif-netdev: implement subtable lookup validation.
This commit refactors the existing dpif subtable function pointer infrastructure, and implements an autovalidator component. The refactoring of the existing dpcls subtable lookup function handling, making it more generic, and cleaning up how to enable more implementations in future. In order to ensure all implementations provide identical results, the autovalidator is added. The autovalidator itself implements the subtable lookup function prototype, but internally iterates over all other available implementations. The end result is that testing of each implementation becomes automatic, when the auto- validator implementation is selected. Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com> Acked-by: William Tu <u9012063@gmail.com> Signed-off-by: Ian Stokes <ian.stokes@intel.com>
This commit is contained in:
committed by
Ian Stokes
parent
fa31efd211
commit
e90e115a01
@@ -42,6 +42,7 @@
|
||||
#include "csum.h"
|
||||
#include "dp-packet.h"
|
||||
#include "dpif.h"
|
||||
#include "dpif-netdev-lookup.h"
|
||||
#include "dpif-netdev-perf.h"
|
||||
#include "dpif-provider.h"
|
||||
#include "dummy.h"
|
||||
@@ -8428,13 +8429,11 @@ dpcls_create_subtable(struct dpcls *cls, const struct netdev_flow_key *mask)
|
||||
subtable->mf_masks = xmalloc(sizeof(uint64_t) * (unit0 + unit1));
|
||||
netdev_flow_key_gen_masks(mask, subtable->mf_masks, unit0, unit1);
|
||||
|
||||
/* Probe for a specialized generic lookup function. */
|
||||
subtable->lookup_func = dpcls_subtable_generic_probe(unit0, unit1);
|
||||
|
||||
/* If not set, assign generic lookup. Generic works for any miniflow. */
|
||||
if (!subtable->lookup_func) {
|
||||
subtable->lookup_func = dpcls_subtable_lookup_generic;
|
||||
}
|
||||
/* Get the preferred subtable search function for this (u0,u1) subtable.
|
||||
* The function is guaranteed to always return a valid implementation, and
|
||||
* possibly an ISA optimized, and/or specialized implementation.
|
||||
*/
|
||||
subtable->lookup_func = dpcls_subtable_get_best_impl(unit0, unit1);
|
||||
|
||||
cmap_insert(&cls->subtables_map, &subtable->cmap_node, mask->hash);
|
||||
/* Add the new subtable at the end of the pvector (with no hits yet) */
|
||||
|
Reference in New Issue
Block a user