From patchwork Tue May 21 14:13:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Finn, Emma" X-Patchwork-Id: 1937455 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=MFnNDyhy; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VkGd91scnz1ydW for ; Wed, 22 May 2024 00:13:47 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id BC5EA82068; Tue, 21 May 2024 14:13:44 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id hWFzAYOtMsNG; Tue, 21 May 2024 14:13:43 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=2605:bc80:3010:104::8cd3:938; helo=lists.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org A4F35812D9 Authentication-Results: smtp1.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=MFnNDyhy Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp1.osuosl.org (Postfix) with ESMTPS id A4F35812D9; Tue, 21 May 2024 14:13:43 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 74CCBC0077; Tue, 21 May 2024 14:13:43 +0000 (UTC) X-Original-To: ovs-dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id ECAD4C0037 for ; Tue, 21 May 2024 14:13:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id CDC7A409C4 for ; Tue, 21 May 2024 14:13:41 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id JGKtKCNj3XNw for ; Tue, 21 May 2024 14:13:39 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.198.163.16; helo=mgamail.intel.com; envelope-from=emma.finn@intel.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp2.osuosl.org AAE61408FC Authentication-Results: smtp2.osuosl.org; dmarc=pass (p=none dis=none) header.from=intel.com DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org AAE61408FC Authentication-Results: smtp2.osuosl.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=MFnNDyhy Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by smtp2.osuosl.org (Postfix) with ESMTPS id AAE61408FC for ; Tue, 21 May 2024 14:13:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1716300819; x=1747836819; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=ZF21Ul71rpOYVfkpX2Lr7rmFgQC/AafVD7HHYT/e6+I=; b=MFnNDyhy3S8ICCpCajmaoZM04lq+X4CeIV5vh1eowwaT1s5kbeKABakj kwYkoyf26eZYHZTNCw7zMnPGM9OsGgeGnQ/vfQTc1zDfrc1QkW2hZuJ05 2ofwIzOGHBxjQtCjfx7l0H1ndpJ8Tu3bxXSmX9cetbc4Nhe+QyMaTfYSl elicS1PgWZoGAAJkP01NAN7thkHq0zvaYAuCuRzviO/Cm2OTtFpz12S0a mzKsk4iY0/bDimXqEM58426iuo/NOUbPVjeRIN+3035XRMbTHi5f9jzol 4O7PDHwuqnZ96oXYvGOtvbJvoWjZJPn/x87fo349YNi/KmfVDuohE5ph6 w==; X-CSE-ConnectionGUID: EVEdH3WVQb6oK6ynkrmkHw== X-CSE-MsgGUID: kZQ68FU0SLCDCfd41TherQ== X-IronPort-AV: E=McAfee;i="6600,9927,11078"; a="11632260" X-IronPort-AV: E=Sophos;i="6.08,178,1712646000"; d="scan'208";a="11632260" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 May 2024 07:13:39 -0700 X-CSE-ConnectionGUID: tgMmDDU0Re2KfTNMPQ9S3A== X-CSE-MsgGUID: SdibvKxLRx6Gt7cHD6Mz5Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,178,1712646000"; d="scan'208";a="32954166" Received: from silpixa00401384.ir.intel.com ([10.243.23.101]) by fmviesa006.fm.intel.com with ESMTP; 21 May 2024 07:13:37 -0700 From: Emma Finn To: ovs-dev@openvswitch.org Date: Tue, 21 May 2024 14:13:27 +0000 Message-Id: <20240521141327.1185959-1-emma.finn@intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [ovs-dev] [v3] odp-execute: Fix AVX checksum calculation. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" 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 fuzz test the actions autovalidator. Signed-off-by: Emma Finn Reported-by: Eelco Chaudron --- lib/odp-execute-avx512.c | 5 +++++ tests/dpif-netdev.at | 26 ++++++++++++++++++++++++++ 2 files changed, 31 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..48cb900ad 100644 --- a/tests/dpif-netdev.at +++ b/tests/dpif-netdev.at @@ -1091,3 +1091,29 @@ 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 Fuzzy]) +AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], []) +AT_SKIP_IF([! $PYTHON3 $srcdir/genpkts.py 10000 fuzzy > packets]) + +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. +]) + +AT_DATA([flows.txt], [dnl + 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]) + +cat packets | while read line; do + AT_CHECK([ovs-appctl netdev-dummy/receive p0 $line], [0], [ignore]) +done + +OVS_VSWITCHD_STOP +AT_CLEANUP