On 6 Jul 2021, at 15:11, Cian Ferriter wrote:
From: Kumar Amber <[email protected]>
This commit adds a new command to allow the user to enable
autovalidatior by default at build time thus allowing for
runnig unit test by default.
$ ./configure --enable-mfex-default-autovalidator
Signed-off-by: Kumar Amber <[email protected]>
Co-authored-by: Harry van Haaren <[email protected]>
Signed-off-by: Harry van Haaren <[email protected]>
---
v5:
- fix review comments(Ian, Flavio, Eelco)
---
---
Documentation/topics/dpdk/bridge.rst | 5 +++++
NEWS | 5 +++--
acinclude.m4 | 16 ++++++++++++++++
configure.ac | 1 +
lib/dpif-netdev-private-extract.c | 8 +++++++-
5 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/Documentation/topics/dpdk/bridge.rst
b/Documentation/topics/dpdk/bridge.rst
index 2901e8096..c79e108b7 100644
--- a/Documentation/topics/dpdk/bridge.rst
+++ b/Documentation/topics/dpdk/bridge.rst
@@ -305,3 +305,8 @@ implementations provide the same results.
To set the Miniflow autovalidator, use this command ::
$ ovs-appctl dpif-netdev/miniflow-parser-set autovalidator
+
+A compile time option is available in order to test it with the OVS
unit
+test suite. Use the following configure option ::
+
+ $ ./configure --enable-mfex-default-autovalidator
diff --git a/NEWS b/NEWS
index 275aa1868..608c5a32f 100644
--- a/NEWS
+++ b/NEWS
@@ -25,9 +25,11 @@ Post-v2.15.0
* Add command line option to switch between mfex function
pointers.
* Add miniflow extract auto-validator function to compare
different
miniflow extract implementations against default
implementation.
- * Add study function to miniflow function table which studies
packet
+ * Add study function to miniflow function table which studies
packet
and automatically chooses the best miniflow implementation for
that
traffic.
+ * Add build time configure command to enable auto-validatior as
default
+ miniflow implementation at build time.
- ovs-ctl:
* New option '--no-record-hostname' to disable hostname
configuration
in ovsdb on startup.
@@ -44,7 +46,6 @@ Post-v2.15.0
* New option '--election-timer' to the 'create-cluster' command
to set the
leader election timer during cluster creation.
-
v2.15.0 - 15 Feb 2021
---------------------
- OVSDB:
diff --git a/acinclude.m4 b/acinclude.m4
index 5fbcd9872..e2704cfda 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -14,6 +14,22 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+dnl Set OVS MFEX Autovalidator as default miniflow extract at compile
time?
+dnl This enables automatically running all unit tests with all MFEX
+dnl implementations.
+AC_DEFUN([OVS_CHECK_MFEX_AUTOVALIDATOR], [
+ AC_ARG_ENABLE([mfex-default-autovalidator],
+
[AC_HELP_STRING([--enable-mfex-default-autovalidator], [Enable MFEX
autovalidator as default miniflow_extract implementation.])],
+ [autovalidator=yes],[autovalidator=no])
+ AC_MSG_CHECKING([whether MFEX Autovalidator is default
implementation])
+ if test "$autovalidator" != yes; then
+ AC_MSG_RESULT([no])
+ else
+ OVS_CFLAGS="$OVS_CFLAGS -DMFEX_AUTOVALIDATOR_DEFAULT"
+ AC_MSG_RESULT([yes])
+ fi
+])
+
dnl Set OVS DPCLS Autovalidator as default subtable search at compile
time?
dnl This enables automatically running all unit tests with all DPCLS
dnl implementations.
diff --git a/configure.ac b/configure.ac
index e45685a6c..46c402892 100644
--- a/configure.ac
+++ b/configure.ac
@@ -186,6 +186,7 @@ OVS_ENABLE_SPARSE
OVS_CTAGS_IDENTIFIERS
OVS_CHECK_DPCLS_AUTOVALIDATOR
OVS_CHECK_DPIF_AVX512_DEFAULT
+OVS_CHECK_MFEX_AUTOVALIDATOR
OVS_CHECK_BINUTILS_AVX512
AC_ARG_VAR(KARCH, [Kernel Architecture String])
diff --git a/lib/dpif-netdev-private-extract.c
b/lib/dpif-netdev-private-extract.c
index eaddeceaf..6ae91a24d 100644
--- a/lib/dpif-netdev-private-extract.c
+++ b/lib/dpif-netdev-private-extract.c
@@ -76,6 +76,12 @@ dpif_miniflow_extract_init(void)
miniflow_extract_func
dp_mfex_impl_get_default(void)
{
+
+#ifdef MFEX_AUTOVALIDATOR_DEFAULT
+ VLOG_INFO("Default miniflow Extract implementation %s",
+ mfex_impls[MFEX_IMPL_AUTOVALIDATOR].name);
+ default_mfex_func =
mfex_impls[MFEX_IMPL_AUTOVALIDATOR].extract_func;
+#else
The change above forces you to always use the autovalidator, even if you
configure another option. I think this would make it impossible to run
potential tests cases with the autovalidator as default.
I think this should probably be protected by ovsthread_once_start(), so
it will only be run once at startup time. It might be even better to do
this at init time? For example (did not test):
102 void
103 dpif_miniflow_extract_init(void)
104 {
105 /* Call probe on each impl, and cache the result. */
106 uint32_t i;
107 for (i = 0; i < ARRAY_SIZE(mfex_impls); i++) {
108 bool avail = true;
109 if (mfex_impls[i].probe) {
110 /* Return zero is success, non-zero means error. */
111 avail = (mfex_impls[i].probe() == 0);
112 }
113 VLOG_INFO("Miniflow Extract implementation %s (available:
%s)\n",
114 mfex_impls[i].name, avail ? "True" : "False");
115 mfex_impls[i].available = avail;
116 }
117
118 #ifdef MFEX_AUTOVALIDATOR_DEFAULT
119 VLOG_INFO("Default miniflow Extract implementation %s",
120 mfex_impls[MFEX_IMPL_AUTOVALIDATOR].name);
121 default_mfex_func =
mfex_impls[MFEX_IMPL_AUTOVALIDATOR].extract_func;
122 #else
123 VLOG_INFO("Default MFEX implementation is %s.\n",
124 mfex_impls[MFEX_IMPL_SCALAR].name);
125 default_mfex_func = mfex_impls[MFEX_IMPL_SCALAR].extract_func;
126 #endif
127 }
128
129 miniflow_extract_func
130 dp_mfex_impl_get_default(void)
131 {
132 return default_mfex_func;
133 }
/* For the first call, this will be NULL. Compute the compile
time default.
*/
if (!default_mfex_func) {
@@ -84,7 +90,7 @@ dp_mfex_impl_get_default(void)
mfex_impls[MFEX_IMPL_SCALAR].name);
default_mfex_func =
mfex_impls[MFEX_IMPL_SCALAR].extract_func;
}
-
+#endif
return default_mfex_func;
}
--
2.32.0
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev