From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH v9 0/3] librte_net: add crc computation support Date: Wed, 05 Apr 2017 11:01:15 +0200 Message-ID: <4843218.AadDjlxfvY@xps13> References: <1490873422-13734-2-git-send-email-jasvinder.singh@intel.com> <1613321.D1UC30mH7n@xps13> <54CBAA185211B4429112C315DA58FF6D31B493E5@IRSMSX103.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev@dpdk.org, "olivier.matz@6wind.com" , "Doherty, Declan" , "De Lara Guarch, Pablo" To: "Singh, Jasvinder" Return-path: Received: from mail-wr0-f174.google.com (mail-wr0-f174.google.com [209.85.128.174]) by dpdk.org (Postfix) with ESMTP id 551BA201 for ; Wed, 5 Apr 2017 11:01:17 +0200 (CEST) Received: by mail-wr0-f174.google.com with SMTP id k6so4815285wre.2 for ; Wed, 05 Apr 2017 02:01:17 -0700 (PDT) In-Reply-To: <54CBAA185211B4429112C315DA58FF6D31B493E5@IRSMSX103.ger.corp.intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 2017-04-05 08:34, Singh, Jasvinder: > Hi Thomas, > > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com] > > 2017-03-30 17:15, Jasvinder Singh: > > > In some applications, CRC (Cyclic Redundancy Check) needs to be > > > computed or updated during packet processing operations. This patchset > > > adds software implementation of some common standard CRCs (32-bit > > > Ethernet CRC as per Ethernet/[ISO/IEC 8802-3] and 16-bit CCITT-CRC [ITU-T > > X.25]). > > > Two versions of each 32-bit and 16-bit CRC calculation are proposed. > > > > > > The first version presents a fast and efficient CRC generation on IA > > > processors by using the carry-less multiplication instruction > > > PCLMULQDQ (i.e SSE4.2 instrinsics). In this implementation, a > > > parallelized folding approach has been used to first reduce an > > > arbitrary length buffer to a small fixed size length buffer (16 bytes) with the > > help of precomputed constants. > > > The resultant single 16-bytes chunk is further reduced by Barrett > > > reduction method to generate final CRC value. For more details on the > > > implementation, see reference [1]. > > > > > > The second version presents the fallback solution to support the CRC > > > generation without needing any specific support from CPU (for > > > examples- > > > SSE4.2 intrinsics). It is based on generic Look-Up Table(LUT) > > > algorithm that uses precomputed 256 element table as explained in > > reference[2]. > > > > > > During intialisation, all the data structures required for CRC > > > computation are initialised. Also, x86 specific crc implementation (if > > > supported by the platform) or scalar version is enabled. > > > > As you can see in patchwork, it does not compile on FreeBSD: > > http://dpdk.org/ml/archives/test-report/2017-April/016943.html > > As I stated in the cover letter notes as well that The patchset build fails on clang version earlier than 3.7.0 due to > missing intrinsics and this issue is listed in DPDK known issue section. FreeBSD build on gcc target should work fine. Ah, I have not seen this explanation. However, we cannot let the build fails. It is a blocker for patch admission. Can you, at least, disable the code for some compiler versions?