2
0
mirror of https://github.com/openvswitch/ovs synced 2025-09-03 07:45:30 +00:00

dpif-netdev/mfex: Add more AVX512 traffic profiles

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 add more
traffic profiles, as well as enabling CPU ISA. Note that an implementation
is primarily adding static const data, which the compiler then specializes
away when the profile specific function is declared below.

As a result, the code is relatively maintainable, and scalable for new
traffic profiles as well as new ISA, and does not lower performance
compared with manually written code for each profile/ISA.

Note that confidence in the correctness of each implementation is
achieved through autovalidation, unit tests with known packets, and
fuzz tested packets.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Eelco Chaudron <echaudro@redhat.com>
Acked-by: Flavio Leitner <fbl@sysclose.org>
Signed-off-by: Ian Stokes <ian.stokes@intel.com>
This commit is contained in:
Harry van Haaren
2021-07-15 21:36:17 +05:30
committed by Ian Stokes
parent 250ceddcc2
commit aa85a25095
4 changed files with 194 additions and 0 deletions

View File

@@ -64,6 +64,36 @@ static struct dpif_miniflow_extract_impl mfex_impls[] = {
.probe = mfex_avx512_probe,
.extract_func = mfex_avx512_ip_udp,
.name = "avx512_ipv4_udp", },
[MFEX_IMPL_VMBI_IPv4_TCP] = {
.probe = mfex_avx512_vbmi_probe,
.extract_func = mfex_avx512_vbmi_ip_tcp,
.name = "avx512_vbmi_ipv4_tcp", },
[MFEX_IMPL_IPv4_TCP] = {
.probe = mfex_avx512_probe,
.extract_func = mfex_avx512_ip_tcp,
.name = "avx512_ipv4_tcp", },
[MFEX_IMPL_VMBI_DOT1Q_IPv4_UDP] = {
.probe = mfex_avx512_vbmi_probe,
.extract_func = mfex_avx512_vbmi_dot1q_ip_udp,
.name = "avx512_vbmi_dot1q_ipv4_udp", },
[MFEX_IMPL_DOT1Q_IPv4_UDP] = {
.probe = mfex_avx512_probe,
.extract_func = mfex_avx512_dot1q_ip_udp,
.name = "avx512_dot1q_ipv4_udp", },
[MFEX_IMPL_VMBI_DOT1Q_IPv4_TCP] = {
.probe = mfex_avx512_vbmi_probe,
.extract_func = mfex_avx512_vbmi_dot1q_ip_tcp,
.name = "avx512_vbmi_dot1q_ipv4_tcp", },
[MFEX_IMPL_DOT1Q_IPv4_TCP] = {
.probe = mfex_avx512_probe,
.extract_func = mfex_avx512_dot1q_ip_tcp,
.name = "avx512_dot1q_ipv4_tcp", },
#endif
};