From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C4D71A04B0; Fri, 4 Dec 2020 03:18:56 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1DEF02F42; Fri, 4 Dec 2020 03:18:55 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 944462E81 for ; Fri, 4 Dec 2020 03:18:51 +0100 (CET) IronPort-SDR: ponOQSukNa5uq7Ocx6COM8/2irJj8hMby2uubrHWM9wNSqzTxJiecsgkbomFawY3ieX+0RefiE T5QiUc8Yaiog== X-IronPort-AV: E=McAfee;i="6000,8403,9824"; a="161083626" X-IronPort-AV: E=Sophos;i="5.78,390,1599548400"; d="scan'208";a="161083626" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Dec 2020 18:18:49 -0800 IronPort-SDR: OOsOjXX25sHmisw0MAe+4X0pbZMpEAoMql4BQWYL6+DxloZ91fnUTN/v+GCBqYHNijaVyOl3ZP NQ/pFwBfN0Xw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,391,1599548400"; d="scan'208";a="482202549" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by orsmga004.jf.intel.com with ESMTP; 03 Dec 2020 18:18:49 -0800 Received: from shsmsx606.ccr.corp.intel.com (10.109.6.216) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 3 Dec 2020 18:18:48 -0800 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by SHSMSX606.ccr.corp.intel.com (10.109.6.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 4 Dec 2020 10:18:46 +0800 Received: from shsmsx601.ccr.corp.intel.com ([10.109.6.141]) by SHSMSX601.ccr.corp.intel.com ([10.109.6.141]) with mapi id 15.01.1713.004; Fri, 4 Dec 2020 10:18:46 +0800 From: "Guo, Jia" To: "Yang, MurphyX" , "dev@dpdk.org" CC: "Yang, Qiming" , "Yang, SteveX" , "Xing, Beilei" , "Yang, MurphyX" Thread-Topic: [PATCH v2] net/i40e: fix incorrect checksum flag of L4 checksum Thread-Index: AQHWyUljbxwpkaLRaESc4uACKWIHwqnmNPUQ Date: Fri, 4 Dec 2020 02:18:46 +0000 Message-ID: References: <20201111091112.12606-1-murphyx.yang@intel.com> <20201203075030.70053-1-murphyx.yang@intel.com> In-Reply-To: <20201203075030.70053-1-murphyx.yang@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 x-originating-ip: [10.239.127.36] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2] net/i40e: fix incorrect checksum flag of L4 checksum X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Acked-by: Jeff Guo > -----Original Message----- > From: Murphy Yang > Sent: Thursday, December 3, 2020 3:51 PM > To: dev@dpdk.org > Cc: Yang, Qiming ; Yang, SteveX > ; Guo, Jia ; Xing, Beilei > ; Yang, MurphyX > Subject: [PATCH v2] net/i40e: fix incorrect checksum flag of L4 checksum >=20 > When send tunneled packet that inner L4 checksum value is correct, the > test_pmd output log shows 'ol_flags' value is > 'PKT_RX_L4_CKSUM_UNKNOWN', but expected value is > 'PKT_RX_L4_CKSUM_GOOD'. >=20 > If the inner l4 checksum is correctly, mark the 'PKT_RX_L4_CKSUM_GOOD' > flag to 'l3_l4e_flags' for sse and 'l3_l4_flags_shuf' for avx2 to ensure = that the > 'ol_flags' can match correct flags. >=20 > Fixes: 9966a00a0688 ("net/i40e: enable bad checksum flags in vector Rx") > Fixes: dafadd73762e ("net/i40e: add AVX2 Rx function") >=20 > Signed-off-by: Murphy Yang > --- > v2: > - update the comments. > drivers/net/i40e/i40e_rxtx_vec_avx2.c | 40 ++++++++++++++++----------- > drivers/net/i40e/i40e_rxtx_vec_sse.c | 20 ++++++++------ > 2 files changed, 35 insertions(+), 25 deletions(-) >=20 > diff --git a/drivers/net/i40e/i40e_rxtx_vec_avx2.c > b/drivers/net/i40e/i40e_rxtx_vec_avx2.c > index 7a558fc73a..fe6ec7deef 100644 > --- a/drivers/net/i40e/i40e_rxtx_vec_avx2.c > +++ b/drivers/net/i40e/i40e_rxtx_vec_avx2.c > @@ -342,24 +342,32 @@ _recv_raw_pkts_vec_avx2(struct i40e_rx_queue > *rxq, struct rte_mbuf **rx_pkts, > */ > const __m256i l3_l4_flags_shuf =3D _mm256_set_epi8(0, 0, 0, 0, 0, 0, 0, > 0, > /* shift right 1 bit to make sure it not exceed 255 */ > - (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_BAD | PKT_RX_IP_CKSUM_BAD) >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_EIP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD) >> 1, > - (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_EIP_CKSUM_BAD) >> 1, > - (PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_L4_CKSUM_BAD) >> 1, > - PKT_RX_IP_CKSUM_BAD >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_L4_CKSUM_GOOD) >> 1, > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_BAD | > + PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_BAD | > + PKT_RX_IP_CKSUM_GOOD) >> 1, > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_GOOD | > + PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_GOOD | > + PKT_RX_IP_CKSUM_GOOD) >> 1, > + (PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_GOOD) >> 1, > + (PKT_RX_L4_CKSUM_GOOD | > PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_L4_CKSUM_GOOD | > PKT_RX_IP_CKSUM_GOOD) >> 1, > /* second 128-bits */ > 0, 0, 0, 0, 0, 0, 0, 0, > - (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_BAD | PKT_RX_IP_CKSUM_BAD) >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_EIP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD) >> 1, > - (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_EIP_CKSUM_BAD) >> 1, > - (PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_L4_CKSUM_BAD) >> 1, > - PKT_RX_IP_CKSUM_BAD >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_L4_CKSUM_GOOD) >> 1); > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_BAD | > + PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_BAD | > + PKT_RX_IP_CKSUM_GOOD) >> 1, > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_GOOD | > + PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_GOOD | > + PKT_RX_IP_CKSUM_GOOD) >> 1, > + (PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_GOOD) >> 1, > + (PKT_RX_L4_CKSUM_GOOD | > PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_L4_CKSUM_GOOD | > PKT_RX_IP_CKSUM_GOOD) >> 1); >=20 > const __m256i cksum_mask =3D _mm256_set1_epi32( > PKT_RX_IP_CKSUM_GOOD | > PKT_RX_IP_CKSUM_BAD | diff --git a/drivers/net/i40e/i40e_rxtx_vec_sse.c > b/drivers/net/i40e/i40e_rxtx_vec_sse.c > index 4b2b6a28fc..0bcb48e24e 100644 > --- a/drivers/net/i40e/i40e_rxtx_vec_sse.c > +++ b/drivers/net/i40e/i40e_rxtx_vec_sse.c > @@ -254,16 +254,18 @@ desc_to_olflags_v(struct i40e_rx_queue *rxq, > volatile union i40e_rx_desc *rxdp, >=20 > const __m128i l3_l4e_flags =3D _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, > /* shift right 1 bit to make sure it not exceed 255 */ > - (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_BAD | > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_EIP_CKSUM_BAD | > - PKT_RX_L4_CKSUM_BAD) >> 1, > - (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_EIP_CKSUM_BAD) >> 1, > - (PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_L4_CKSUM_BAD) >> 1, > - PKT_RX_IP_CKSUM_BAD >> 1, > - (PKT_RX_IP_CKSUM_GOOD | > PKT_RX_L4_CKSUM_GOOD) >> 1); > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_BAD | > + PKT_RX_IP_CKSUM_GOOD) >> 1, > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_GOOD | > + PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_EIP_CKSUM_BAD | > PKT_RX_L4_CKSUM_GOOD | > + PKT_RX_IP_CKSUM_GOOD) >> 1, > + (PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_L4_CKSUM_BAD | > PKT_RX_IP_CKSUM_GOOD) >> 1, > + (PKT_RX_L4_CKSUM_GOOD | > PKT_RX_IP_CKSUM_BAD) >> 1, > + (PKT_RX_L4_CKSUM_GOOD | > PKT_RX_IP_CKSUM_GOOD) >> 1); >=20 > /* Unpack "status" from quadword 1, bits 0:32 */ > vlan0 =3D _mm_unpackhi_epi32(descs[0], descs[1]); > -- > 2.17.1