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