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:
committed by
Ian Stokes
parent
250ceddcc2
commit
aa85a25095
@@ -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
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user