From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from alln-iport-2.cisco.com (alln-iport-2.cisco.com [173.37.142.89]) by dpdk.org (Postfix) with ESMTP id AC975377C for ; Thu, 6 Oct 2016 09:54:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=23213; q=dns/txt; s=iport; t=1475740477; x=1476950077; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=5nr3zVkvrOM1NtZgtXLBTZUJEc2LAGq8/iyXjq3X3bw=; b=LY39XnBA+/yl91wn+McRmHtCckneILago8xhj5oFPvkm6sbINdf/Vtif w+aQs5rCNmIhe2EmtxDhzzt1wzNwasY80A7L2XzN1d9Sx5D5Qffu2QiRj pw/6jL3B0nlgvor3xLFVrRbYYqfdwbyN4Fi9o+BZ5bQhGuQ/Op12f8xN6 U=; X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0ByAQDnAvZX/5FdJa1UChoBAQEBAgEBA?= =?us-ascii?q?QEIAQEBAYMHNgEBAQEBHoFTB40rln+SHYIPgguGIAKBczgUAQIBAQEBAQEBXie?= =?us-ascii?q?EYQEBAQR5DAQCAQgRBAEBIQcHMhQJCAIEDgWITr0IAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBHYY8gX2CWIQfg1iCLwWIO5FEAY94j3SMdoN+AR42GjGCagEcgVNyAYc?= =?us-ascii?q?/gQABAQE?= X-IronPort-AV: E=Sophos;i="5.31,452,1473120000"; d="scan'208,217";a="330875453" Received: from rcdn-core-9.cisco.com ([173.37.93.145]) by alln-iport-2.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Oct 2016 07:54:15 +0000 Received: from XCH-RTP-001.cisco.com (xch-rtp-001.cisco.com [64.101.220.141]) by rcdn-core-9.cisco.com (8.14.5/8.14.5) with ESMTP id u967sEhw022306 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Thu, 6 Oct 2016 07:54:15 GMT Received: from xch-rtp-005.cisco.com (64.101.220.145) by XCH-RTP-001.cisco.com (64.101.220.141) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Thu, 6 Oct 2016 03:54:14 -0400 Received: from xch-rtp-005.cisco.com ([64.101.220.145]) by XCH-RTP-005.cisco.com ([64.101.220.145]) with mapi id 15.00.1210.000; Thu, 6 Oct 2016 03:54:13 -0400 From: "Damjan Marion (damarion)" To: Jeff Shaw CC: "Chen, Jing D" , "dev@dpdk.org" , "Zhang, Helin" , "Wu, Jingjing" , "Zhang, Qi Z" Thread-Topic: [PATCH v2 2/2] i40e: Enable bad checksum flags in i40e vPMD Thread-Index: AQHSH0UJ6oRx7RaHeku230jqY5ckW6CazPgAgAAnwYCAAF1vAA== Date: Thu, 6 Oct 2016 07:54:13 +0000 Message-ID: <5DB5147C-414D-4B7C-880E-9EACBAD540D1@cisco.com> References: <1468515542-39207-2-git-send-email-jeffrey.b.shaw@intel.com> <1475712772-105327-1-git-send-email-jeffrey.b.shaw@intel.com> <1475712772-105327-2-git-send-email-jeffrey.b.shaw@intel.com> <4341B239C0EFF9468EE453F9E9F4604D3A387BDA@shsmsx102.ccr.corp.intel.com> <20161006021945.GA109679@ar11-dell-r730-02-jeff.jf.intel.com> In-Reply-To: <20161006021945.GA109679@ar11-dell-r730-02-jeff.jf.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.55.252.57] MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v2 2/2] i40e: Enable bad checksum flags in i40e vPMD X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Oct 2016 07:54:38 -0000 On 6 Oct 2016, at 04:19, Jeff Shaw > wrote: On Wed, Oct 05, 2016 at 04:57:28PM -0700, Chen, Jing D wrote: Hi, -----Original Message----- From: Shaw, Jeffrey B Sent: Wednesday, October 5, 2016 5:13 PM To: dev@dpdk.org Cc: Zhang, Helin >; Wu,= Jingjing >; damarion@cisco.com; Zhang, Qi Z >; Chen, Jing D > Subject: [PATCH v2 2/2] i40e: Enable bad checksum flags in i40e vPMD From: Damjan Marion > Decode the checksum flags from the rx descriptor, setting the appropriate b= it in the mbuf ol_flags field when the flag indicates a bad checksum. Signed-off-by: Damjan Marion = > Signed-off-by: Jeff Shaw > --- drivers/net/i40e/i40e_rxtx_vec.c | 48 +++++++++++++++++++++++--------------= - -- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/drivers/net/i40e/i40e_rxtx_vec.c b/drivers/net/i40e/i40e_rxtx_vec.c index 6c63141..d2267ad 100644 --- a/drivers/net/i40e/i40e_rxtx_vec.c +++ b/drivers/net/i40e/i40e_rxtx_vec.c @@ -138,19 +138,14 @@ i40e_rxq_rearm(struct i40e_rx_queue *rxq) static inline void desc_to_olflags_v(__m128i descs[4], struct rte_mbuf **rx_pkts)= { - __m128i vlan0, vlan1, rss; - union { - uint16_t e[4]; - uint64_t dword; - } vol; + __m128i vlan0, vlan1, rss, l3_l4e; /* mask everything except RSS, flow director and VLAN flags * bit2 is for VLAN tag, bit11 for flow director indication * bit13:12 for RSS indication. */ - const __m128i rss_vlan_msk =3D _mm_set_epi16( - 0x0000, 0x0000, 0x0000, 0x0000, - 0x3804, 0x3804, 0x3804, 0x3804); + const __m128i rss_vlan_msk =3D _mm_set_epi32( + 0x1c03004, 0x1c03004, 0x1c03004, 0x1c03004); Mask is wrong here. Should be 0x1c03804, ..., etc. /* map rss and vlan type to rss hash and vlan flag */ const __m128i vlan_flags =3D _mm_set_epi8(0, 0, 0, 0, @@ -163,23 +158,36 @@ desc_to_olflags_v(__m128i descs[4], struct rte_mbuf **rx_pkts) PKT_RX_RSS_HASH | PKT_RX_FDIR, PKT_RX_RSS_HASH, 0, 0, 0, 0, PKT_RX_FDIR, 0); - vlan0 =3D _mm_unpackhi_epi16(descs[0], descs[1]); - vlan1 =3D _mm_unpackhi_epi16(descs[2], descs[3]); - vlan0 =3D _mm_unpacklo_epi32(vlan0, vlan1); + const __m128i l3_l4e_flags =3D _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, + PKT_RX_EIP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD | PKT_RX_IP_CKSUM_BAD, + PKT_RX_EIP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD, + PKT_RX_EIP_CKSUM_BAD | PKT_RX_IP_CKSUM_BAD, + PKT_RX_EIP_CKSUM_BAD, + PKT_RX_L4_CKSUM_BAD | PKT_RX_IP_CKSUM_BAD, + PKT_RX_L4_CKSUM_BAD, + PKT_RX_IP_CKSUM_BAD, + 0); + + vlan0 =3D _mm_unpackhi_epi32(descs[0], descs[1]); + vlan1 =3D _mm_unpackhi_epi32(descs[2], descs[3]); + vlan0 =3D _mm_unpacklo_epi64(vlan0, vlan1); vlan1 =3D _mm_and_si128(vlan0, rss_vlan_msk); vlan0 =3D _mm_shuffle_epi8(vlan_flags, vlan1); - rss =3D _mm_srli_epi16(vlan1, 11); + rss =3D _mm_srli_epi32(vlan1, 12); rss =3D _mm_shuffle_epi8(rss_flags, rss); My bad. Original code will use bit[13:11] to identify RSS and FDIR flag. No= w It masked bit 11 out when creating " rss_vlan_msk" and doing shift above, while it still try to use original "rss_flags"? Good catch. I have no idea how you spotted that, and you're right, we shou= ld be shifting by 11, not 12. Also the mask needs to be updated (as you mentioned to me offline) which I noted above. Damjan, unless you object I'll send a v3 with an updated rss_vlan_msk and the 11 bit shift so we also get the Flow Director Filter Match (FLM) indication. Absolutely no objection, and thanks for taking care for that! Damjan