From patchwork Tue Sep 26 19:00:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 114280 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4175308qgf; Tue, 26 Sep 2017 12:02:39 -0700 (PDT) X-Google-Smtp-Source: AOwi7QDwkBq3znOsfEHXc41b3MOIEGvxuZRGrxRQED9wTa5Be6j5l/0Hx2E8igr4yt/HFFXyNABH X-Received: by 10.157.52.145 with SMTP id g17mr2781664otc.84.1506452559853; Tue, 26 Sep 2017 12:02:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506452559; cv=none; d=google.com; s=arc-20160816; b=iN4BgRhhthb1w2eeCf56B3bQHbsG8X5TYePLvmNi9aptw72XLFJyys/8qMbUPzVGUC yX0hj4VmOijcT3KsXzUBn8hoSq1pMlMkDmQYDDSogTjLLja31UDr5npzvWi5uk+nZc8e sFobSoJcYvZ3AZOVnW02JRWCT7MEE4/zn9KWRc6iWgX7gW5UTLw7jsA5iF5WN7Ba9va3 OJtCXv44+g+gVE6ZaDiICaCo6KPgfUlneIi81Q5HIHdtT/ys6MAU7qZRpjHZMuXd91lU 7WQZdwjQq0TAX6raOrt/HeqQkFt2ZUVOMV2wEbWRh4YfubdgW1xwIJUPONSb3ZnXo7ck tkwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=IECcLevOdJ5ZXQ7hhAinbM3sK++RofoGHP1jwo+t3H8=; b=0minIbq/DxuJkkISHrAHfSg8i5HE95Q0hOp3UlgI/VM+8AQoPPiKI9A4iBDm78ybvw oEmETHLu2cdHxFqtL4xGhn74FFMAc2uoHu0T2dBoO55SOYMcC+yvjQqUA/C5p6hvktxI toqFBCJU426aMawSvmmQU5oKOljww+pmbmiBKsqdN3iiy3cAXOF1hx7g2nvemtjAtdZ/ xCwgXUfjjn62F3niUP0p54UUg6KQXkZW4xx0Bm5Fq/U6OWqd0ZuOsg4cHLx7oLU3WcOB LSyQj369OlKLsVUEnE+jjlVGue124dOq1xZhKOuA3UT10G8mBoZGuu4q5Ywi8C7i2Y9+ rJgA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id i14si7789449ioo.368.2017.09.26.12.02.39; Tue, 26 Sep 2017 12:02:39 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id 5029B60DB2; Tue, 26 Sep 2017 19:02:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id C8C0260DBD; Tue, 26 Sep 2017 19:00:42 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 9636F60D72; Tue, 26 Sep 2017 19:00:19 +0000 (UTC) Received: from forward101j.mail.yandex.net (forward101j.mail.yandex.net [5.45.198.241]) by lists.linaro.org (Postfix) with ESMTPS id 1D39A60D6F for ; Tue, 26 Sep 2017 19:00:13 +0000 (UTC) Received: from mxback9j.mail.yandex.net (mxback9j.mail.yandex.net [IPv6:2a02:6b8:0:1619::112]) by forward101j.mail.yandex.net (Yandex) with ESMTP id E9FE4124149C for ; Tue, 26 Sep 2017 22:00:11 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback9j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 2VTbEwiXnO-0BZSS4P4; Tue, 26 Sep 2017 22:00:11 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id 7XQL04xJi6-0BL0pKuo; Tue, 26 Sep 2017 22:00:11 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Tue, 26 Sep 2017 22:00:05 +0300 Message-Id: <1506452407-23070-2-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1506452407-23070-1-git-send-email-odpbot@yandex.ru> References: <1506452407-23070-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 193 Subject: [lng-odp] [PATCH API-NEXT v2 1/3] api: chksum: add ones complement sum function X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Petri Savolainen This is a low level function for IP/UDP/TCP checksum calculations on SW. HW cannot always calculate checksums, for that or other reasons application may need calculate ones compelement sums. This kind of low level function is easy to optimize e.g. with CPU vector instructions. In addition to this, there may be higher (packet) level functions introduced later. Signed-off-by: Petri Savolainen --- /** Email created from pull request 193 (psavol:next-ip-checksum) ** https://github.com/Linaro/odp/pull/193 ** Patch: https://github.com/Linaro/odp/pull/193.patch ** Base sha: e04e5f90df69e3031622b77fb5273b85d47eb966 ** Merge commit sha: 18d37c68b9d3a13db328316de06eed14113d0fc2 **/ include/odp/api/spec/chksum.h | 53 +++++++++++++++++++++++++ include/odp_api.h | 1 + platform/Makefile.inc | 1 + platform/linux-generic/Makefile.am | 1 + platform/linux-generic/include/odp/api/chksum.h | 34 ++++++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 include/odp/api/spec/chksum.h create mode 100644 platform/linux-generic/include/odp/api/chksum.h diff --git a/include/odp/api/spec/chksum.h b/include/odp/api/spec/chksum.h new file mode 100644 index 000000000..e523ac286 --- /dev/null +++ b/include/odp/api/spec/chksum.h @@ -0,0 +1,53 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @file + * + * ODP Hash functions + */ + +#ifndef ODP_API_CHKSUM_H_ +#define ODP_API_CHKSUM_H_ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/** @defgroup odp_chksum ODP CHECKSUM + * ODP checksum functions + * @{ + */ + +/** + * Ones' complement sum of 16-bit words + * + * Calculates 16-bit ones' complement sum over the data. In case of odd number + * of bytes, calculation uses a zero byte as padding at the end. This algorithm + * may be used as part of e.g. IPv4/UDP/TCP checksum generation and checking. + * + * @param data Pointer to data. Data address must be 16-bit aligned + * in minimum. + * @param data_len Data length in bytes. In case of an odd number, calculation + * includes one byte of padding. + * + * @return Ones' complement sum + */ +uint16_t odp_chksum_ones_comp16(const void *data, uint32_t data_len); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#include +#endif diff --git a/include/odp_api.h b/include/odp_api.h index 86232ee10..069ec9d1e 100644 --- a/include/odp_api.h +++ b/include/odp_api.h @@ -24,6 +24,7 @@ extern "C" { #include #include #include +#include #include #include #include diff --git a/platform/Makefile.inc b/platform/Makefile.inc index ac5cd765d..2699142db 100644 --- a/platform/Makefile.inc +++ b/platform/Makefile.inc @@ -22,6 +22,7 @@ odpapispecinclude_HEADERS = \ $(top_srcdir)/include/odp/api/spec/barrier.h \ $(top_srcdir)/include/odp/api/spec/buffer.h \ $(top_srcdir)/include/odp/api/spec/byteorder.h \ + $(top_srcdir)/include/odp/api/spec/chksum.h \ $(top_srcdir)/include/odp/api/spec/classification.h \ $(top_srcdir)/include/odp/api/spec/compiler.h \ $(top_srcdir)/include/odp/api/spec/cpu.h \ diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index 3e26aab4c..994bbbeee 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -36,6 +36,7 @@ odpapiinclude_HEADERS = \ $(srcdir)/include/odp/api/byteorder.h \ $(srcdir)/include/odp/api/classification.h \ $(srcdir)/include/odp/api/compiler.h \ + $(srcdir)/include/odp/api/chksum.h \ $(srcdir)/include/odp/api/cpu.h \ $(srcdir)/include/odp/api/cpumask.h \ $(srcdir)/include/odp/api/crypto.h \ diff --git a/platform/linux-generic/include/odp/api/chksum.h b/platform/linux-generic/include/odp/api/chksum.h new file mode 100644 index 000000000..18dcb6d11 --- /dev/null +++ b/platform/linux-generic/include/odp/api/chksum.h @@ -0,0 +1,34 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @file + * + * ODP checksum functions + */ + +#ifndef ODP_PLAT_CHKSUM_H_ +#define ODP_PLAT_CHKSUM_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** @ingroup odp_chksum + * @{ + */ + +/** + * @} + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif From patchwork Tue Sep 26 19:00:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 114279 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4174432qgf; Tue, 26 Sep 2017 12:01:58 -0700 (PDT) X-Google-Smtp-Source: AOwi7QB2aJSOsOxj5Fj28iyqdycfzJ8wB1kNZ2HyS/Kpfo9JnwLvdAawGkp0PZ7wWwkuhPfFs6wI X-Received: by 10.202.243.69 with SMTP id r66mr1031433oih.337.1506452518781; Tue, 26 Sep 2017 12:01:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506452518; cv=none; d=google.com; s=arc-20160816; b=pitQKuTFZOA9EfT9esUGKLoVBVhuOO2eQVn6MWtFM+asnWk6dMchhG+OsDZC6Dlcbo 9Pyysr+ohHSbV0z8YtLPNfTJZs6i1dVCKFj9tjGzcYy0uVJHcB0YQhnBTDNFL9a2Jkj9 wyS7ez++H3Fs7Mr6JBdGSu5+ncj2Lr+hfIi075TqL5gzrVy8WBnoCwj4MXwtPFCfVG74 smeIY6X0fGFOvCyAQ0GaFhAcgJasmdndIH++i4qbxpkTijDu28xW2UP1EzFLNzvJrnkM xWtMoflbjaRiZQT28gpcFG2rJ4hICahPjpYfWjHsTkHa1r2w1TcxM2ggNtFzflj/QXDD pqhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=6i627bMJKvOM5kfcQIGCvGHRPChRHJ3l9iA2SGLJWq4=; b=tsl48yf9xLSvb9cAakbC8hPMeOLz+Coq3I4rsmYZ8UCNWbOQP/3+toOHmvZv/zrs3X fzlKmtE1yuoXubx+uyoNxFzw3PIiLFuzhTaWsGoRBBXx66pB02KKO34U1UzWTRM76Czc TfM9jjy2GFZQY0GKvhXsISOgoODdkmbKr358uVL9m/IWQX0PX0Erc4e+StYiP9sHFFuH IZ9lYUpAfqQP+66nCdHUNVllwrVreUYyCTYhLeLG9j3y0/K/4Hnh4m4uHWs+cds12piH pn+93RXbPCD6jnvoVVcamJ/njfoYSmxVonL2dJFl/86WciCITeMnxV01lt+0kPWDwkYv I0lg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id w74si7984583ioi.258.2017.09.26.12.01.58; Tue, 26 Sep 2017 12:01:58 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id 4900360D6F; Tue, 26 Sep 2017 19:01:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 74DCF60D83; Tue, 26 Sep 2017 19:00:38 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id C8B1960D78; Tue, 26 Sep 2017 19:00:18 +0000 (UTC) Received: from forward106p.mail.yandex.net (forward106p.mail.yandex.net [77.88.28.109]) by lists.linaro.org (Postfix) with ESMTPS id 1E6DD60D72 for ; Tue, 26 Sep 2017 19:00:14 +0000 (UTC) Received: from mxback9j.mail.yandex.net (mxback9j.mail.yandex.net [IPv6:2a02:6b8:0:1619::112]) by forward106p.mail.yandex.net (Yandex) with ESMTP id 9013D2D84584 for ; Tue, 26 Sep 2017 22:00:12 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback9j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 5dWdrL1SrJ-0CZqGV55; Tue, 26 Sep 2017 22:00:12 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id 7XQL04xJi6-0CLadmqf; Tue, 26 Sep 2017 22:00:12 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Tue, 26 Sep 2017 22:00:06 +0300 Message-Id: <1506452407-23070-3-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1506452407-23070-1-git-send-email-odpbot@yandex.ru> References: <1506452407-23070-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 193 Subject: [lng-odp] [PATCH API-NEXT v2 2/3] linux-gen: chksum: implement ones complement sum X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Petri Savolainen Add implementation of 16 bit ones complement sum function. This is non-performance optimized but simple and based on RFC 1071 and its errata. Signed-off-by: Petri Savolainen --- /** Email created from pull request 193 (psavol:next-ip-checksum) ** https://github.com/Linaro/odp/pull/193 ** Patch: https://github.com/Linaro/odp/pull/193.patch ** Base sha: e04e5f90df69e3031622b77fb5273b85d47eb966 ** Merge commit sha: 18d37c68b9d3a13db328316de06eed14113d0fc2 **/ platform/linux-generic/Makefile.am | 1 + platform/linux-generic/odp_chksum.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 platform/linux-generic/odp_chksum.c diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index 994bbbeee..1117e3470 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -236,6 +236,7 @@ __LIB__libodp_linux_la_SOURCES = \ odp_bitmap.c \ odp_buffer.c \ odp_byteorder.c \ + odp_chksum.c \ odp_classification.c \ odp_cpu.c \ odp_cpumask.c \ diff --git a/platform/linux-generic/odp_chksum.c b/platform/linux-generic/odp_chksum.c new file mode 100644 index 000000000..349bdaf46 --- /dev/null +++ b/platform/linux-generic/odp_chksum.c @@ -0,0 +1,36 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include + +/* Simple implementation of ones complement sum. + * Based on RFC1071 and its errata. + */ +uint16_t odp_chksum_ones_comp16(const void *p, uint32_t len) +{ + uint32_t sum = 0; + const uint16_t *data = p; + + while (len > 1) { + sum += *data++; + len -= 2; + } + + /* Add left-over byte, if any */ + if (len > 0) { + uint16_t left_over; + + *(uint8_t *)&left_over = *(const uint8_t *)data; + sum += left_over; + } + + /* Fold 32-bit sum to 16 bits */ + while (sum >> 16) + sum = (sum & 0xffff) + (sum >> 16); + + return sum; +} From patchwork Tue Sep 26 19:00:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 114278 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4173432qgf; Tue, 26 Sep 2017 12:01:11 -0700 (PDT) X-Google-Smtp-Source: AOwi7QBrMMqM+KsgW03W5b275yklGpE4T9lYANIwHihVVuoaDj5ydVsrmliFZSg9fQ3GkVLxEKix X-Received: by 10.157.41.251 with SMTP id g56mr456156otd.432.1506452470940; Tue, 26 Sep 2017 12:01:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506452470; cv=none; d=google.com; s=arc-20160816; b=zYvx3Gc/Bl5i850/tqynz7BaZgOOo20yrRRM/uHmyGWQxIA/9oCNj0AQoE3J4KQ/hy V3blEYxFyGwcK2zJtrWuV/EkyDiXOyG54iquZpI86BWIWAKVZH/X7dze9Bik1ZH6aLwd rrV9FQjvdApIYHmAtE2Yr5SM2zfJl51sjwWY7wvlIGxgvZtqBMsyeBVggAjNU6PVoDX1 Nfdkshzt6AV+e1Fxg/BPbktFWDJQIoRpvJnSdPLLszfgXBitls0CTG95mHyjRJsFKaah xN4sWkm3CGYXIR2/6h1waQ1JgRcsQCnLDRGKs0hXgzgFDo6Rn0vC0VUHL3IGU9oHcpTg NngA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=xra6ma3Jx4C0rpWTyKsjuHSu46r73f/0+W6TvJE2h9o=; b=gzygCOb/L98oYe6e3RL5iO9uAor/3ehhShNgA5mrmUyE1fdHshgM7siZTILYjj632F cOzDFal4FuZwS78+3biaanS/eMivGv4+i84HgRB9hX6qv7rilaesgZ8vUkQth4Tv/iAi 2zZeJlsSiJWNlJqJmraQXmU/C8MAoq8a7UekgTwgicviN8dnA+M+q5Onq9qrO+nvprP/ zWUmNi42CWC3olI4X+ATcqBBZHN/Sm/xqiNnZtJRkdkSex1LV1xmSOe2HgMYJGLdc66n VohuQMzc3eS/UUijnm8gRyMRL0lGCO1Gf8td+tMGcuHK9GadrMLyP6QoURIjgyHTupgX wD8Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id i139si2513677iti.197.2017.09.26.12.01.10; Tue, 26 Sep 2017 12:01:10 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id 7A09060D9E; Tue, 26 Sep 2017 19:01:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 33DBC60D72; Tue, 26 Sep 2017 19:00:30 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id A970560D79; Tue, 26 Sep 2017 19:00:18 +0000 (UTC) Received: from forward101j.mail.yandex.net (forward101j.mail.yandex.net [5.45.198.241]) by lists.linaro.org (Postfix) with ESMTPS id 526E160D78 for ; Tue, 26 Sep 2017 19:00:14 +0000 (UTC) Received: from mxback13g.mail.yandex.net (mxback13g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:92]) by forward101j.mail.yandex.net (Yandex) with ESMTP id 5696A1241B91 for ; Tue, 26 Sep 2017 22:00:13 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback13g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id FaUG7DaHFk-0Dv4Snou; Tue, 26 Sep 2017 22:00:13 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id 7XQL04xJi6-0CL0wRIE; Tue, 26 Sep 2017 22:00:12 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Tue, 26 Sep 2017 22:00:07 +0300 Message-Id: <1506452407-23070-4-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1506452407-23070-1-git-send-email-odpbot@yandex.ru> References: <1506452407-23070-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 193 Subject: [lng-odp] [PATCH API-NEXT v2 3/3] validation: chksum: add test chksum suite X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Petri Savolainen Create chksum test suite and ones complement sum test in there. Signed-off-by: Petri Savolainen --- /** Email created from pull request 193 (psavol:next-ip-checksum) ** https://github.com/Linaro/odp/pull/193 ** Patch: https://github.com/Linaro/odp/pull/193.patch ** Base sha: e04e5f90df69e3031622b77fb5273b85d47eb966 ** Merge commit sha: 18d37c68b9d3a13db328316de06eed14113d0fc2 **/ test/common_plat/m4/configure.m4 | 1 + test/common_plat/validation/api/Makefile.am | 1 + test/common_plat/validation/api/chksum/.gitignore | 1 + test/common_plat/validation/api/chksum/Makefile.am | 5 ++ test/common_plat/validation/api/chksum/chksum.c | 70 ++++++++++++++++++++++ test/common_plat/validation/api/chksum/chksum.h | 24 ++++++++ .../validation/api/chksum/chksum_main.c | 12 ++++ test/linux-generic/Makefile.am | 1 + 8 files changed, 115 insertions(+) create mode 100644 test/common_plat/validation/api/chksum/.gitignore create mode 100644 test/common_plat/validation/api/chksum/Makefile.am create mode 100644 test/common_plat/validation/api/chksum/chksum.c create mode 100644 test/common_plat/validation/api/chksum/chksum.h create mode 100644 test/common_plat/validation/api/chksum/chksum_main.c diff --git a/test/common_plat/m4/configure.m4 b/test/common_plat/m4/configure.m4 index 13a13bd50..c06daea28 100644 --- a/test/common_plat/m4/configure.m4 +++ b/test/common_plat/m4/configure.m4 @@ -11,6 +11,7 @@ AC_CONFIG_FILES([test/common_plat/Makefile test/common_plat/validation/api/atomic/Makefile test/common_plat/validation/api/barrier/Makefile test/common_plat/validation/api/buffer/Makefile + test/common_plat/validation/api/chksum/Makefile test/common_plat/validation/api/classification/Makefile test/common_plat/validation/api/cpumask/Makefile test/common_plat/validation/api/crypto/Makefile diff --git a/test/common_plat/validation/api/Makefile.am b/test/common_plat/validation/api/Makefile.am index b00fb2e95..65b2e3b9c 100644 --- a/test/common_plat/validation/api/Makefile.am +++ b/test/common_plat/validation/api/Makefile.am @@ -1,6 +1,7 @@ ODP_MODULES = atomic \ barrier \ buffer \ + chksum \ classification \ cpumask \ crypto \ diff --git a/test/common_plat/validation/api/chksum/.gitignore b/test/common_plat/validation/api/chksum/.gitignore new file mode 100644 index 000000000..c69e8c470 --- /dev/null +++ b/test/common_plat/validation/api/chksum/.gitignore @@ -0,0 +1 @@ +chksum_main diff --git a/test/common_plat/validation/api/chksum/Makefile.am b/test/common_plat/validation/api/chksum/Makefile.am new file mode 100644 index 000000000..46f3643ef --- /dev/null +++ b/test/common_plat/validation/api/chksum/Makefile.am @@ -0,0 +1,5 @@ +include ../Makefile.inc + +test_PROGRAMS = chksum_main$(EXEEXT) +chksum_main_SOURCES = chksum_main.c chksum.c chksum.h +chksum_main_LDADD = $(LIBCUNIT_COMMON) $(LIBODP) diff --git a/test/common_plat/validation/api/chksum/chksum.c b/test/common_plat/validation/api/chksum/chksum.c new file mode 100644 index 000000000..c3255d697 --- /dev/null +++ b/test/common_plat/validation/api/chksum/chksum.c @@ -0,0 +1,70 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include "chksum.h" + +#define NUM_IP_HDR 5 +#define IP_HDR_LEN 20 + +uint8_t ip_hdr_test_vect[NUM_IP_HDR][IP_HDR_LEN] ODP_ALIGNED(4) = { + { 0x45, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, + 0xAB, 0x33, 0xC0, 0xA8, 0x2C, 0xA2, 0xC0, 0xA8, 0x21, 0x99 + }, + { 0x45, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, + 0xAB, 0xCA, 0xC0, 0xA8, 0x2C, 0x5E, 0xC0, 0xA8, 0x21, 0x46 + }, + { 0x45, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, + 0xAB, 0x64, 0xC0, 0xA8, 0x2C, 0x20, 0xC0, 0xA8, 0x21, 0xEA + }, + { 0x45, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, + 0xAB, 0x59, 0xC0, 0xA8, 0x2C, 0xD2, 0xC0, 0xA8, 0x21, 0x43 + }, + { 0x45, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, + 0xAC, 0x06, 0xC0, 0xA8, 0x2C, 0x5C, 0xC0, 0xA8, 0x21, 0x0C + } +}; + +/* Test ones complement sum with IPv4 headers */ +void chksum_ones_complement_ip(void) +{ + int i; + uint16_t sum, res; + + for (i = 0; i < NUM_IP_HDR; i++) { + sum = odp_chksum_ones_comp16(ip_hdr_test_vect[0], IP_HDR_LEN); + res = ~sum; + + CU_ASSERT(res == 0); + } +} + +odp_testinfo_t chksum_suite[] = { + ODP_TEST_INFO(chksum_ones_complement_ip), + ODP_TEST_INFO_NULL, +}; + +odp_suiteinfo_t chksum_suites[] = { + {"Checksum", NULL, NULL, chksum_suite}, + ODP_SUITE_INFO_NULL +}; + +int chksum_main(int argc, char *argv[]) +{ + int ret; + + /* parse common options: */ + if (odp_cunit_parse_options(argc, argv)) + return -1; + + ret = odp_cunit_register(chksum_suites); + + if (ret == 0) + ret = odp_cunit_run(); + + return ret; +} diff --git a/test/common_plat/validation/api/chksum/chksum.h b/test/common_plat/validation/api/chksum/chksum.h new file mode 100644 index 000000000..2086aeae7 --- /dev/null +++ b/test/common_plat/validation/api/chksum/chksum.h @@ -0,0 +1,24 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _ODP_TEST_CHKSUM_H_ +#define _ODP_TEST_CHKSUM_H_ + +#include + +/* test functions: */ +void chksum_ones_complement_ip(void); + +/* test arrays: */ +extern odp_testinfo_t chksum_suite[]; + +/* test registry: */ +extern odp_suiteinfo_t chksum_suites[]; + +/* main test program: */ +int chksum_main(int argc, char *argv[]); + +#endif diff --git a/test/common_plat/validation/api/chksum/chksum_main.c b/test/common_plat/validation/api/chksum/chksum_main.c new file mode 100644 index 000000000..bec10ddd4 --- /dev/null +++ b/test/common_plat/validation/api/chksum/chksum_main.c @@ -0,0 +1,12 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "chksum.h" + +int main(int argc, char *argv[]) +{ + return chksum_main(argc, argv); +} diff --git a/test/linux-generic/Makefile.am b/test/linux-generic/Makefile.am index 4be5d94e9..0d3635880 100644 --- a/test/linux-generic/Makefile.am +++ b/test/linux-generic/Makefile.am @@ -13,6 +13,7 @@ TESTS = validation/api/pktio/pktio_run.sh \ $(ALL_API_VALIDATION_DIR)/atomic/atomic_main$(EXEEXT) \ $(ALL_API_VALIDATION_DIR)/barrier/barrier_main$(EXEEXT) \ $(ALL_API_VALIDATION_DIR)/buffer/buffer_main$(EXEEXT) \ + $(ALL_API_VALIDATION_DIR)/chksum/chksum_main$(EXEEXT) \ $(ALL_API_VALIDATION_DIR)/classification/classification_main$(EXEEXT) \ $(ALL_API_VALIDATION_DIR)/cpumask/cpumask_main$(EXEEXT) \ $(ALL_API_VALIDATION_DIR)/crypto/crypto_main$(EXEEXT) \