From: Kumar Amber
This patch adds the necessary support to avx512 mfex to
support handling of tunnel packet type.
Signed-off-by: Kumar Amber
Acked-by: Cian Ferriter
Acked-by: Sunil Pai G
---
lib/dpif-netdev-avx512.c | 32 ++---
lib/dpif-netdev-extract-avx512.c | 206
From: Kumar Amber
The MFEX study function is split into outer and inner to allow
for independent selection and studying of packets in outer and inner
flows to different ISA optimized miniflow extract implementations.
Signed-off-by: Kumar Amber
Acked-by: Cian Ferriter
Acked-by: Sunil Pai G
Signed-off-by: Kumar Amber
Signed-off-by: Cian Ferriter
Co-authored-by: Cian Ferriter
Acked-by: Sunil Pai G
---
v7:
* Reword bridge.rst documentation to better explain the use of the
-recirc option and provide examples. This is all based on feedback
from Sunil.
---
Documentation/topics
From: Kumar Amber
This patch adds support for selecting the recirculation
implementation based on the DPIF implementation.
Signed-off-by: Kumar Amber
Signed-off-by: Cian Ferriter
Co-authored-by: Cian Ferriter
Acked-by: Sunil Pai G
---
lib/dpif-netdev-private-dpif.c | 73
From: Kumar Amber
The md_is_valid parameter is passed from DPIF to MFEX to allow MFEX
functions to detect the tunneling and decide the processing of Inner
packets in static predictable branches.
Signed-off-by: Kumar Amber
Acked-by: Cian Ferriter
Acked-by: Sunil Pai G
---
lib/dpif-netdev
From: Kumar Amber
This patch adds the necessary changes required to support
tunnel packet types in avx512 dpif.
Signed-off-by: Kumar Amber
Signed-off-by: Cian Ferriter
Co-authored-by: Cian Ferriter
Acked-by: Sunil Pai G
---
lib/dpif-netdev-avx512.c | 38
From: Kumar Amber
Create new APIs for the avx512 DPIF, enabling one baseline
common code to be specialized into DPIF implementations for
"outer" processing, and "recirc" processing.
Signed-off-by: Kumar Amber
Signed-off-by: Cian Ferriter
Co-authored-by: Cian Ferriter
A
From: Kumar Amber
The refactor allows us to use *recirc_depth_get() to obtain
the depth across ovs which was previously limited to only
dpif-netdev.c. The patch enables the use of recirc_depth_get()
function in avx512 dpif.
Signed-off-by: Kumar Amber
Signed-off-by: Cian Ferriter
Co-authored
From: Kumar Amber
The refactor allows us to use hash function accross
multiple files which was earlier restricted to
dpif-netdev.c only. This patch enables the use of
the hash function in avx512 dpif.
Signed-off-by: Kumar Amber
Signed-off-by: Cian Ferriter
Co-authored-by: Cian Ferriter
Acked
This Series of Patchsets introduce the Optimizations for supporting
tunneled packets in DPIF and MFEX. Along with the optimization various
refactoring of scalar path is done to be used accross without
duplication.
Over the Tests we have observed a gain of approximate 20~25% gain in
performance ove
A typical NVGRE encapsulated packet starts with the ETH/IP/GRE
protocols. Miniflow extract will parse just the ETH and IP headers. The
GRE header will be processed later as part of the pop action. Add
support for parsing the ETH/IP headers in this scenario.
Signed-off-by: Cian Ferriter
---
lib
The subtable signatures being specialized here were found in an NVGRE
tunnel scenario.
Signed-off-by: Cian Ferriter
---
v2:
* Improve commit title.
---
lib/dpif-netdev-lookup-avx512-gather.c | 4
lib/dpif-netdev-lookup-generic.c | 4
2 files changed, 8 insertions(+)
diff
.
Cian Ferriter (2):
dpif-netdev/dpcls: Specialize 8,1 and 5,2 signatures.
dpif-netdev/mfex: Add AVX512 NVGRE traffic profiles.
lib/dp-packet.h| 58 +++---
lib/dpif-netdev-extract-avx512.c | 43 ++-
lib/dpif-netdev-lookup-avx512
A typical NVGRE encapsulated packet starts with the ETH/IP/GRE
protocols. Miniflow extract will parse just the ETH and IP headers. The
GRE header will be processed later as part of the pop action. Add
support for parsing the ETH/IP headers in this scenario.
Signed-off-by: Cian Ferriter
---
lib
The subtable signatures being specialized here were found in an NVGRE
tunnel scenario.
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-lookup-avx512-gather.c | 4
lib/dpif-netdev-lookup-generic.c | 4
2 files changed, 8 insertions(+)
diff --git a/lib/dpif-netdev-lookup-avx512
This patchset adds AVX512 specialization for the NVGRE tunneling
scenario. It adds both an MFEX implementation for parsing the outer
header of a typical NVGRE packet and specialized DPCLS subtable
signatures for the lookups on both outer and inner headers.
Cian Ferriter (2):
dpif-netdev/dpcls
x27;t support the instruction.
The below OVS_CHECK_AVX512VPOPCNTDQ AC function will check for both
compiler and assembler support for the vpopcntdq instruction.
Signed-off-by: Cian Ferriter
---
acinclude.m4 | 2 +-
m4/openvswitch.m4 | 29 +
2 files changed, 30 inser
simple match lookup means an upcall is
required because there is no suitable flow in the datapath. Fall back to
the scalar DPIF to do this upcall just like we already do later in
AVX512 DPIF when we have misses in the DPCLS.
Signed-off-by: Cian Ferriter
Tested-by: Harry van Haaren
---
v2
to-Phy scenario.
Cian Ferriter (2):
dpif-netdev: Refactor simple match lookup functions.
dpif-avx512: Add support for simple match lookup.
lib/dpif-netdev-avx512.c | 53 --
lib/dpif-netdev-private-dpif.h | 12
lib/dpif-netdev.c | 11 +
Make the simple match functions used during lookup non-static to allow
reuse of these functions in the AVX512 DPIF.
Signed-off-by: Cian Ferriter
Tested-by: Harry van Haaren
---
v2:
* Make the 3 simple match lookup function definitions non-static rather
than moving the defitions to the lib
Move the simple match functions used during lookup to allow reuse of
these functions in the AVX512 DPIF.
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-private-dpif.c | 69 +++
lib/dpif-netdev-private-dpif.h | 12 ++
lib/dpif-netdev.c | 74
simple match lookup means an upcall is
required because there is no suitable flow in the datapath. Fall back to
the scalar DPIF to do this upcall just like we already do later in
AVX512 DPIF when we have misses in the DPCLS.
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-avx512.c | 52
The bug being checked for by OVS_CHECK_BINUTILS_AVX512 is only present
when the compiler is GCC. Add a check for GCC before the other checks.
Also only create the directory and variables for the assembler check if
gcc and x86_64 are present.
Signed-off-by: Cian Ferriter
---
m4/openvswitch.m4
one has ideas about how we could handle these
flags for both Windows and existing Linux builds.
Cian Ferriter (1):
configure: Run AVX512 binutils check only for GCC.
m4/openvswitch.m4 | 33 +++--
1 file changed, 19 insertions(+), 14 deletions(-)
--
2.25.1
__
__builtin_constant_p is only available in GCC and only versions >= 4.
Use the same "#if __GNUC__ >= 4" check used in other parts of OVS for
this builtin.
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-extract-avx512.c | 4
1 file changed, 4 insertions(+)
diff --git a
support for AVX512F, this
patch will allow building the AVX512 DPIF.
Another example, in GCC 5 and 6, most AVX512 code can be generated, just
without AVX512VPOPCNTDQ support.
Signed-off-by: Cian Ferriter
---
v5:
* Create a selector function for the permutexvar implementations based
on Sunil
l.
Remove these unnecessary function-level compiler target attributes.
Signed-off-by: Cian Ferriter
Acked-by: Sunil Pai G
---
v5:
* Remove an 'avx512bw' target since it's also unnecessary as per Sunil's
suggestion.
* Add Sunil's Acked-by tag.
v4:
* Remove the 'avx
No instructions from the AVX512DQ ISA are used anywhere in OVS. Remove
this unnecessary CFLAG.
Signed-off-by: Cian Ferriter
Acked-by: Sunil Pai G
---
v5:
* Add Sunil's Acked-by tag.
v4:
* Add this commit to the series.
---
lib/automake.mk | 1 -
1 file changed, 1 deletion(-)
diff --
4138e ("dpif-netdev/dpcls-avx512: Enable 16 block processing.")
Signed-off-by: Cian Ferriter
Acked-by: Sunil Pai G
---
v4:
* Added Sunil's Fixes and Acked-by tags.
v3:
* Add this commit to the series.
---
lib/dpif-netdev-lookup-avx512-gather.c | 2 +-
1 file changed, 1 insertion(
Fixes: 250ceddcc2d0 ("dpif-netdev/mfex: Add AVX512 based optimized miniflow
extract")
Fixes: aa85a25095ae ("dpif-netdev/mfex: Add more AVX512 traffic profiles")
Signed-off-by: Cian Ferriter
Acked-by: Sunil Pai G
---
v4:
* Added Sunil's Fixes and Acked-by tags.
---
typo present on OVS master code VMBI -> VBMI.
* Don't register vbmi specialized mfex impls unless VBMI is actually
available.
* This required some re-ordering of the mfex impl lists.
Cian Ferriter (5):
dpif-netdev-private-extract: Fix typo VMBI -> VBMI.
dpif-netdev-lookup: F
The hash of the port number is only needed when a DPCLS needs to be
created. Move the hash calculation inside the if to accomplish this.
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
support for AVX512F, this
patch will allow building the AVX512 DPIF.
Another example, in GCC 5 and 6, most AVX512 code can be generated, just
without AVX512VPOPCNTDQ support.
Signed-off-by: Cian Ferriter
---
v4:
* Combine the 3 commits which added checks for AVX512 ISA into this
single commit
No instructions from the AVX512DQ ISA are used anywhere in OVS. Remove
this unnecessary CFLAG.
Signed-off-by: Cian Ferriter
---
v4:
* Add this commit to the series.
---
lib/automake.mk | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/automake.mk b/lib/automake.mk
index a23cdc4ad
h of these unnecessary function-level compiler target
attributes.
Signed-off-by: Cian Ferriter
---
v4:
* Remove the 'avx512f' target since it's also unnecessary.
* Sunil acked the v3 version of this commit, but since it's changed, I'm
not carrying the ack over.
---
l
4138e ("dpif-netdev/dpcls-avx512: Enable 16 block processing.")
Signed-off-by: Cian Ferriter
Acked-by: Sunil Pai G
---
v4:
* Added Sunil's Fixes and Acked-by tags.
v3:
* Add this commit to the series.
---
lib/dpif-netdev-lookup-avx512-gather.c | 2 +-
1 file changed, 1 insertion(
Don't register vbmi specialized mfex impls unless VBMI is actually
available.
* This required some re-ordering of the mfex impl lists.
Cian Ferriter (5):
dpif-netdev-private-extract: Fix typo VMBI -> VBMI.
dpif-netdev-lookup: Fix GCC 5 warning.
dpif-netdev-extract: Remove unneces
Fixes: 250ceddcc2d0 ("dpif-netdev/mfex: Add AVX512 based optimized miniflow
extract")
Fixes: aa85a25095ae ("dpif-netdev/mfex: Add more AVX512 traffic profiles")
Signed-off-by: Cian Ferriter
Acked-by: Sunil Pai G
---
v4:
* Added Sunil's Fixes and Acked-by tags.
---
UINT64_C(1) is required in this bitshift since batch_size can be 32 and
1 << 32 overflows UINT32_C(1).
Fixes: ba0a2619ca0c ("dpif-netdev-avx512: Fix ubsan shift error in bitmasks.")
Signed-off-by: Cian Ferriter
---
The other uses of UINT32_C(1) in the dpif-netdev-avx512 files
Tunnel virtual ports are supported in the userspace datapath. Update the
answer to reflect this.
Fixes: a36de779d739 ("openvswitch: Userspace tunneling.")
Signed-off-by: Cian Ferriter
---
Documentation/faq/releases.rst | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
di
The QEMU version requirement of >= 2.7 is for vhost-user-client ports
specifically.
Signed-off-by: Cian Ferriter
---
Documentation/topics/dpdk/vhost-user.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/topics/dpdk/vhost-user.rst
b/Documentation/topics/d
Checking for AVX512VPOPCNTDQ separately will allow the compiler to
generate other AVX512 ISA code where supported. This is relevant for GCC
where AVX512VPOPCNTDQ support is added in GCC 7. In GCC 5 and 6, most
AVX512 code can be generated, just without VPOPCNTDQ support.
Signed-off-by: Cian
Only use the "avx512vbmi" compiler target when it is actually supported
by the compiler.
Signed-off-by: Cian Ferriter
---
v3:
* Preserve the order of the mfex impl list. v2 changed this order. We
want the order to be preserved because VBMI functions should be chosen
by the mfex
There are no instructions from this ISA used. The target is not needed.
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-extract-avx512.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/lib/dpif-netdev-extract-avx512.c b/lib/dpif-netdev-extract-avx512.c
index c1c1fefb6..f36a6eab0 100644
-mavx512vpopcntdq
check is removed from OVS_CHECK_AVX512. That is done in a later patch.
Signed-off-by: Cian Ferriter
---
acinclude.m4 | 15 +++
configure.ac | 1 +
lib/automake.mk | 12
lib/dpif-netdev-lookup.c
GCC 5 gave an incompatible pointer type warning for pkt_blocks when it's
passed to _mm512_mask_i64gather_epi64().
Follow the same pattern used for tbl_blocks where the 'const uint64_t *'
is cast to a 'const void *' when passed in to avx512_blocks_gather().
Signed-off-by
i specialized mfex impls unless VBMI is actually
available.
* This required some re-ordering of the mfex impl lists.
Cian Ferriter (6):
dpif-netdev-private-extract: Fix typo VMBI -> VBMI.
dpif-netdev-lookup: Fix GCC 5 warning.
dpif-netdev-extract: Remove ISA compiler target for mfex.
ac
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-private-extract.c | 8
lib/dpif-netdev-private-extract.h | 10 +-
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/lib/dpif-netdev-private-extract.c
b/lib/dpif-netdev-private-extract.c
index a29bdcfa7..d8e2a55f2
Only use the "avx512vbmi" compiler target when it is actually supported
by the compiler.
The order of mfex_impls and the 'dpif_miniflow_extract_impl_idx' enum
have to be changed to keep the start index and size of the impl list
correct in both VBMI and non VBMI cases.
Checking for AVX512VPOPCNTDQ separately will allow the compiler to
generate other AVX512 ISA code where supported. This is relevant for GCC
where AVX512VPOPCNTDQ support is added in GCC 7. In GCC 5 and 6, most
AVX512 code can be generated, just without VPOPCNTDQ support.
Signed-off-by: Cian
-mavx512vpopcntdq
check is removed from OVS_CHECK_AVX512. That is done in a later patch.
Signed-off-by: Cian Ferriter
---
acinclude.m4 | 15 +++
configure.ac | 1 +
lib/automake.mk | 12
lib/dpif-netdev-lookup.c
There are no instructions from this ISA used. The target is not needed.
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-extract-avx512.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/lib/dpif-netdev-extract-avx512.c b/lib/dpif-netdev-extract-avx512.c
index c1c1fefb6..f36a6eab0 100644
VBMI.
* Don't register vbmi specialized mfex impls unless VBMI is actually
available.
* This required some re-ordering of the mfex impl lists.
Cian Ferriter (5):
dpif-netdev-private-extract: Fix typo VMBI -> VBMI.
dpif-netdev-extract: Remove ISA compiler target for mfex.
acinclude: A
---
lib/dpif-netdev-private-extract.c | 8
lib/dpif-netdev-private-extract.h | 10 +-
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/lib/dpif-netdev-private-extract.c
b/lib/dpif-netdev-private-extract.c
index a29bdcfa7..d8e2a55f2 100644
--- a/lib/dpif-netdev-priv
Checking for AVX512VPOPCNTDQ separately will allow the compiler to
generate other AVX512 ISA code where supported. This is relevant for GCC
where AVX512VPOPCNTDQ support is added in GCC 7. In GCC 5 and 6, most
AVX512 code can be generated, just without VPOPCNTDQ support.
Signed-off-by: Cian
-mavx512vpopcntdq
check is removed from OVS_CHECK_AVX512. That is done in a later patch.
Signed-off-by: Cian Ferriter
---
acinclude.m4 | 15 +++
configure.ac | 1 +
lib/automake.mk | 12
lib/dpif-netdev-lookup.c
Only use the "avx512vbmi" compiler target when it is actually supported
by the compiler.
Signed-off-by: Cian Ferriter
---
acinclude.m4 | 14 ++
configure.ac | 1 +
lib/dpif-netdev-extract-avx512.c | 10 +-
3 files c
ase, where currently, we build all or none of the AVX512 code.
For my testing on Ubuntu 20.04, the below steps were very helpful for
installing and switching between different GCC versions.
https://askubuntu.com/a/1313032
Cian Ferriter (4):
dpif-netdev-extract: Remove ISA compiler targe
There are no instructions from this ISA used. The target is not needed.
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-extract-avx512.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/lib/dpif-netdev-extract-avx512.c b/lib/dpif-netdev-extract-avx512.c
index c1c1fefb6..f36a6eab0 100644
ow_extract_opt' which was a
atomic_store_relaxed() with atomic_init().
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-extract-study.c | 12
lib/dpif-netdev-private-extract.c | 8 ++--
lib/dpif-netdev.c | 16 +---
3 files changed, 11 insert
rmail/ovs-dev/2022-January/390757.html
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-private-dpcls.h | 6 --
lib/dpif-netdev.c | 20
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/lib/dpif-netdev-private-dpcls.h b/lib/dpif-netdev-private-
dev: add subtable lookup prio set command.")
Reported-by: Ilya Maximets
Reported-at:
https://mail.openvswitch.org/pipermail/ovs-dev/2022-January/390757.html
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-private-dpcls.h | 2 +-
lib/dpif-netdev.c | 23 +++
2
The IP addresses being recommended for the VM interface and the
"remote_ip" on the tunnel port are wrong. The host1 values were being
used before. Update to use the host2 values.
Signed-off-by: Cian Ferriter
---
v2:
- Refer directly to the commands that the host2 IP addresses should
These comments are relevant to SMC too.
Fixes: 60d8ccae135f ("dpif-netdev: Add SMC cache after EMC cache")
Signed-off-by: Cian Ferriter
Acked-by: Kevin Traynor
---
lib/dpif-netdev-private-dfc.h| 3 ++-
lib/dpif-netdev-private-thread.h | 8
2 files changed, 6 insert
ut they rely
on more structs. I stopped this because I would have to move bigger
structs like "struct dp_netdev_rxq" which rely on even more structs all
defined in dpif-netdev.c.
Signed-off-by: Cian Ferriter
Co-authored-by: Harry van Haaren
Signed-off-by: Harry van Haaren
Co-authored-
.
ovs-vsctl set Open_vSwitch . other_config:async-iteration-delay=2
Signed-off-by: Cian Ferriter
---
v2:
- Add this commit.
---
lib/dpif-netdev-private-defer.h | 9 +++
lib/dpif-netdev.c | 45 +++--
2 files changed, 52 insertions(+), 2 deletions
This uses a similar method to how cycles are attributed to RXQs in
dp_netdev_pmd_flush_output_on_port().
Signed-off-by: Cian Ferriter
---
Adding this cycle counting code costs ~2.5% performance (0.975x pre
cycle counting performance). This is for a PV scenario with a vhostuser
port and no DMA
cess_async()" API to implement an
attempt limit on the number of times an asynchronous piece of work
should be attempted.
- Do all outstanding work on a PMD thread before allowing a reload to
occur.
Cian Ferriter (3):
dpif-netdev: Add a per thread work ring
dpif-netdev: Count cycles spent
These comments are relevant to SMC too.
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-private-dfc.h| 3 ++-
lib/dpif-netdev-private-thread.h | 8
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/lib/dpif-netdev-private-dfc.h b/lib/dpif-netdev-private-dfc.h
index
The IP addresses being recommended for the VM interface and the
"remote_ip" on the tunnel port are wrong. The host1 values were being
used before. Update to use the host2 values.
Signed-off-by: Cian Ferriter
---
I hope I'm reading the guide correctly here. I'm fairly sure t
dpdkvhostuser ports are deprecated, but are still being recommended to
users through the documentation. Fix this.
Signed-off-by: Cian Ferriter
---
Documentation/howto/dpdk.rst| 30 +++--
Documentation/howto/userspace-tunneling.rst | 3 ++-
Documentation/intro
Directly copying the CMD from either the .rst file or the docs on the
web caused errors in the QEMU command because of how it was wrapped.
Signed-off-by: Cian Ferriter
---
The CMD could be wrapped, but without the indentation to look like this:
qemu-system-x86_64 -hda ubuntu1810.qcow \
-m
Document the "ovs-appctl dpif-netdev/miniflow-parser-get" and
"ovs-appctl dpif-netdev/miniflow-parser-set" commands in the vswitchd
manpage.
Fixes: 3d8f47bc041a ("dpif-netdev: Add command line and function pointer for
miniflow extract")
Signed-off-by: Cian Ferr
The "name" parameter isn't optional so don't use brackets around it.
Fixes: 5c5c98cec21b ("docs/dpdk/bridge: Add miniflow extract section.")
Signed-off-by: Cian Ferriter
---
v2:
- Change indentation after wrapping shell command.
---
Documentation/topics/dp
dd subtable lookup prio set command.")
Signed-off-by: Cian Ferriter
---
v2:
- Add one line summary in commit message.
- Add that the number of affected dpcls ports and subtables is returned.
---
lib/dpif-netdev-unixctl.man | 12
1 file changed, 12 insertions(+)
diff --git
Fixes: 9ff7cabfd78d ("dpif-netdev: add subtable-lookup-prio-get command.")
Fixes: 3d018c3ea79d ("dpif-netdev: add subtable lookup prio set command.")
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-unixctl.man | 10 ++
1 file changed, 10 insertions(+)
diff --g
The "name" parameter isn't optional so don't use brackets around it.
Fixes: 5c5c98cec21b ("docs/dpdk/bridge: Add miniflow extract section.")
Signed-off-by: Cian Ferriter
---
Documentation/topics/dpdk/bridge.rst | 4 ++--
1 file changed, 2 insertions(+)
Fixes: 3d8f47bc041a ("dpif-netdev: Add command line and function pointer for
miniflow extract")
Signed-off-by: Cian Ferriter
---
lib/dpif-netdev-unixctl.man | 10 ++
1 file changed, 10 insertions(+)
diff --git a/lib/dpif-netdev-unixctl.man b/lib/dpif-netdev-unixctl.man
index
From: Harry van Haaren
This commit enables the AVX512-VPOPCNTDQ Vector Popcount
instruction. This instruction is not available on every CPU
that supports the AVX512-F Foundation ISA, hence it is enabled
only when the additional VPOPCNTDQ ISA check is passed.
The vector popcount instruction is us
From: Harry van Haaren
This commit adds more subtables to be specialized. The traffic
pattern here being matched is VXLAN traffic subtables, which commonly
have (5,3), (9,1) and (9,4) subtable fingerprints.
Signed-off-by: Harry van Haaren
Acked-by: Flavio Leitner
---
v14:
- Added Flavio's Ac
/dpdk.c level, the ISA checks remain
runtime for the CPU where they are executed, but subsequent checks
for the same ISA feature become much cheaper.
Signed-off-by: Harry van Haaren
Co-authored-by: Cian Ferriter
Signed-off-by: Cian Ferriter
Acked-by: Flavio Leitner
---
v14:
- Added Flavio
From: Harry van Haaren
This commit implements larger subtable searches in avx512. A limitation
of the previous implementation was that up to 8 blocks of miniflow
data could be matched on (so a subtable with 8 blocks was handled
in avx, but 9 blocks or more would fall back to scalar/generic).
This
dev_flow_hash() when it is moved
definition to fix a compiler error.
One valid checkpatch issue with the use of the
EMC_FOR_EACH_POS_WITH_HASH() macro was fixed.
Signed-off-by: Harry van Haaren
Co-authored-by: Cian Ferriter
Signed-off-by: Cian Ferriter
Acked-by: Flavio Leitner
---
inst the unit-tests.
Signed-off-by: Harry van Haaren
Co-authored-by: Cian Ferriter
Signed-off-by: Cian Ferriter
---
v15:
- Address Flavio's comments from the v14 review.
- Move dp_netdev_impl_set_default_by_name() below
dp_netdev_impl_get_by_name() since it relies on that function, and i
:
$ ovs-appctl dpif-netdev/dpif-impl-get
Signed-off-by: Harry van Haaren
Co-authored-by: Cian Ferriter
Signed-off-by: Cian Ferriter
---
v15:
- Address Flavio's comments from the v14 review.
v14:
- Rename command to dpif-impl-get.
- Hide more of the dpif impl details from lib/dpif-netdev.c. P
It is possible for packets traversing the userspace datapath to match a
flow before hitting on EMC by using a mark ID provided by a NIC. Add a
PMD statistic for this hit.
Signed-off-by: Cian Ferriter
Acked-by: Flavio Leitner
---
Cc: Gaetan Rivet
Cc: Sriharsha Basavapatna
v14:
- Added
able to handle the AVX512 intrinsics, causing compile
time failures, so it is disabled for this file.
Signed-off-by: Harry van Haaren
Co-authored-by: Cian Ferriter
Signed-off-by: Cian Ferriter
Co-authored-by: Kumar Amber
Signed-off-by: Kumar Amber
Acked-by: Flavio Leitner
---
v15:
- Added
performance.
Signed-off-by: Harry van Haaren
Co-authored-by: Cian Ferriter
Signed-off-by: Cian Ferriter
Acked-by: Flavio Leitner
---
v15:
- Added Flavio's Acked-by tag.
v14:
- Add ATOMIC macro to netdev_input_func function pointer in struct
dp_netdev_pmd_thread.
v13:
- Minor code refact
Improve dynamicness of patterns
Add more demo protocols to show usage
- Future work
--- Documentation/NEWS items
--- Statistics for optimized MFEX
- Note that this patchset will be discussed/presented at OvsConf soon :)
v3 update summary:
(Cian Ferriter helping with rebases, review a
From: Harry van Haaren
This commit adds 3 new traffic profile implementations to the
existing avx512 miniflow extract infrastructure. The profiles added are:
- Ether()/IP()/TCP()
- Ether()/Dot1Q()/IP()/UDP()
- Ether()/Dot1Q()/IP()/TCP()
The design of the avx512 code here is for scalability to ad
From: Harry van Haaren
This commit adds AVX512 implementations of miniflow extract.
By using the 64 bytes available in an AVX512 register, it is
possible to convert a packet to a miniflow data-structure in
a small quantity instructions.
The implementation here probes for Ether()/IP()/UDP() traff
From: Kumar Amber
Tests:
6: OVS-DPDK - MFEX Autovalidator
7: OVS-DPDK - MFEX Autovalidator Fuzzy
Added a new directory to store the PCAP file used
in the tests and a script to generate the fuzzy traffic
type pcap to be used in fuzzy unit test.
Signed-off-by: Kumar Amber
---
v5:
- fix rev
From: Harry van Haaren
This commit adds a new counter to be displayed to the user when
requesting datapath packet statistics. It counts the number of
packets that are parsed and a miniflow built up from it by the
optimized miniflow extract parsers.
The ovs-appctl command "dpif-netdev/pmd-perf-sh
From: Harry van Haaren
This commit enables OVS to at runtime check for more detailed
AVX512 capabilities, specifically Byte and Word (BW) extensions,
and Vector Bit Manipulation Instructions (VBMI).
These instructions will be used in the CPU ISA optimized
implementations of traffic profile aware
From: Kumar Amber
This commit introduces additional command line paramter
for mfex study function. If user provides additional packet out
it is used in study to compare minimum packets which must be processed
else a default value is choosen.
Also introduces a third paramter for choosing a particu
From: Kumar Amber
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
Co-authored-by: Harry van Haaren
Signed-off-by: Har
as running fuzzy tests.
Signed-off-by: Kumar Amber
Co-authored-by: Cian Ferriter
Signed-off-by: Cian Ferriter
Co-authored-by: Harry van Haaren
Signed-off-by: Harry van Haaren
---
v5:
- fix review comments(Ian, Flavio, Eelco)
---
---
Documentation/topics/dpdk/bridge.rst | 49
From: Kumar Amber
The study function runs all the available implementations
of miniflow_extract and makes a choice whose hitmask has
maximum hits and sets the mfex to that function.
Study can be run at runtime using the following command:
$ ovs-appctl dpif-netdev/miniflow-parser-set study
Sign
From: Kumar Amber
This patch introduced the auto-validation function which
allows users to compare the batch of packets obtained from
different miniflow implementations against the linear
miniflow extract and return a hitmask.
The autovaidator function can be triggered at runtime using the
follo
From: Kumar Amber
This patch introduces the mfex function pointers which allows
the user to switch between different miniflow extract implementations
which are provided by the OVS based on optimized ISA CPU.
The user can query for the available minflow extract variants available
for that CPU by
1 - 100 of 198 matches
Mail list logo