From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 4BB772FDD for ; Wed, 5 Apr 2017 10:07:12 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1491379633; x=1522915633; h=from:to:cc:subject:date:message-id; bh=ystXys7J5Yg50csvyHBy0cM7rrYnKNWjDw9dzfFKOeQ=; b=Dmk/ACWu5+iHS3bMNW9dGuNj4/nDQAVjw3gVM2QRkb44e5fUXwYk8qRG manUQ2XlrJEwFP4NWhz7ljaKfG86IQ==; Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Apr 2017 01:07:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,277,1486454400"; d="scan'208";a="84905987" Received: from unknown (HELO localhost.localdomain.sh.intel.com) ([10.239.129.248]) by fmsmga006.fm.intel.com with ESMTP; 05 Apr 2017 01:07:11 -0700 From: Peng Yuan To: dts@dpdk.org Cc: Peng Yuan Date: Wed, 5 Apr 2017 16:46:44 -0400 Message-Id: <1491425204-4136-1-git-send-email-yuan.peng@intel.com> X-Mailer: git-send-email 2.5.0 Subject: [dts] [PATCH] test_plans: add crc generation and computation X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Apr 2017 08:07:13 -0000 Signed-off-by: Peng Yuan diff --git a/test_plans/unit_tests_crc_test_plan.rst b/test_plans/unit_tests_crc_test_plan.rst new file mode 100644 index 0000000..6a5f87e --- /dev/null +++ b/test_plans/unit_tests_crc_test_plan.rst @@ -0,0 +1,86 @@ +.. Copyright (c) <2014>, Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +===================== +Algorithm Description +===================== + +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. + +============ +CRC Autotest +============ + +the unit test compare the results of scalar and sse4.2 versions individually +with the known crc results. Some of these crc results and corresponding test +vecotrs are based on the test string mentioned in ethernet specification doc +and x.25 doc + +This section explains how to run the unit tests for crc computation. The test +can be launched independently using the command line interface. +This test is implemented as a linuxapp environment application. + +The complete test suite is launched automatically using a python-expect +script (launched using ``make test``) that sends commands to +the application and checks the results. A test report is displayed on +stdout. +The steps to run the unit test manually are as follow:: + + # cd ~/dpdk + # make config T=x86_64-native-linuxapp-gcc + # make test + # ./build/build/test/test/test -n 1 -c ffff + RTE>> crc_autotest + +The final output of the test will has to be "Test OK". -- 2.5.0