From patchwork Thu Oct 26 12:00:19 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: 117204 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp684680qgn; Thu, 26 Oct 2017 05:10:19 -0700 (PDT) X-Google-Smtp-Source: ABhQp+Sa4pUbYZhh/Cbgt1DSN5LT/946h6F2+zp2lbkKNv/UFJfMQLf4ZhMzMYdZTXYKFmf8awfa X-Received: by 10.55.31.99 with SMTP id f96mr7798798qkf.95.1509019819512; Thu, 26 Oct 2017 05:10:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509019819; cv=none; d=google.com; s=arc-20160816; b=pf4n6T/wJAReJDFiFJS37rvT7N5fRBl1r3CdbrzdG78X7yeP83g8s0hQJCjqFiGrf6 YPfKegqYcifUbYcSEVL1XPve1sG1PKFRBc0Xjyjo2hhVcx4xtC37mGcEgNU5kOuMY0Kt idAEirLAoB5LLvckRUXgIR+KkcMBP4/GVYQyXJud+TBwQNkiGNbsJvwVuc8bm24E5GWJ vWqJIQiVRtqUdguS/LrmKCggN0ODbdB02R3/vhgGrOqYWMG6XRuqCf9Rpm+vWe7BJCFx C6BKnyPErOV87J1CJC5672agLUhG1d0PSSz4+rGLUyDE1D85QtiYcUdL0jFrC1qk3jik /Zzw== 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=N7ISyyYgWJMZ/N6qIiQrSbBDb2e2B6IwEPd6gSXSx+I=; b=VcsT+cfWVdZUlhyLHRYNhSVjaoKdhi+aoR6ngkkZQMqOodzCL2zBRQJz/hbCdSCkuy YCk+4fnAdJYnziTeYTivkvKfGEW1hdEfhV3F8nV77h8NCSNDy7721fOoXaf4OdifmwON Sq4zREOJD6GDS/Fvpm5Eb4oA+3yrdR7u7SVtNVzlpIcNQpOl04NJqsTy+blX3eTCYlur wSeCqbIWFq8eTs+HM4gaFXzXBwJIDp3APJnxhPXjtD+dsyQciAKqr8k3N+9kDyROs3HH mjwygW2g9lZfLPaSpBG5cY6D/VRKM6UoPfk05QZuSsQF6pLlXNZ+oB8HtnxIwf0+bxLr Rcvg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 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 (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id f3si4417105qta.485.2017.10.26.05.10.19; Thu, 26 Oct 2017 05:10:19 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 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 21333608D9; Thu, 26 Oct 2017 12:10:19 +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 A2789622CF; Thu, 26 Oct 2017 12:02:54 +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 46083608D9; Thu, 26 Oct 2017 12:02:00 +0000 (UTC) Received: from forward102j.mail.yandex.net (forward102j.mail.yandex.net [5.45.198.243]) by lists.linaro.org (Postfix) with ESMTPS id 40B1561048 for ; Thu, 26 Oct 2017 12:00:53 +0000 (UTC) Received: from mxback14j.mail.yandex.net (mxback14j.mail.yandex.net [IPv6:2a02:6b8:0:1619::90]) by forward102j.mail.yandex.net (Yandex) with ESMTP id A0BCA56014C9 for ; Thu, 26 Oct 2017 15:00:51 +0300 (MSK) Received: from smtp3p.mail.yandex.net (smtp3p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:8]) by mxback14j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id IWvm0dACBp-0p3iBhCS; Thu, 26 Oct 2017 15:00:51 +0300 Received: by smtp3p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id G4ilPoyJyx-0oNiXxMG; Thu, 26 Oct 2017 15:00:50 +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: Thu, 26 Oct 2017 15:00:19 +0300 Message-Id: <1509019221-3453-2-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1509019221-3453-1-git-send-email-odpbot@yandex.ru> References: <1509019221-3453-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 242 Subject: [lng-odp] [PATCH API-NEXT v3 1/3] api: packet: 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 Added packet metadata for ones complement sum over packet data. Some NICs calculate the sum during packet input (at least for IP fragments) and store the value into the packet descriptor. This offloads L4 checksum calculation for IP fragments as SW does not need sum all payload data, but just combine pre-calculated sums from packet descriptors and remove extra header fields from the sum. Signed-off-by: Petri Savolainen --- /** Email created from pull request 242 (psavol:next-checksum-metadata) ** https://github.com/Linaro/odp/pull/242 ** Patch: https://github.com/Linaro/odp/pull/242.patch ** Base sha: 63d92eb289261d1534b5b9e1e04291faa5e45d30 ** Merge commit sha: 5c16247e4ce2735df80c66f11dd9c9708e8c905f **/ include/odp/api/spec/packet.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/include/odp/api/spec/packet.h b/include/odp/api/spec/packet.h index 62ecf70e1..ae927d6e9 100644 --- a/include/odp/api/spec/packet.h +++ b/include/odp/api/spec/packet.h @@ -1437,6 +1437,26 @@ void odp_packet_l3_chksum_insert(odp_packet_t pkt, int l3); void odp_packet_l4_chksum_insert(odp_packet_t pkt, int l4); /** + * Ones' complement sum of packet data + * + * Returns 16-bit ones' complement sum that was calculated over a portion of + * packet data during a packet processing operation (e.g. packet input or + * IPSEC offload). The data range is output with 'range' parameter, and usually + * includes IP payload (L4 headers and payload). When 'range.length' is zero, + * the sum has not been calculated. In case of odd number of bytes, + * calculation uses a zero byte as padding at the end. The sum may be used as + * part of e.g. UDP/TCP checksum checking, especially with IP fragments. + * + * @param pkt Packet handle + * @param[out] range Data range of the sum (output). The calculation started + * from range.offset and included range.length bytes. When + * range.length is zero, the sum has not been calculated. + * + * @return Ones' complement sum over the data range + */ +uint16_t odp_packet_ones_comp(odp_packet_t pkt, odp_packet_data_range_t *range); + +/** * Packet flow hash value * * Returns the hash generated from the packet header. Use From patchwork Thu Oct 26 12:00:20 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: 117205 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp684907qgn; Thu, 26 Oct 2017 05:10:29 -0700 (PDT) X-Google-Smtp-Source: ABhQp+TufqwM7DlfQ8UVbI8Pm7giPoZMswHcK5hLOjd0JR2Ouab0G8teTlZ3G8+tn9XAqbrlWwtA X-Received: by 10.200.3.205 with SMTP id z13mr37189808qtg.25.1509019829564; Thu, 26 Oct 2017 05:10:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509019829; cv=none; d=google.com; s=arc-20160816; b=JV9JGXjzPamkhBTAxY2G26hSMmTlcv7Kg4+tCujhFZ+75K7DkEQhAIWzmVgyeMJ263 qEzUpnMh3QMBm+qQTD+QapD99GohtsVRJ5bg7+9jgkCm3be8JjCQg+iP61xLqYn6KzYq neiSOhmTsSJFuNCwoqrY2J2sD6VZmOXZ67e0OSVHs1aaCUzEZ7UAxgwFm2l93DC19N+o lFlg3J/Y9rfTm6wXNdA4PuyJUeuycn4RMcwevtab7pHCCImjaBgEnvZQg2IBRfVHRF0w XdCCWp2lVLY4l1sw8eMGTq1oYL9KSJlcV/OekUanCeV3mtgcbT/chZKkbHBAPz0dP4uN wlJw== 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=k87Yzpfzw5Ch5xSF1uYSlhxfxJ64tUMCL/mvqfyAVU4=; b=psuzBsvNPY/N9dE93KK0DmSFMbPIUcME6tYWATdp0w44XIZIU2sHNV+K2I3wUVxLLY VpaBwi19VhYCP28hoks/K0cxU2CzWHFfPvE8iN4QGdHeOhe7NH5+HPWtmEmebotwZ/Mv bGNY5NS1OYgWyWIzxjq81sw9qSxNsbxw7oh1jTfEZEUo9760NMDacSEMLUeayRkYEJAA xY4v0HVxDCrYfNlTk2BhFcWK4YadJlaX8pjcqdbaeeVSRDaltvVCiC9UlKwffDUgOWjx U0939+7/+2At/LOWNP227p3Q1EyHE+lVk8HPQDBfl6w3GX1BUDL7YfEfZ9KwPFOQ9xea s3fQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 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 (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id m39si801501qkh.312.2017.10.26.05.10.29; Thu, 26 Oct 2017 05:10:29 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 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 2D84961009; Thu, 26 Oct 2017 12:10:29 +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, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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 0AA376294F; Thu, 26 Oct 2017 12:03:05 +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 3CB54608D9; Thu, 26 Oct 2017 12:02:01 +0000 (UTC) Received: from forward104j.mail.yandex.net (forward104j.mail.yandex.net [5.45.198.247]) by lists.linaro.org (Postfix) with ESMTPS id B608060BFA for ; Thu, 26 Oct 2017 12:00:54 +0000 (UTC) Received: from mxback17j.mail.yandex.net (mxback17j.mail.yandex.net [IPv6:2a02:6b8:0:1619::93]) by forward104j.mail.yandex.net (Yandex) with ESMTP id 3AE4849749 for ; Thu, 26 Oct 2017 15:00:53 +0300 (MSK) Received: from smtp3p.mail.yandex.net (smtp3p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:8]) by mxback17j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 9Yzkn8yTUx-0qRKpJn6; Thu, 26 Oct 2017 15:00:52 +0300 Received: by smtp3p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id G4ilPoyJyx-0pN8bAEm; Thu, 26 Oct 2017 15:00:51 +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: Thu, 26 Oct 2017 15:00:20 +0300 Message-Id: <1509019221-3453-3-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1509019221-3453-1-git-send-email-odpbot@yandex.ru> References: <1509019221-3453-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 242 Subject: [lng-odp] [PATCH API-NEXT v3 2/3] linux-gen: packet: dummy ones complement implementation 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 Added dummy implementation of ones complement calls. Linux generic implementation does not calculate the sum for all incoming packets as it would be wasteful in SW. It's better to wait until application asks it with odp_chksum_ones_comp16(). Later on, the sum could be stored into the packet header, if we found a way to get it from the HW. Signed-off-by: Petri Savolainen --- /** Email created from pull request 242 (psavol:next-checksum-metadata) ** https://github.com/Linaro/odp/pull/242 ** Patch: https://github.com/Linaro/odp/pull/242.patch ** Base sha: 63d92eb289261d1534b5b9e1e04291faa5e45d30 ** Merge commit sha: 5c16247e4ce2735df80c66f11dd9c9708e8c905f **/ platform/linux-generic/odp_packet.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index 603ac7181..f153ea2db 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -1255,6 +1255,14 @@ int odp_packet_l4_offset_set(odp_packet_t pkt, uint32_t offset) return 0; } +uint16_t odp_packet_ones_comp(odp_packet_t pkt, odp_packet_data_range_t *range) +{ + (void)pkt; + range->length = 0; + range->offset = 0; + return 0; +} + void odp_packet_flow_hash_set(odp_packet_t pkt, uint32_t flow_hash) { odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt); From patchwork Thu Oct 26 12:00:21 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: 117203 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp684089qgn; Thu, 26 Oct 2017 05:09:47 -0700 (PDT) X-Google-Smtp-Source: ABhQp+QDMLNBUo00h3m3CHFmp6ldwzN7rA71x2tx1vQ7uj9It+racvm+iomGBfKPsHsOLHkjkbE5 X-Received: by 10.55.26.91 with SMTP id a88mr7228033qka.11.1509019787094; Thu, 26 Oct 2017 05:09:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509019787; cv=none; d=google.com; s=arc-20160816; b=H/nigR+020xT00eCBjLKaovquuK6BGENDDe6RohLf7FXs6/iDyfB/hh260PDUijkQP k78UyRG8OPqiXtlbhR3M3Mnsyfe8sn2R1N/e+n10e9daX1zVf51zdblmlLkeID5R1YiO to4OszBzwx+ZXxapXr2cFjLK28WhFnWyr+Om7kKnC2YIBAM/uBZpgviaZXRtbc2x5AtE 1uJc4d2hhRr8pAxev51EHknmcc3tw4LgD9J9gpAH7/zQL524XneFld/ybPPgQ152BSPv jLUoXrEYAwMaT8Lz+r6T1+YO3XwC1LJkVmL0YyEYy91CmKXtQFkIFhfUULE3lzXO1FDm TQSg== 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=OaqEwDBnLLYddn4MAGVO5OOPan52V7s9qWKUdlTKFWk=; b=OcuTYL4Jx/Ir3GYWAkEuJrGsjkfXG9rj5n56uauEVRyh5CPcx7do2POBd/2NieLCzi oONzRuZtKKPivSB0y3DB3O88DecDgXTMlwj4RW126afI8zSQCN9XUaZ+/02Er0G9D5G6 p3iesclWdfjXWZqv/785MKE66sbwz49olvp2gRDgrxBMBgS2YuW6AjgtEa696DCenCZ2 KUsiPyPxeqKedWDiPXk1XBVKDVPE5GfsXAZo88fr7Osl/RIjUuNYjYPKgXJxUclYLMFa 4X6jn2LWG14iB8nda/M48kFAvCuBQDUOwhQSC7OMWs9UvRlYVDMPkkT35xjggD21N7Kg IyPw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 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 (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id h35si4203565qtd.356.2017.10.26.05.09.46; Thu, 26 Oct 2017 05:09:47 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 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 C262B6100B; Thu, 26 Oct 2017 12:09:46 +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, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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 60C7761DDB; Thu, 26 Oct 2017 12:02:48 +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 7872F608D9; Thu, 26 Oct 2017 12:01:57 +0000 (UTC) Received: from forward105j.mail.yandex.net (forward105j.mail.yandex.net [5.45.198.248]) by lists.linaro.org (Postfix) with ESMTPS id 1EA39610B9 for ; Thu, 26 Oct 2017 12:00:55 +0000 (UTC) Received: from mxback8g.mail.yandex.net (mxback8g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:169]) by forward105j.mail.yandex.net (Yandex) with ESMTP id 071E9189049 for ; Thu, 26 Oct 2017 15:00:54 +0300 (MSK) Received: from smtp3p.mail.yandex.net (smtp3p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:8]) by mxback8g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id r4pnaCbIuY-0rr4jUEM; Thu, 26 Oct 2017 15:00:54 +0300 Received: by smtp3p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id G4ilPoyJyx-0rNuCQZf; Thu, 26 Oct 2017 15:00:53 +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: Thu, 26 Oct 2017 15:00:21 +0300 Message-Id: <1509019221-3453-4-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1509019221-3453-1-git-send-email-odpbot@yandex.ru> References: <1509019221-3453-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 242 Subject: [lng-odp] [PATCH API-NEXT v3 3/3] validation: packet: add call to ones complement 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 Call ones complement function. Actual validation of correctness of the sum is to be done, when an implementation exist which sets the sum on packet input. Signed-off-by: Petri Savolainen --- /** Email created from pull request 242 (psavol:next-checksum-metadata) ** https://github.com/Linaro/odp/pull/242 ** Patch: https://github.com/Linaro/odp/pull/242.patch ** Base sha: 63d92eb289261d1534b5b9e1e04291faa5e45d30 ** Merge commit sha: 5c16247e4ce2735df80c66f11dd9c9708e8c905f **/ test/validation/api/packet/packet.c | 6 ++++++ test/validation/api/pktio/pktio.c | 25 +++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/test/validation/api/packet/packet.c b/test/validation/api/packet/packet.c index 431444cf3..f03fa1d84 100644 --- a/test/validation/api/packet/packet.c +++ b/test/validation/api/packet/packet.c @@ -503,6 +503,7 @@ void packet_test_basic_metadata(void) { odp_packet_t pkt = test_packet; odp_time_t ts; + odp_packet_data_range_t range; CU_ASSERT_PTR_NOT_NULL(odp_packet_head(pkt)); CU_ASSERT_PTR_NOT_NULL(odp_packet_data(pkt)); @@ -512,6 +513,11 @@ void packet_test_basic_metadata(void) CU_ASSERT(odp_packet_input(pkt) == ODP_PKTIO_INVALID); CU_ASSERT(odp_packet_input_index(pkt) < 0); + /* Packet was not received from a packet IO, shouldn't have ones + * complement calculated. */ + odp_packet_ones_comp(pkt, &range); + CU_ASSERT(range.length == 0); + odp_packet_flow_hash_set(pkt, UINT32_MAX); CU_ASSERT(odp_packet_has_flow_hash(pkt)); CU_ASSERT(odp_packet_flow_hash(pkt) == UINT32_MAX); diff --git a/test/validation/api/pktio/pktio.c b/test/validation/api/pktio/pktio.c index 720707358..ee5de8401 100644 --- a/test/validation/api/pktio/pktio.c +++ b/test/validation/api/pktio/pktio.c @@ -48,6 +48,9 @@ static int num_ifaces; interface that just become up.*/ static bool wait_for_network; +/* Dummy global variable to avoid compiler optimizing out API calls */ +uint64_t odp_valid_test_pktio_u64; + /** local container for pktio attributes */ typedef struct { const char *name; @@ -661,10 +664,24 @@ static void pktio_txrx_multi(pktio_info_t *pktio_a, pktio_info_t *pktio_b, CU_ASSERT(num_rx == num_pkts); for (i = 0; i < num_rx; ++i) { - CU_ASSERT_FATAL(rx_pkt[i] != ODP_PACKET_INVALID); - CU_ASSERT(odp_packet_input(rx_pkt[i]) == pktio_b->id); - CU_ASSERT(odp_packet_has_error(rx_pkt[i]) == 0); - odp_packet_free(rx_pkt[i]); + odp_packet_data_range_t range; + uint16_t sum; + odp_packet_t pkt = rx_pkt[i]; + + CU_ASSERT_FATAL(pkt != ODP_PACKET_INVALID); + CU_ASSERT(odp_packet_input(pkt) == pktio_b->id); + CU_ASSERT(odp_packet_has_error(pkt) == 0); + + /* Dummy read to ones complement in case pktio has set it */ + sum = odp_packet_ones_comp(pkt, &range); + if (range.length > 0) + odp_valid_test_pktio_u64 += sum; + + /* Dummy read to flow hash in case pktio has set it */ + if (odp_packet_has_flow_hash(pkt)) + odp_valid_test_pktio_u64 += odp_packet_flow_hash(pkt); + + odp_packet_free(pkt); } }