On 14 Jun 2024, at 10:17, Eelco Chaudron wrote:
>> Op 14 jun 2024 om 10:13 heeft Phelan, Michael <[email protected]> het >> volgende geschreven: >> >> >>> >>> -----Original Message----- >>> From: Eelco Chaudron <[email protected]> >>> Sent: Thursday, June 13, 2024 12:45 PM >>> To: Finn, Emma <[email protected]>; Phelan, Michael >>> <[email protected]> >>> Cc: Ilya Maximets <[email protected]>; [email protected]; Van >>> Haaren, Harry <[email protected]> >>> Subject: Re: [v4] odp-execute: Fix AVX checksum calculation. >>> >>> >>> >>> On 12 Jun 2024, at 12:42, Finn, Emma wrote: >>> >>>>> -----Original Message----- >>>> >>>>> From: Eelco Chaudron <[email protected]> >>>> >>>>> Sent: Thursday, May 30, 2024 2:44 PM >>>> >>>>> To: Finn, Emma <[email protected]>; Phelan, Michael >>>> >>>>> <[email protected]> >>>> >>>>> Cc: Ilya Maximets <[email protected]>; [email protected]; Van >>>> >>>>> Haaren, Harry <[email protected]> >>>> >>>>> Subject: Re: [v4] odp-execute: Fix AVX checksum calculation. >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>>> On 30 May 2024, at 15:28, Eelco Chaudron wrote: >>>> >>>>> >>>> >>>>>>> On 30 May 2024, at 14:46, Finn, Emma wrote: >>>> >>>>>> >>>> >>>>>>>> -----Original Message----- >>>> >>>>>>>> From: Eelco Chaudron >>> <[email protected]<mailto:[email protected]>> >>>> >>>>>>>> Sent: Wednesday, May 29, 2024 3:23 PM >>>> >>>>>>>> To: Finn, Emma >>> <[email protected]<mailto:[email protected]>> >>>> >>>>>>>> Cc: Ilya Maximets <[email protected]<mailto:[email protected]>> >>> ; [email protected]<mailto:[email protected]> ; Van >>>> >>>>>>>> Haaren, Harry >>> <[email protected]<mailto:[email protected]>> >>>> >>>>>>>> Subject: Re: [v4] odp-execute: Fix AVX checksum calculation. >>>> >>>>>>>> >>>> >>>>>>>> >>>> >>>>>>>> >>>> >>>>>>>>> On 29 May 2024, at 14:51, Ilya Maximets wrote: >>>> >>>>>>>> >>>> >>>>>>>>>> On 5/29/24 11:01, Eelco Chaudron wrote: >>>> >>>>>>>>>> >>>> >>>>>>>>>> >>>> >>>>>>>>>>> On 28 May 2024, at 16:49, Ilya Maximets wrote: >>>> >>>>>>>>>> >>>> >>>>>>>>>>>> On 5/28/24 14:36, Eelco Chaudron wrote: >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>>> On 24 May 2024, at 11:20, Emma Finn wrote: >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>>> The AVX implementation for calcualting checksums was not >>>> >>>>>>>>>>>>> handling carry-over addition correctly in some cases. >>>> >>>>>>>>>>>>> This patch adds an additional shuffle to add 16-bit padding to >>>> >>>>>>>>>>>>> the final part of the calculation to handle such cases. This >>>> >>>>>>>>>>>>> commit also adds a unit test to check the checksum carry-bits >>>> >>>>>>>>>>>>> issue with actions autovalidator enabled. >>>> >>>>>>>> >>>> >>>>>>>> Hi Emma, >>>> >>>>>>>> >>>> >>>>>>>> I made the small changes, and did some more testing before I >>> committed. >>>> >>>>>>>> However, there are more failures in the same area with or without your >>>> >>>>> patch. >>>> >>>>>>>> I’m holding of committing this patch as it might be related. >>>> >>>>>>>> >>>> >>>>>>> >>>> >>>>>>> Hi Eelco, >>>> >>>>>>> >>>> >>>>>>> These tests are unrelated to this patch so I think we should go ahead >>>>>>> and >>>> >>>>> merge this. >>>> >>>>>> >>>> >>>>>> Ok, I’ll go ahead and apply it later today. >>>> >>>>>> >>>> >>>>>>>> The failing tests are (on latest main branch): >>>> >>>>>>>> >>>> >>>>>>>> 1064: ofproto - implicit mask of ipv6 proto with HOPOPT field FAILED >>>> >>>>>>>> (ofproto.at:6668) >>>> >>>>>>> >>>> >>>>>>> I investigated this test and the SIMD implementation isn't handling >>>>>>> traffic >>>> >>>>> class field correctly. I'm on PTO for the next week but I will make a fix >>>>> for this >>>> >>>>> once I'm back. >>>> >>>>>> >>>> >>>>>> Thanks! >>>> >>>>>> >>>> >>>>>>>> 2615: nsh - triangle PTAP bridge setup with NSH over vxlan-gpe >>>> >>>>>>>> FAILED >>>> >>>>>>>> (nsh.at:816) >>>> >>>>>>>> >>>> >>>>>>> For this one it looks like the scalar is expecting an ipv4 checksum of >>>>>>> 0x000 >>>> >>>>> and the SIMD implementation has calculated an ipv4 checksum of 0xDF77. >>>> >>>>>>> This is more a logic question whether or not the checksum should be >>>> >>>>> calculated for this? Thoughts? >>>> >>>>>> >>>> >>>>>> I need to look at the tests, but if it’s a UDP packet, and the original >>>>>> UDP >>>> >>>>> checksum was 0, it should stay zero. >>>> >>>>> >>>> >>>>> >>>> >>>>> In addition, any idea why these tests do not fail in Intel’s upstream unit >>> tests? >>>> >>>>> Do they use different hardware? Copied in Michael, maybe he knows more >>>> >>>>> about the setup/tests. >>>> >>>>> >>>> >>>>> //Eelco >>>> >>>>> >>>> >>>> >>>> >>>> I have investigated both unit test failures. >>>> >>>> 1064: ofproto - implicit mask of ipv6 proto with HOPOPT field FAILED >>> (ofproto.at:6668) >>>> >>>> For this one, the AVX implementation didn't handle setting the IPv6 traffic >>> class field. >>>> >>>> >>>> >>>> 2615: nsh - triangle PTAP bridge setup with NSH over vxlan-gpe FAILED >>> (nsh.at:816) >>>> >>>> For this one, the AVX implementation was missing a check for IPv4 checksum >>> offload flag. >>>> >>>> I have 2 separate patches to fix these issues and will send shortly. >>> >>> Thanks Emma, I’ll review them next week, as I’m out at a conference (and a >>> lot >>> of internal meetings). >>> >>>> As for the Intel unit test CI (ovsrobot/intel-ovs-compilation), make check >>>> is >>> never run with >>>> >>>> any of the AVX autovalidators enabled. Table below shows the 4 builds and >>> the unit tests ran >>>> >>>> after each build. >>> >>> I guess it would be good to add the “make check” to the runs below. Michael >>> would you be able to set this up? >> Hi Eelco, >> Yes, I can add make check to all of the runs on Intel CI. I will set that up >> now. > > Thanks Michael for adding this. You might want to wait until the patches are > in as it will fail without them. Michael, the fixes are included in the main branch, so please go ahead and add the extra test cases. Cheers, Eelco >>> Thanks, >>> >>> Eelco >>> >>>> Name >>>> >>>> Build >>>> >>>> Unit tests >>>> >>>> ACTIONS >>>> >>>> ./configure --enable-actions-default-autovalidator >>>> >>>> make check-dpdk >>>> >>>> make check-system-userspace >>>> >>>> DPCLS >>>> >>>> ./configure --enable-autovalidator >>>> >>>> make check-dpdk >>>> >>>> make check-system-userspace >>>> >>>> DPIF >>>> >>>> ./configure --enable-dpif-default-avx512 >>>> >>>> make check-dpdk >>>> >>>> make check-system-userspace >>>> >>>> MFEX >>>> >>>> ./configure --enable-mfex-default-autovalidator >>>> >>>> make check-dpdk >>>> >>>> make check-system-userspace >>>> >>>> >>>> >>>> >>>> >>>>>>>> Here are some details: >>>> >>>>>>>> >>>> >>>>>>>> 2024-05- >>>> >>>>> 29T14:18:53.923Z|00119|odp_execute_impl|ERR|Autovalidation >>>> >>>>>>>> of avx512 failed. Details: >>>> >>>>>>>> Packet: 0 >>>> >>>>>>>> Action : set(ipv6(tclass=0x2/0x3)) >>>> >>>>>>>> Good hex: >>>> >>>>>>>> 00000000 50 54 00 00 00 0c 50 54-00 00 00 0b 86 dd 60 20 >>>> >>>>>>>> 00000010 00 00 00 48 01 40 20 01-0d b8 00 00 00 00 00 00 >>>> >>>>>>>> 00000020 00 00 00 00 00 01 01 11-0d b8 00 00 00 00 00 00 >>>> >>>>>>>> 00000030 00 00 00 00 00 05 00 00-1b fc 00 00 00 00 00 01 >>>> >>>>>>>> 00000040 02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11 >>>> >>>>>>>> 00000050 12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21 >>>> >>>>>>>> 00000060 22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31 >>>> >>>>>>>> 00000070 32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f Test hex: >>>> >>>>>>>> 00000000 50 54 00 00 00 0c 50 54-00 00 00 0b 86 dd 60 00 >>>> >>>>>>>> 00000010 00 00 00 48 01 40 20 01-0d b8 00 00 00 00 00 00 >>>> >>>>>>>> 00000020 00 00 00 00 00 01 01 11-0d b8 00 00 00 00 00 00 >>>> >>>>>>>> 00000030 00 00 00 00 00 05 00 00-1b fc 00 00 00 00 00 01 >>>> >>>>>>>> 00000040 02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11 >>>> >>>>>>>> 00000050 12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21 >>>> >>>>>>>> 00000060 22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31 >>>> >>>>>>>> 00000070 32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f 2024-05- >>>> >>>>>>>> 29T14:18:53.926Z|00120|unixctl|DBG|received request netdev- >>>> >>>>>>>> >>>> >>>>> dummy/receive["p1","in_port(1),eth(src=50:54:00:00:00:0b,dst=50:54:0 >>>> >>>>>>>> 0:0 >>>> >>>>>>>> >>> 0:00:0c),eth_type(0x86dd),ipv6(src=2001:db8::1,dst=111:db8::6,proto= >>>> >>>>>>>> 1,tcl ass=0,hlimit=64,frag=no),icmpv6(type=0,code=8)"], id=0 >>>> >>>>>>>> 2024-05- 29T14:18:53.926Z|00121|unixctl|DBG|replying with >>> success, >>>> >>>>>>>> id=0: "" >>>> >>>>>>>> 2024-05- >>>> >>>>> 29T14:18:53.926Z|00122|odp_execute_impl|ERR|Autovalidation >>>> >>>>>>>> of avx512 failed. Details: >>>> >>>>>>>> Packet: 0 >>>> >>>>>>>> Action : set(ipv6(tclass=0x40/0xfc)) Good hex: >>>> >>>>>>>> 00000000 50 54 00 00 00 0c 50 54-00 00 00 0b 86 dd 64 00 >>>> >>>>>>>> 00000010 00 00 00 48 01 40 20 01-0d b8 00 00 00 00 00 00 >>>> >>>>>>>> 00000020 00 00 00 00 00 01 01 11-0d b8 00 00 00 00 00 00 >>>> >>>>>>>> 00000030 00 00 00 00 00 06 00 00-1b fc 00 00 00 00 00 01 >>>> >>>>>>>> 00000040 02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11 >>>> >>>>>>>> 00000050 12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21 >>>> >>>>>>>> 00000060 22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31 >>>> >>>>>>>> 00000070 32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f Test hex: >>>> >>>>>>>> 00000000 50 54 00 00 00 0c 50 54-00 00 00 0b 86 dd 60 00 >>>> >>>>>>>> 00000010 00 00 00 48 01 40 20 01-0d b8 00 00 00 00 00 00 >>>> >>>>>>>> 00000020 00 00 00 00 00 01 01 11-0d b8 00 00 00 00 00 00 >>>> >>>>>>>> 00000030 00 00 00 00 00 06 00 00-1b fc 00 00 00 00 00 01 >>>> >>>>>>>> 00000040 02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11 >>>> >>>>>>>> 00000050 12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21 >>>> >>>>>>>> 00000060 22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31 >>>> >>>>>>>> 00000070 32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f >>>> >>>>>>>> >>>> >>>>>>>> And >>>> >>>>>>>> >>>> >>>>>>>> 2024-05- >>>> >>>>> 29T14:18:54.503Z|00659|odp_execute_impl|ERR|Autovalidation >>>> >>>>>>>> of avx512 failed. Details: >>>> >>>>>>>> Packet: 0 >>>> >>>>>>>> Action : set(ipv4(src=30.0.0.1,dst=30.0.0.3)) >>>> >>>>>>>> Good hex: >>>> >>>>>>>> 00000000 aa 55 00 00 00 03 aa 55-00 00 00 01 08 00 45 00 >>>> >>>>>>>> 00000010 00 90 00 00 40 00 40 11-00 00 1e 00 00 01 1e 00 >>>> >>>>>>>> 00000020 00 03 e8 20 12 b5 00 7c-00 00 0c 00 00 04 00 00 >>>> >>>>>>>> 00000030 00 00 0f c6 01 01 00 30-00 ff 00 00 00 00 00 00 >>>> >>>>>>>> 00000040 00 00 00 00 00 00 00 00-00 00 45 00 00 54 8a 53 >>>> >>>>>>>> 00000050 40 00 40 01 1a dd c0 a8-0a 0a c0 a8 0a 1e 08 00 >>>> >>>>>>>> 00000060 6f 20 0a 4d 00 01 fc 50-9a 58 00 00 00 00 27 15 >>>> >>>>>>>> 00000070 02 00 00 00 00 00 10 11-12 13 14 15 16 17 18 19 >>>> >>>>>>>> 00000080 1a 1b 1c 1d 1e 1f 20 21-22 23 24 25 26 27 28 29 >>>> >>>>>>>> 00000090 2a 2b 2c 2d 2e 2f 30 31-32 33 34 35 36 37 Test hex: >>>> >>>>>>>> 00000000 aa 55 00 00 00 03 aa 55-00 00 00 01 08 00 45 00 >>>> >>>>>>>> 00000010 00 90 00 00 40 00 40 11-d7 ff 1e 00 00 01 1e 00 >>>> >>>>>>>> 00000020 00 03 e8 20 12 b5 00 7c-00 00 0c 00 00 04 00 00 >>>> >>>>>>>> 00000030 00 00 0f c6 01 01 00 30-00 ff 00 00 00 00 00 00 >>>> >>>>>>>> 00000040 00 00 00 00 00 00 00 00-00 00 45 00 00 54 8a 53 >>>> >>>>>>>> 00000050 40 00 40 01 1a dd c0 a8-0a 0a c0 a8 0a 1e 08 00 >>>> >>>>>>>> 00000060 6f 20 0a 4d 00 01 fc 50-9a 58 00 00 00 00 27 15 >>>> >>>>>>>> 00000070 02 00 00 00 00 00 10 11-12 13 14 15 16 17 18 19 >>>> >>>>>>>> 00000080 1a 1b 1c 1d 1e 1f 20 21-22 23 24 25 26 27 28 29 >>>> >>>>>>>> 00000090 2a 2b 2c 2d 2e 2f 30 31-32 33 34 35 36 37 2024-05- >>>> >>>>>>>> 29T14:18:54.506Z|00660|unixctl|DBG|received request netdev- >>>> >>>>>>>> >>>> >>>>> >>> dummy/receive["n1","1e2ce92a669e3a6dd2099cab0800450000548a8340 >>>> >>>>>>>> >>>> >>>>> >>> 0040011aadc0a80a0ac0a80a1e0800b7170a4d0002fd509a5800000000de1 >>>> >>>>>>>> >>>> >>>>> >>> c020000000000101112131415161718191a1b1c1d1e1f20212223242526 >>>> >>>>>>>> 2728292a2b2c2d2e2f3031323334353637"], id=0 2024-05- >>>> >>>>>>>> 29T14:18:54.506Z|00661|unixctl|DBG|replying with success, id=0: "" >>>> >>>>>>>> 2024-05- >>>> >>>>> 29T14:18:54.506Z|00662|odp_execute_impl|ERR|Autovalidation >>>> >>>>>>>> of avx512 failed. Details: >>>> >>>>>>>> Packet: 0 >>>> >>>>>>>> Action : set(ipv4(src=30.0.0.1,dst=30.0.0.3)) >>>> >>>>>>>> Good hex: >>>> >>>>>>>> 00000000 aa 55 00 00 00 03 aa 55-00 00 00 01 08 00 45 00 >>>> >>>>>>>> 00000010 00 90 00 00 40 00 40 11-00 00 1e 00 00 01 1e 00 >>>> >>>>>>>> 00000020 00 03 e8 20 12 b5 00 7c-00 00 0c 00 00 04 00 00 >>>> >>>>>>>> 00000030 00 00 0f c6 01 01 00 30-00 ff 00 00 00 00 00 00 >>>> >>>>>>>> 00000040 00 00 00 00 00 00 00 00-00 00 45 00 00 54 8a 83 >>>> >>>>>>>> 00000050 40 00 40 01 1a ad c0 a8-0a 0a c0 a8 0a 1e 08 00 >>>> >>>>>>>> 00000060 b7 17 0a 4d 00 02 fd 50-9a 58 00 00 00 00 de 1c >>>> >>>>>>>> 00000070 02 00 00 00 00 00 10 11-12 13 14 15 16 17 18 19 >>>> >>>>>>>> 00000080 1a 1b 1c 1d 1e 1f 20 21-22 23 24 25 26 27 28 29 >>>> >>>>>>>> 00000090 2a 2b 2c 2d 2e 2f 30 31-32 33 34 35 36 37 Test hex: >>>> >>>>>>>> 00000000 aa 55 00 00 00 03 aa 55-00 00 00 01 08 00 45 00 >>>> >>>>>>>> 00000010 00 90 00 00 40 00 40 11-d7 ff 1e 00 00 01 1e 00 >>>> >>>>>>>> 00000020 00 03 e8 20 12 b5 00 7c-00 00 0c 00 00 04 00 00 >>>> >>>>>>>> 00000030 00 00 0f c6 01 01 00 30-00 ff 00 00 00 00 00 00 >>>> >>>>>>>> 00000040 00 00 00 00 00 00 00 00-00 00 45 00 00 54 8a 83 >>>> >>>>>>>> 00000050 40 00 40 01 1a ad c0 a8-0a 0a c0 a8 0a 1e 08 00 >>>> >>>>>>>> 00000060 b7 17 0a 4d 00 02 fd 50-9a 58 00 00 00 00 de 1c >>>> >>>>>>>> 00000070 02 00 00 00 00 00 10 11-12 13 14 15 16 17 18 19 >>>> >>>>>>>> 00000080 1a 1b 1c 1d 1e 1f 20 21-22 23 24 25 26 27 28 29 >>>> >>>>>>>> 00000090 2a 2b 2c 2d 2e 2f 30 31-32 33 34 35 36 37 >>>> >>>>>>>> >>>> >>>>>>>> Etc. etc. >>>> >>>>>>>> >>>> >>>>>>>> >>>> >>>>>>>> Let me know if this requires a v5 of your patch, or is in a different >>>>>>>> area? >>>> >>>>>>>> >>>> >>>>>>>>>>>> Hi Emma, >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>> Thanks for sending out the v4. I have some small nits below, >>>> >>>>>>>>>>>> which I can >>>> >>>>>>>> fix during commit time. Assuming Ilya has no other simple to fix >>>> >>>>> comments. >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>> Cheers, >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>> Eelco >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>>> Signed-off-by: Emma Finn >>> <[email protected]<mailto:[email protected]>> >>>> >>>>>>>>>>>>> Reported-by: Eelco Chaudron >>> <[email protected]<mailto:[email protected]>> >>>> >>>>>>>>>>>>> --- >>>> >>>>>>>>>>>>> lib/odp-execute-avx512.c | 5 ++++ >>>> >>>>>>>>>>>>> tests/dpif-netdev.at | 64 >>>> >>>>>>>> ++++++++++++++++++++++++++++++++++++++++ >>>> >>>>>>>>>>>>> 2 files changed, 69 insertions(+) >>>> >>>>>>>>>>>>> >>>> >>>>>>>>>>>>> diff --git a/lib/odp-execute-avx512.c >>>> >>>>>>>>>>>>> b/lib/odp-execute-avx512.c index 50c48bfd4..a74a85dc1 >>> 100644 >>>> >>>>>>>>>>>>> --- a/lib/odp-execute-avx512.c >>>> >>>>>>>>>>>>> +++ b/lib/odp-execute-avx512.c >>>> >>>>>>>>>>>>> @@ -366,6 +366,8 @@ avx512_get_delta(__m256i old_header, >>>> >>>>>>>> __m256i new_header) >>>> >>>>>>>>>>>>> 0xF, 0xF, 0xF, 0xF); >>>> >>>>>>>>>>>>> v_delta = _mm256_permutexvar_epi32(v_swap32a, v_delta); >>>> >>>>>>>>>>>>> >>>> >>>>>>>>>>>>> + v_delta = _mm256_hadd_epi32(v_delta, v_zeros); >>>> >>>>>>>>>>>>> + v_delta = _mm256_shuffle_epi8(v_delta, v_swap16a); >>>> >>>>>>>>>>>>> v_delta = _mm256_hadd_epi32(v_delta, v_zeros); >>>> >>>>>>>>>>>>> v_delta = _mm256_hadd_epi16(v_delta, v_zeros); >>>> >>>>>>>>>>>>> >>>> >>>>>>>>>>>>> @@ -575,6 +577,9 @@ avx512_ipv6_sum_header(__m512i >>>> >>>>>>>> ip6_header) >>>> >>>>>>>>>>>>> 0xF, 0xF, 0xF, 0xF); >>>> >>>>>>>>>>>>> >>>> >>>>>>>>>>>>> v_delta = _mm256_permutexvar_epi32(v_swap32a, v_delta); >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> + v_delta = _mm256_hadd_epi32(v_delta, v_zeros); >>>> >>>>>>>>>>>>> + v_delta = _mm256_shuffle_epi8(v_delta, v_swap16a); >>>> >>>>>>>>>>>>> v_delta = _mm256_hadd_epi32(v_delta, v_zeros); >>>> >>>>>>>>>>>>> v_delta = _mm256_hadd_epi16(v_delta, v_zeros); >>>> >>>>>>>>>>>>> >>>> >>>>>>>>>>>>> diff --git a/tests/dpif-netdev.at b/tests/dpif-netdev.at index >>>> >>>>>>>>>>>>> 790b5a43a..260986ba9 100644 >>>> >>>>>>>>>>>>> --- a/tests/dpif-netdev.at >>>> >>>>>>>>>>>>> +++ b/tests/dpif-netdev.at >>>> >>>>>>>>>>>>> @@ -1091,3 +1091,67 @@ OVS_VSWITCHD_STOP(["dnl >>>> >>>>>>>>>>>>> /Error: unknown miniflow extract implementation superstudy./d >>>> >>>>>>>>>>>>> /Error: invalid study_pkt_cnt value: -pmd./d"]) AT_CLEANUP >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +AT_SETUP([datapath - Actions Autovalidator Checksum]) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +OVS_VSWITCHD_START(add-port br0 p0 -- set Interface p0 >>>> >>>>>>>> type=dummy \ >>>> >>>>>>>>>>>>> + -- add-port br0 p1 -- set Interface p1 >>>> >>>>>>>>>>>>> +type=dummy) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +AT_CHECK([ovs-appctl odp-execute/action-impl-set >>>> >>>>>>>>>>>>> +autovalidator], [0], [dnl Action implementation set to >>>> >>>>> autovalidator. >>>> >>>>>>>>>>>>> +]) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +# Add flows to trigger checksum calculation >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>> Comments should end with a dot(.). Also, not sure if ‘#’ is fine >>>> >>>>>>>>>>>> here, as we are moving to ‘dnl’, but this file has both (most are >>>>>>>>>>>> ‘#’). >>>> >>>>> Ilya? >>>> >>>>>>>>>>> >>>> >>>>>>>>>>> Both are fine, 'dnl' is a bit cleaner, so if you want to swap >>>> >>>>>>>>>>> those on commit that's fine, but there is no point in new version >>>> >>>>>>>>>>> just for that. >>>> >>>>>>>>>>> >>>> >>>>>>>>>>> Note that while backporting the fix we'll need to substitute the >>>> >>>>>>>>>>> 'compose-packet' calls with their results, since bare packet >>>> >>>>>>>>>>> compose is not available pre 3.3. >>>> >>>>>>>>>>> >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>>> +AT_DATA([flows.txt], [ddl >>>> >>>>>>>>>>>>> + in_port=p0,ip,actions=mod_nw_src=10.1.1.1,p1 >>>> >>>>>>>>>>>>> + in_port=p0,ipv6,actions=set_field:fc00::100->ipv6_src,p1 >>>> >>>>>>>>>>>>> +]) >>>> >>>>>>>>>>>>> +AT_CHECK([ovs-ofctl del-flows br0]) AT_CHECK([ovs-ofctl >>>> >>>>>>>>>>>>> +-Oopenflow13 add-flows br0 flows.txt]) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +# Make sure checksum won't be offloaded AT_CHECK([ovs-vsctl >>>> >>>>>>>>>>>>> +set Interface p0 options:ol_ip_csum=false]) >>>> >>>>>>>>>>>>> +AT_CHECK([ovs-vsctl set Interface p0 >>>> >>>>>>>>>>>>> +options:ol_ip_csum_set_good=false]) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +AT_CHECK([ovs-vsctl set Interface p1 options:pcap=p1.pcap]) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +# IPv4 packet with values that will trigger carry-over >>>> >>>>>>>>>>>>> +addition for checksum flow_s_v4="\ >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> >>>> >>>>>>>> >>> +eth_src=47:42:86:08:17:50,eth_dst=3e:55:b5:9e:3a:fb,dl_type=0x080 >>>> >>>>>>>>>>>>> +0,\ >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> >>>> >>>>>>>> >>>> >>>>> >>> +nw_src=229.167.36.90,nw_dst=130.161.64.186,nw_proto=6,nw_ttl=64,n >>>> >>>>>>>>>>>>> +w_frag=no,\ >>>> >>>>>>>>>>>>> + tp_src=54392,tp_dst=5201,tcp_flags=ack" >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +good_frame=$(ovs-ofctl compose-packet --bare "${flow_s_v4}") >>>> >>>>>>>>>>>>> +AT_CHECK([ovs-appctl netdev-dummy/receive p0 >>> ${good_frame}]) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +# Checksum should change to 0xAC33 with ip_src changed to >>>> >>>>>>>>>>>>> +10.1.1.1 # by the datapath while processing the packet. >>>> >>>>>>>>>>>>> +flow_expected=$(echo "${flow_s_v4}" | sed >>>> >>>>>>>>>>>>> +'s/229.167.36.90/10.1.1.1/g') good_expected=$(ovs-ofctl >>>> >>>>>>>>>>>>> +compose-packet --bare "${flow_expected}") AT_CHECK([ovs- >>> pcap >>>> >>>>>>>>>>>>> +p1.pcap > p1.pcap.txt 2>&1]) AT_CHECK_UNQUOTED([tail -n 1 >>>> >>>>>>>>>>>>> +p1.pcap.txt], [0], [${good_expected} >>>> >>>>>>>>>>>>> +]) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +#Repeat similar test for IPv6 >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>> Space between # and Repeat. >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>>> +flow_s_v6="\ >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> >>> +eth_src=8a:bf:7e:2f:05:84,eth_dst=0a:8f:39:4f:e0:73,dl_type=0x >>>> >>>>>>>>>>>>> +86d >>>> >>>>>>>>>>>>> +d, \ >>>> >>>>>>>>>>>>> + ipv6_src=2f8a:2076:3926:9e7:2d47:4bc9:9c7:17f3, \ >>>> >>>>>>>>>>>>> + ipv6_dst=7287:10dd:2fb9:41d5:3eb2:2c7a:11b0:6258, \ >>>> >>>>>>>>>>>>> + ipv6_label=0x51ac,nw_proto=6,nw_ttl=142,nw_frag=no, \ >>>> >>>>>>>>>>>>> + tp_src=20405,tp_dst=20662,tcp_flags=ack" >>>> >>>>>>>>>>> >>>> >>>>>>>>>>> Nit: Line continuation ('\') is not necessary within strings. >>>> >>>>>>>>>> >>>> >>>>>>>>>> Right, I can fix all this on commit. Let me add my ACK below, and >>>> >>>>>>>>>> if you have no other objections, I’ll commit? >>>> >>>>>>>>> >>>> >>>>>>>>> No objections from my side. >>>> >>>>>>>>> >>>> >>>>>>>>>> >>>> >>>>>>>>>> Acked-by: Eelco Chaudron >>> <[email protected]<mailto:[email protected]>> >>>> >>>>>>>>>> >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>> A single new line is enough here. >>>> >>>>>>>>>>>> >>>> >>>>>>>>>>>>> +good_frame_v6=$(ovs-ofctl compose-packet --bare >>>> >>>>>>>>>>>>> +"${flow_s_v6}") AT_CHECK([ovs-appctl netdev-dummy/receive >>> p0 >>>> >>>>>>>> ${good_frame_v6}]) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +# Checksum should change to 0x59FD with ipv6_src changed to >>>> >>>>>>>>>>>>> +fc00::100 # by the datapath while processing the packet. >>>> >>>>>>>>>>>>> +flow_expected_v6=$(echo "${flow_s_v6}" | \ >>>> >>>>>>>>>>>>> + sed 's/2f8a:2076:3926:9e7:2d47:4bc9:9c7:17f3/fc00::100/g') >>>> >>>>>>>>>>>>> +good_expected_v6=$(ovs-ofctl compose-packet --bare >>>> >>>>>>>>>>>>> +"${flow_expected_v6}") AT_CHECK([ovs-pcap p1.pcap > >>>> >>>>>>>>>>>>> +p1.pcap.txt >>>> >>>>>>>>>>>>> +2>&1]) AT_CHECK_UNQUOTED([tail -n 1 p1.pcap.txt], [0], >>>> >>>>>>>>>>>>> +[${good_expected_v6} >>>> >>>>>>>>>>>>> +]) >>>> >>>>>>>>>>>>> + >>>> >>>>>>>>>>>>> +OVS_VSWITCHD_STOP >>>> >>>>>>>>>>>>> +AT_CLEANUP >>>> >>>>>>>>>>>>> -- >>>> >>>>>>>>>>>>> 2.34.1 >>>> >>>>>>>>>>>> >>>> >>>>>>>>>> >> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
