From patchwork Mon Jan 15 13:00:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 124517 Delivered-To: patch@linaro.org Received: by 10.46.64.148 with SMTP id r20csp661663lje; Mon, 15 Jan 2018 05:04:44 -0800 (PST) X-Google-Smtp-Source: ACJfBouDwUf8jHe79dtJp+SsH4CsNYtT6ejikeiT/4Y4nQ8X9nNS5TmTPsf87HwFzU4JyzIEuXUC X-Received: by 10.200.27.232 with SMTP id m37mr20144791qtk.171.1516021484004; Mon, 15 Jan 2018 05:04:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516021483; cv=none; d=google.com; s=arc-20160816; b=AYbZKEmBTn5Ul3w/wrhznS0QFyqjs1X3c9g0looG4as+lqNjSc6eYFjl1+6za3ayoM Lf/oX0kcKg8Bx5k/+poPQQabrVH/wegxTMV3R5OML9+qmbfOtwR+Zr0ObaO6VH2rLmgF EG4hdsd2dl/PDYiWsTlE0nRPxOOfb3Ci7VoSwlSGaoM0dZ8Q51SfbX4k8YOGW6sn2i57 XwJ6e6aQ/vDunp5OSQalOlhHrSQXACxImcsANDF0PV4TNSZU+IJ8MKXgl0tZTFeR8QTT G7kBh7luq7w9naPhBzcycNf4p/c/HyEOqC1EKYRiI3Sf72Y/NCHntxirZ0S3WEPNatlP pPnQ== 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=9gVrRwyxyiCwsMino++Nh4DscNS2mbzvqTOry13cU18=; b=WMRSmGHIWPE2FtaGgZhDdn/VUXELxgLcvlK2ScY//IHEs2aTF2n3B1TUgPWQwoSf/k oqr47RT4B3LrSY3l4D1pxEMNAMzllAGG4lSPA2bz6hy+ZKKJ3Z5ETS80YcnFz6LcUmDM 9g2qjukGfxRuy4ln4X0kHZKQMaFS6bX0O3dGJp/F0MqI2K7oLktM7PYGP/19pM67lo/Y 7A5x3Pk1w9mq5wCkxnreGLto2MbNuSBXP1ftXptnhKJpOXUUKiVipSXyR1D7WULj7zoB BwLTaymF+1lfr9sO4FxgdBnENEb7BmqixgC3V/AKwbK1O0COB7fYu5FJXhserRTHc9e9 R9Uw== 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 u21si8528117qke.165.2018.01.15.05.04.43; Mon, 15 Jan 2018 05:04:43 -0800 (PST) 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 AE3C761751; Mon, 15 Jan 2018 13:04:43 +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, RCVD_IN_MSPIKE_H2 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 715DE61742; Mon, 15 Jan 2018 13:03:33 +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 117E460881; Mon, 15 Jan 2018 13:03:20 +0000 (UTC) Received: from forward100j.mail.yandex.net (forward100j.mail.yandex.net [5.45.198.240]) by lists.linaro.org (Postfix) with ESMTPS id 9B36460881 for ; Mon, 15 Jan 2018 13:00:12 +0000 (UTC) Received: from mxback10o.mail.yandex.net (mxback10o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::24]) by forward100j.mail.yandex.net (Yandex) with ESMTP id 3CF875D81DBE for ; Mon, 15 Jan 2018 16:00:11 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback10o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id kq7T4BDwyF-0Bvmp5UP; Mon, 15 Jan 2018 16:00:11 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id Bnqb3pkuSH-0A1mYuw0; Mon, 15 Jan 2018 16:00:10 +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: Mon, 15 Jan 2018 16:00:04 +0300 Message-Id: <1516021209-8997-2-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> References: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 388 Subject: [lng-odp] [PATCH API-NEXT v2 1/6] linux-gen: packet: single user ptr field 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 Remove unnecessary union of user context u64/pointer. Rename the field for better code readability. Signed-off-by: Petri Savolainen --- /** Email created from pull request 388 (psavol:next-user-ptr-init) ** https://github.com/Linaro/odp/pull/388 ** Patch: https://github.com/Linaro/odp/pull/388.patch ** Base sha: 6303c7d0e98fafe0f14c8c4dd9989b3b7633ebf4 ** Merge commit sha: 76bd874ba5677533132a4c0a39c8e5cf9049a9af **/ platform/linux-generic/include/odp_buffer_internal.h | 8 +------- platform/linux-generic/odp_packet.c | 10 +++++----- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/platform/linux-generic/include/odp_buffer_internal.h b/platform/linux-generic/include/odp_buffer_internal.h index c56c5b01b..5252dc808 100644 --- a/platform/linux-generic/include/odp_buffer_internal.h +++ b/platform/linux-generic/include/odp_buffer_internal.h @@ -84,13 +84,7 @@ struct odp_buffer_hdr_t { struct odp_buffer_hdr_t *burst[BUFFER_BURST_SIZE]; /* --- Mostly read only data --- */ - - /* User context pointer or u64 */ - union { - uint64_t buf_u64; - void *buf_ctx; - const void *buf_cctx; /* const alias for ctx */ - }; + const void *user_ptr; /* Reference count */ odp_atomic_u32_t ref_cnt; diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index 83a880947..2a977f064 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -35,7 +35,7 @@ const _odp_packet_inline_offset_t _odp_packet_inline ODP_ALIGNED_CACHE = { .pool = offsetof(odp_packet_hdr_t, buf_hdr.pool_ptr), .input = offsetof(odp_packet_hdr_t, input), .segcount = offsetof(odp_packet_hdr_t, buf_hdr.segcount), - .user_ptr = offsetof(odp_packet_hdr_t, buf_hdr.buf_ctx), + .user_ptr = offsetof(odp_packet_hdr_t, buf_hdr.user_ptr), .user_area = offsetof(odp_packet_hdr_t, buf_hdr.uarea_addr), .l2_offset = offsetof(odp_packet_hdr_t, p.l2_offset), .l3_offset = offsetof(odp_packet_hdr_t, p.l3_offset), @@ -265,7 +265,7 @@ static inline void packet_seg_copy_md(odp_packet_hdr_t *dst, dst->timestamp = src->timestamp; /* buffer header side packet metadata */ - dst->buf_hdr.buf_u64 = src->buf_hdr.buf_u64; + dst->buf_hdr.user_ptr = src->buf_hdr.user_ptr; dst->buf_hdr.uarea_addr = src->buf_hdr.uarea_addr; /* segmentation data is not copied: @@ -1258,9 +1258,9 @@ int odp_packet_input_index(odp_packet_t pkt) return odp_pktio_index(packet_hdr(pkt)->input); } -void odp_packet_user_ptr_set(odp_packet_t pkt, const void *ctx) +void odp_packet_user_ptr_set(odp_packet_t pkt, const void *ptr) { - packet_hdr(pkt)->buf_hdr.buf_cctx = ctx; + packet_hdr(pkt)->buf_hdr.user_ptr = ptr; } int odp_packet_l2_offset_set(odp_packet_t pkt, uint32_t offset) @@ -1931,7 +1931,7 @@ int _odp_packet_copy_md_to_packet(odp_packet_t srcpkt, odp_packet_t dstpkt) dsthdr->input = srchdr->input; dsthdr->dst_queue = srchdr->dst_queue; - dsthdr->buf_hdr.buf_u64 = srchdr->buf_hdr.buf_u64; + dsthdr->buf_hdr.user_ptr = srchdr->buf_hdr.user_ptr; if (dsthdr->buf_hdr.uarea_addr != NULL && srchdr->buf_hdr.uarea_addr != NULL) { memcpy(dsthdr->buf_hdr.uarea_addr, srchdr->buf_hdr.uarea_addr, From patchwork Mon Jan 15 13:00:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 124524 Delivered-To: patch@linaro.org Received: by 10.46.64.148 with SMTP id r20csp662892lje; Mon, 15 Jan 2018 05:08:40 -0800 (PST) X-Google-Smtp-Source: ACJfBos/pnIaThh9zBFguxZjJxngCphgsRcv2sFO1bJ07O0a3D0U/0PRXoeuosD3s/+bgh+okJU7 X-Received: by 10.200.35.78 with SMTP id b14mr51810490qtb.260.1516021719902; Mon, 15 Jan 2018 05:08:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516021719; cv=none; d=google.com; s=arc-20160816; b=zm7jk6MFvZckCNWHP80kwBfpzkB+qQIZb+QcsmpeyvkrAmmk21h5g/MBip1OY5+hXo l6Ugfm0fpfA+COdO1BhniZ1anF8OcH+6v8E84GESNDj1DMbszCQw+3KTYiVvU2SlTaG/ /Ve2l98n4M5tFLQbhZ07f5nca3CdJ4bFz6+srkDD516BekFiTZPTJ7Hya8Apfcv5gMpd wqCR4S6WSabW/TjTmDCdaltrzWkAt/TLbuSzYyT6GDyV5N8gqX4AfNulUzs0XjvMWLHU 6shDVS8cd6zi56rbQMKNwpZRGZPIeLsxDv+rJPftJ1RqcH/Xf08z99igT4m/zb6mb7b6 MayQ== 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=9AhqmcQvwOu9weMFArtSEyeGJnyNC0L8W3MzDppC8UE=; b=jRX2I76ThXzv5HzsmK4KglgadnVlZlDC8dDeF+P4G7MV8rbOIK9DIedklptcD5z2qh p1PpscaGL2ra1U+35CqWHKrDj1IH98cK56O3FgV1Xk+gZYonFcO5DnJJyZatdiE1QRcZ PC4Gcu1GkD/mWJbB1FqllePiBGP61mPWulwK2W9o62SFsjw5EeYk2bpN4HbTMnfI6dm+ 8BODf4IeWQaqsjIvIRKqQyKJG54c1A8ojEGB6GKE6VHnS+xvmrsKF/74aqM4Bnu5BLKw OEZEsvI2FQGnsnnswkcx//KZtGNob+ONuFfJP03JRKEwHFDeN7xPK9MSdjao7XNJ3Sz6 Lv7w== 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 y23si5472722qka.411.2018.01.15.05.08.39; Mon, 15 Jan 2018 05:08:39 -0800 (PST) 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 9BFC9617CD; Mon, 15 Jan 2018 13:08: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=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2 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 A88EE617B9; Mon, 15 Jan 2018 13:04:11 +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 BB7336177F; Mon, 15 Jan 2018 13:03:48 +0000 (UTC) Received: from forward101p.mail.yandex.net (forward101p.mail.yandex.net [77.88.28.101]) by lists.linaro.org (Postfix) with ESMTPS id 9F628608DF for ; Mon, 15 Jan 2018 13:00:13 +0000 (UTC) Received: from mxback1g.mail.yandex.net (mxback1g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:162]) by forward101p.mail.yandex.net (Yandex) with ESMTP id 209BB6A82DB3 for ; Mon, 15 Jan 2018 16:00:12 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback1g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id iCBUsuZ5mD-0CMuJfkQ; Mon, 15 Jan 2018 16:00:12 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id Bnqb3pkuSH-0B1iTd7f; Mon, 15 Jan 2018 16: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: Mon, 15 Jan 2018 16:00:05 +0300 Message-Id: <1516021209-8997-3-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> References: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 388 Subject: [lng-odp] [PATCH API-NEXT v2 2/6] linux-gen: packet: hide internal definitions from Doxygen 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 internal header file is included from API files and thus Doxygen sees it. Use Doxygen tag @cond to hide implementation internal definitions. Dummy Doxygen doxumentation is not needed any more. Signed-off-by: Petri Savolainen --- /** Email created from pull request 388 (psavol:next-user-ptr-init) ** https://github.com/Linaro/odp/pull/388 ** Patch: https://github.com/Linaro/odp/pull/388.patch ** Base sha: 6303c7d0e98fafe0f14c8c4dd9989b3b7633ebf4 ** Merge commit sha: 76bd874ba5677533132a4c0a39c8e5cf9049a9af **/ .../include/odp/api/plat/packet_types.h | 100 +++++++++------------ 1 file changed, 44 insertions(+), 56 deletions(-) diff --git a/platform/linux-generic/include/odp/api/plat/packet_types.h b/platform/linux-generic/include/odp/api/plat/packet_types.h index 98e5c4f03..1531b32b0 100644 --- a/platform/linux-generic/include/odp/api/plat/packet_types.h +++ b/platform/linux-generic/include/odp/api/plat/packet_types.h @@ -67,101 +67,89 @@ typedef enum { #endif -/** @internal Packet field accessor */ +/** @cond _ODP_HIDE_FROM_DOXYGEN_ */ + +/* Packet field accessor */ #define _odp_pkt_get(pkt, cast, field) \ (*(cast *)(uintptr_t)((uint8_t *)pkt + _odp_packet_inline.field)) -/** @internal Packet header field offsets for inline functions */ +/* Packet header field offsets for inline functions */ typedef struct _odp_packet_inline_offset_t { - /** @internal field offset */ uint16_t data; - /** @internal field offset */ uint16_t seg_len; - /** @internal field offset */ uint16_t frame_len; - /** @internal field offset */ uint16_t headroom; - /** @internal field offset */ uint16_t tailroom; - /** @internal field offset */ uint16_t pool; - /** @internal field offset */ uint16_t input; - /** @internal field offset */ uint16_t segcount; - /** @internal field offset */ uint16_t user_ptr; - /** @internal field offset */ uint16_t user_area; - /** @internal field offset */ uint16_t l2_offset; - /** @internal field offset */ uint16_t l3_offset; - /** @internal field offset */ uint16_t l4_offset; - /** @internal field offset */ uint16_t flow_hash; - /** @internal field offset */ uint16_t timestamp; - /** @internal field offset */ uint16_t input_flags; } _odp_packet_inline_offset_t; -/** @internal Packet input & protocol flags */ +/* Packet input & protocol flags */ typedef union { - /** All input flags */ + /* All input flags */ uint64_t all; - /** Individual input flags */ + /* Individual input flags */ struct { - uint64_t dst_queue:1; /**< Dst queue present */ + uint64_t dst_queue:1; /* Dst queue present */ - uint64_t flow_hash:1; /**< Flow hash present */ - uint64_t timestamp:1; /**< Timestamp present */ + uint64_t flow_hash:1; /* Flow hash present */ + uint64_t timestamp:1; /* Timestamp present */ - uint64_t l2:1; /**< known L2 protocol present */ - uint64_t l3:1; /**< known L3 protocol present */ - uint64_t l4:1; /**< known L4 protocol present */ + uint64_t l2:1; /* known L2 protocol present */ + uint64_t l3:1; /* known L3 protocol present */ + uint64_t l4:1; /* known L4 protocol present */ - uint64_t eth:1; /**< Ethernet */ - uint64_t eth_bcast:1; /**< Ethernet broadcast */ - uint64_t eth_mcast:1; /**< Ethernet multicast */ - uint64_t jumbo:1; /**< Jumbo frame */ - uint64_t vlan:1; /**< VLAN hdr found */ - uint64_t vlan_qinq:1; /**< Stacked VLAN found, QinQ */ + uint64_t eth:1; /* Ethernet */ + uint64_t eth_bcast:1; /* Ethernet broadcast */ + uint64_t eth_mcast:1; /* Ethernet multicast */ + uint64_t jumbo:1; /* Jumbo frame */ + uint64_t vlan:1; /* VLAN hdr found */ + uint64_t vlan_qinq:1; /* Stacked VLAN found, QinQ */ - uint64_t snap:1; /**< SNAP */ - uint64_t arp:1; /**< ARP */ + uint64_t snap:1; /* SNAP */ + uint64_t arp:1; /* ARP */ - uint64_t ipv4:1; /**< IPv4 */ - uint64_t ipv6:1; /**< IPv6 */ - uint64_t ip_bcast:1; /**< IP broadcast */ - uint64_t ip_mcast:1; /**< IP multicast */ - uint64_t ipfrag:1; /**< IP fragment */ - uint64_t ipopt:1; /**< IP optional headers */ + uint64_t ipv4:1; /* IPv4 */ + uint64_t ipv6:1; /* IPv6 */ + uint64_t ip_bcast:1; /* IP broadcast */ + uint64_t ip_mcast:1; /* IP multicast */ + uint64_t ipfrag:1; /* IP fragment */ + uint64_t ipopt:1; /* IP optional headers */ - uint64_t ipsec:1; /**< IPSec packet. Required by the + uint64_t ipsec:1; /* IPSec packet. Required by the odp_packet_has_ipsec_set() func. */ - uint64_t ipsec_ah:1; /**< IPSec authentication header */ - uint64_t ipsec_esp:1; /**< IPSec encapsulating security + uint64_t ipsec_ah:1; /* IPSec authentication header */ + uint64_t ipsec_esp:1; /* IPSec encapsulating security payload */ - uint64_t udp:1; /**< UDP */ - uint64_t tcp:1; /**< TCP */ - uint64_t tcpopt:1; /**< TCP options present */ - uint64_t sctp:1; /**< SCTP */ - uint64_t icmp:1; /**< ICMP */ - - uint64_t color:2; /**< Packet color for traffic mgmt */ - uint64_t nodrop:1; /**< Drop eligibility status */ - - uint64_t l3_chksum_done:1; /**< L3 checksum validation done */ - uint64_t l4_chksum_done:1; /**< L4 checksum validation done */ - uint64_t ipsec_udp:1; /**< UDP-encapsulated IPsec packet */ + uint64_t udp:1; /* UDP */ + uint64_t tcp:1; /* TCP */ + uint64_t tcpopt:1; /* TCP options present */ + uint64_t sctp:1; /* SCTP */ + uint64_t icmp:1; /* ICMP */ + + uint64_t color:2; /* Packet color for traffic mgmt */ + uint64_t nodrop:1; /* Drop eligibility status */ + + uint64_t l3_chksum_done:1; /* L3 checksum validation done */ + uint64_t l4_chksum_done:1; /* L4 checksum validation done */ + uint64_t ipsec_udp:1; /* UDP-encapsulated IPsec packet */ }; } _odp_packet_input_flags_t; +/** @endcond */ + #ifdef __cplusplus } #endif From patchwork Mon Jan 15 13:00:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 124523 Delivered-To: patch@linaro.org Received: by 10.46.64.148 with SMTP id r20csp662344lje; Mon, 15 Jan 2018 05:06:49 -0800 (PST) X-Google-Smtp-Source: ACJfBovbHbnWQGV7F6ktbKG3l3FkL+mEW5u6CpJcWef5WMNixVwcysv1TY9UQDZ9qg1KtSbrdmfV X-Received: by 10.237.41.225 with SMTP id o88mr10563079qtd.184.1516021609454; Mon, 15 Jan 2018 05:06:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516021609; cv=none; d=google.com; s=arc-20160816; b=pslg5vuTAyP2d/pRNWXqn4ZEcmobLcxUZiZFW6KIUq3ldE7g2+MeOHjrVW0uBS13hq i8G11+iPyP+AOA8OohaIcUAj152aOyRjSTTzOOWFIdKfilqkb3VmW3Gg3K0HX4p/taO7 BaPLn5VhT8MkoHpO9Gls1oyFfm9Os19n/Ou8ElNakZAWlQxH6zZVKxRo9uErM8eTA86n u3WOemOEoAFfLnOR12K+Sz86k11jyWJkOsqp+K1zX6veaC97t51M0EeBHaTfUt8Z8H3t FGABwDRgneyAKGnjkFkiAHaBAOgcPGP0jwSXPgCR5CBdYbJcejWLEs2Hg7u2YaxgdXip ZZQQ== 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=djv6ZbtQef88dQUebycgcjQdWE4P7YBrTuKEGZT5VZw=; b=TQe7dEGkFapu+jrAvIPmpJQm2KeTFo1TE7sCIQQ+YeObquI2GWocP5aI9Vayjdlwaj N8nSACVxHFH01vTjQ6/eZJNWUyLRAQ+dKxIhj0nOUx8v4kGQ5RqlUz1Cxf4S1wNh7D8Q 5e2z32t5CXXX+JrJSKWfFsPwxvpX+GZm6krFa1hzVrjU2g9Ii/3FZZKZgzPaz4lenn9L 8XA83IEpycLXysaagp6amtKsQ4Hg6iSAkHD0XTpWHOnUkgONUKTL8WjLXudQfPELUpLw i3kNJcJZftJ4kzs6DOJ4Ged+9hdHRAVgmECk7ORouRTQzy9zqBNC/5kpZwcJS3iDLsX/ uDTg== 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 q1si657276qti.54.2018.01.15.05.06.49; Mon, 15 Jan 2018 05:06:49 -0800 (PST) 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 1998761745; Mon, 15 Jan 2018 13:06:49 +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, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL 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 529146176B; Mon, 15 Jan 2018 13:04:04 +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 BC102617B6; Mon, 15 Jan 2018 13:03:47 +0000 (UTC) Received: from forward105j.mail.yandex.net (forward105j.mail.yandex.net [5.45.198.248]) by lists.linaro.org (Postfix) with ESMTPS id 7011660956 for ; Mon, 15 Jan 2018 13:00:14 +0000 (UTC) Received: from mxback19j.mail.yandex.net (mxback19j.mail.yandex.net [IPv6:2a02:6b8:0:1619::95]) by forward105j.mail.yandex.net (Yandex) with ESMTP id 3FB39181798 for ; Mon, 15 Jan 2018 16:00:13 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback19j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id zlYlCvf6YH-0Dsm0NXu; Mon, 15 Jan 2018 16:00:13 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id Bnqb3pkuSH-0C1GEjFW; Mon, 15 Jan 2018 16: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: Mon, 15 Jan 2018 16:00:06 +0300 Message-Id: <1516021209-8997-4-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> References: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 388 Subject: [lng-odp] [PATCH API-NEXT v2 3/6] linux-gen: packet: clean up error and output flags 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 Removed three unused error flags. Combined error and output flags into a single uint32_t. This saves four bytes and init of those bytes. There's still room for 12 flags in this word. Later on, these and input flags could be also combined. Moved the combined flag structure to packet types header, so that it can be accessed from inlined packet code. Signed-off-by: Petri Savolainen --- /** Email created from pull request 388 (psavol:next-user-ptr-init) ** https://github.com/Linaro/odp/pull/388 ** Patch: https://github.com/Linaro/odp/pull/388.patch ** Base sha: 6303c7d0e98fafe0f14c8c4dd9989b3b7633ebf4 ** Merge commit sha: 76bd874ba5677533132a4c0a39c8e5cf9049a9af **/ .../include/odp/api/plat/packet_types.h | 41 ++++++++++++++++ .../linux-generic/include/odp_packet_internal.h | 57 +++------------------- platform/linux-generic/odp_classification.c | 2 +- platform/linux-generic/odp_crypto.c | 2 +- platform/linux-generic/odp_ipsec.c | 4 +- platform/linux-generic/odp_packet.c | 40 +++++++-------- platform/linux-generic/odp_packet_flags.c | 14 +++--- platform/linux-generic/pktio/dpdk.c | 24 ++++----- 8 files changed, 87 insertions(+), 97 deletions(-) diff --git a/platform/linux-generic/include/odp/api/plat/packet_types.h b/platform/linux-generic/include/odp/api/plat/packet_types.h index 1531b32b0..14810e585 100644 --- a/platform/linux-generic/include/odp/api/plat/packet_types.h +++ b/platform/linux-generic/include/odp/api/plat/packet_types.h @@ -148,6 +148,47 @@ typedef union { } _odp_packet_input_flags_t; +/* + * Additional packet flags + */ +typedef union { + /* All flags */ + uint32_t all_flags; + + struct { + uint32_t reserved1: 12; + + /* + * Packet output flags + */ + uint32_t l3_chksum_set: 1; /* L3 chksum bit is valid */ + uint32_t l3_chksum: 1; /* L3 chksum override */ + uint32_t l4_chksum_set: 1; /* L4 chksum bit is valid */ + uint32_t l4_chksum: 1; /* L4 chksum override */ + uint32_t shaper_len_adj: 8; /* Adjustment for traffic mgr */ + + /* + * Error flags + */ + uint32_t snap_len_err: 1; /* Snap length error */ + uint32_t ip_err: 1; /* IP error */ + uint32_t l3_chksum_err: 1; /* L3 checksum error */ + uint32_t tcp_err: 1; /* TCP error */ + uint32_t udp_err: 1; /* UDP error */ + uint32_t l4_chksum_err: 1; /* L4 checksum error */ + uint32_t ipsec_err: 1; /* IPsec error */ + uint32_t crypto_err: 1; /* Crypto packet operation error */ + }; + + /* Flag groups */ + struct { + uint32_t reserved2: 12; + uint32_t other: 12; /* All other flags */ + uint32_t error: 8; /* All error flags */ + } all; + +} _odp_packet_flags_t; + /** @endcond */ #ifdef __cplusplus diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h index 346c2dc6f..a5304373d 100644 --- a/platform/linux-generic/include/odp_packet_internal.h +++ b/platform/linux-generic/include/odp_packet_internal.h @@ -32,65 +32,21 @@ extern "C" { /** Minimum segment length expected by packet_parse_common() */ #define PACKET_PARSE_SEG_LEN 96 - ODP_STATIC_ASSERT(sizeof(_odp_packet_input_flags_t) == sizeof(uint64_t), "INPUT_FLAGS_SIZE_ERROR"); -/** - * Packet error flags - */ -typedef union { - /* All error flags */ - uint32_t all; - - struct { - /* Bitfield flags for each detected error */ - uint32_t app_error:1; /**< Error bit for application use */ - uint32_t frame_len:1; /**< Frame length error */ - uint32_t snap_len:1; /**< Snap length error */ - uint32_t l2_chksum:1; /**< L2 checksum error, checks TBD */ - uint32_t ip_err:1; /**< IP error, checks TBD */ - uint32_t l3_chksum:1; /**< L3 checksum error */ - uint32_t tcp_err:1; /**< TCP error, checks TBD */ - uint32_t udp_err:1; /**< UDP error, checks TBD */ - uint32_t l4_chksum:1; /**< L4 checksum error */ - uint32_t ipsec_err:1; /**< IPsec error */ - uint32_t crypto_err:1; /**< Crypto packet operation error */ - }; -} error_flags_t; - -ODP_STATIC_ASSERT(sizeof(error_flags_t) == sizeof(uint32_t), +ODP_STATIC_ASSERT(sizeof(_odp_packet_flags_t) == sizeof(uint32_t), "ERROR_FLAGS_SIZE_ERROR"); -/** - * Packet output flags - */ -typedef union { - /* All output flags */ - uint32_t all; - - struct { - /** adjustment for traffic mgr */ - uint32_t shaper_len_adj:8; - - /* Bitfield flags for each output option */ - uint32_t l3_chksum_set:1; /**< L3 chksum bit is valid */ - uint32_t l3_chksum:1; /**< L3 chksum override */ - uint32_t l4_chksum_set:1; /**< L3 chksum bit is valid */ - uint32_t l4_chksum:1; /**< L4 chksum override */ - }; -} output_flags_t; - -ODP_STATIC_ASSERT(sizeof(output_flags_t) == sizeof(uint32_t), - "OUTPUT_FLAGS_SIZE_ERROR"); - /** * Packet parser metadata */ typedef struct { + /* Packet input flags */ _odp_packet_input_flags_t input_flags; - error_flags_t error_flags; - output_flags_t output_flags; + + /* Other flags */ + _odp_packet_flags_t flags; /* offset to L2 hdr, e.g. Eth */ uint16_t l2_offset; @@ -231,8 +187,7 @@ static inline void packet_init(odp_packet_hdr_t *pkt_hdr, uint32_t len) } pkt_hdr->p.input_flags.all = 0; - pkt_hdr->p.output_flags.all = 0; - pkt_hdr->p.error_flags.all = 0; + pkt_hdr->p.flags.all_flags = 0; pkt_hdr->p.l2_offset = 0; pkt_hdr->p.l3_offset = ODP_PACKET_OFFSET_INVALID; diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index 276430923..ade1a29a4 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -923,7 +923,7 @@ static inline cos_t *cls_select_cos(pktio_entry_t *entry, default_cos = cls->default_cos; /* Return error cos for error packet */ - if (pkt_hdr->p.error_flags.all) + if (pkt_hdr->p.flags.all.error) return cls->error_cos; /* Calls all the PMRs attached at the PKTIO level*/ for (i = 0; i < odp_atomic_load_u32(&default_cos->s.num_rule); i++) { diff --git a/platform/linux-generic/odp_crypto.c b/platform/linux-generic/odp_crypto.c index 2038aa46b..e6975a602 100644 --- a/platform/linux-generic/odp_crypto.c +++ b/platform/linux-generic/odp_crypto.c @@ -1364,7 +1364,7 @@ int odp_crypto_int(odp_packet_t pkt_in, (rc_auth == ODP_CRYPTO_ALG_ERR_NONE); pkt_hdr = odp_packet_hdr(out_pkt); - pkt_hdr->p.error_flags.crypto_err = !op_result->ok; + pkt_hdr->p.flags.crypto_err = !op_result->ok; /* Synchronous, simply return results */ *pkt_out = out_pkt; diff --git a/platform/linux-generic/odp_ipsec.c b/platform/linux-generic/odp_ipsec.c index b023d308d..abade913f 100644 --- a/platform/linux-generic/odp_ipsec.c +++ b/platform/linux-generic/odp_ipsec.c @@ -828,7 +828,7 @@ static ipsec_sa_t *ipsec_in_single(odp_packet_t pkt, err: pkt_hdr = odp_packet_hdr(pkt); - pkt_hdr->p.error_flags.ipsec_err = 1; + pkt_hdr->p.flags.ipsec_err = 1; *pkt_out = pkt; @@ -1404,7 +1404,7 @@ static ipsec_sa_t *ipsec_out_single(odp_packet_t pkt, err: pkt_hdr = odp_packet_hdr(pkt); - pkt_hdr->p.error_flags.ipsec_err = 1; + pkt_hdr->p.flags.ipsec_err = 1; *pkt_out = pkt; return ipsec_sa; diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index 2a977f064..ada5dca47 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -338,9 +338,8 @@ void *_odp_packet_map(void *pkt_ptr, uint32_t offset, uint32_t *seg_len, void packet_parse_reset(odp_packet_hdr_t *pkt_hdr) { /* Reset parser metadata before new parse */ - pkt_hdr->p.error_flags.all = 0; pkt_hdr->p.input_flags.all = 0; - pkt_hdr->p.output_flags.all = 0; + pkt_hdr->p.flags.all.error = 0; pkt_hdr->p.l2_offset = ODP_PACKET_OFFSET_INVALID; pkt_hdr->p.l3_offset = ODP_PACKET_OFFSET_INVALID; pkt_hdr->p.l4_offset = ODP_PACKET_OFFSET_INVALID; @@ -1309,16 +1308,16 @@ void odp_packet_l3_chksum_insert(odp_packet_t pkt, int insert) { odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt); - pkt_hdr->p.output_flags.l3_chksum_set = 1; - pkt_hdr->p.output_flags.l3_chksum = insert; + pkt_hdr->p.flags.l3_chksum_set = 1; + pkt_hdr->p.flags.l3_chksum = insert; } void odp_packet_l4_chksum_insert(odp_packet_t pkt, int insert) { odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt); - pkt_hdr->p.output_flags.l4_chksum_set = 1; - pkt_hdr->p.output_flags.l4_chksum = insert; + pkt_hdr->p.flags.l4_chksum_set = 1; + pkt_hdr->p.flags.l4_chksum = insert; } odp_packet_chksum_status_t odp_packet_l3_chksum_status(odp_packet_t pkt) @@ -1328,7 +1327,7 @@ odp_packet_chksum_status_t odp_packet_l3_chksum_status(odp_packet_t pkt) if (!pkt_hdr->p.input_flags.l3_chksum_done) return ODP_PACKET_CHKSUM_UNKNOWN; - if (pkt_hdr->p.error_flags.l3_chksum) + if (pkt_hdr->p.flags.l3_chksum_err) return ODP_PACKET_CHKSUM_BAD; return ODP_PACKET_CHKSUM_OK; @@ -1341,7 +1340,7 @@ odp_packet_chksum_status_t odp_packet_l4_chksum_status(odp_packet_t pkt) if (!pkt_hdr->p.input_flags.l4_chksum_done) return ODP_PACKET_CHKSUM_UNKNOWN; - if (pkt_hdr->p.error_flags.l4_chksum) + if (pkt_hdr->p.flags.l4_chksum_err) return ODP_PACKET_CHKSUM_BAD; return ODP_PACKET_CHKSUM_OK; @@ -1783,11 +1782,8 @@ void odp_packet_print(odp_packet_t pkt) len += odp_buffer_snprint(&str[len], n - len, buf); len += snprintf(&str[len], n - len, " input_flags 0x%" PRIx64 "\n", hdr->p.input_flags.all); - len += snprintf(&str[len], n - len, " error_flags 0x%" PRIx32 "\n", - hdr->p.error_flags.all); - len += snprintf(&str[len], n - len, - " output_flags 0x%" PRIx32 "\n", - hdr->p.output_flags.all); + len += snprintf(&str[len], n - len, " flags 0x%" PRIx32 "\n", + hdr->p.flags.all_flags); len += snprintf(&str[len], n - len, " l2_offset %" PRIu32 "\n", hdr->p.l2_offset); len += snprintf(&str[len], n - len, @@ -1989,7 +1985,7 @@ static inline uint16_t parse_eth(packet_parser_t *prs, const uint8_t **parseptr, if (ethtype < _ODP_ETH_LEN_MAX) { prs->input_flags.snap = 1; if (ethtype > frame_len - *offset) { - prs->error_flags.snap_len = 1; + prs->flags.snap_len_err = 1; return 0; } ethtype = odp_be_to_cpu_16(*((const uint16_t *)(uintptr_t) @@ -2036,7 +2032,7 @@ static inline uint8_t parse_ipv4(packet_parser_t *prs, const uint8_t **parseptr, if (odp_unlikely(ihl < _ODP_IPV4HDR_IHL_MIN) || odp_unlikely(ver != 4) || (l3_len > frame_len - *offset)) { - prs->error_flags.ip_err = 1; + prs->flags.ip_err = 1; return 0; } @@ -2078,7 +2074,7 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, /* Basic sanity checks on IPv6 header */ if ((odp_be_to_cpu_32(ipv6->ver_tc_flow) >> 28) != 6 || l3_len > frame_len - *offset) { - prs->error_flags.ip_err = 1; + prs->flags.ip_err = 1; return 0; } @@ -2107,7 +2103,7 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, if (*offset >= prs->l3_offset + odp_be_to_cpu_16(ipv6->payload_len)) { - prs->error_flags.ip_err = 1; + prs->flags.ip_err = 1; return 0; } @@ -2134,7 +2130,7 @@ static inline void parse_tcp(packet_parser_t *prs, const _odp_tcphdr_t *tcp = (const _odp_tcphdr_t *)*parseptr; if (tcp->hl < sizeof(_odp_tcphdr_t) / sizeof(uint32_t)) - prs->error_flags.tcp_err = 1; + prs->flags.tcp_err = 1; else if ((uint32_t)tcp->hl * 4 > sizeof(_odp_tcphdr_t)) prs->input_flags.tcpopt = 1; @@ -2153,7 +2149,7 @@ static inline void parse_udp(packet_parser_t *prs, uint32_t udplen = odp_be_to_cpu_16(udp->length); if (odp_unlikely(udplen < sizeof(_odp_udphdr_t))) - prs->error_flags.udp_err = 1; + prs->flags.udp_err = 1; if (odp_cpu_to_be_16(_ODP_UDP_IPSEC_PORT) == udp->dst_port && udplen > 4) { @@ -2182,7 +2178,7 @@ int packet_parse_common_l3_l4(packet_parser_t *prs, const uint8_t *parseptr, prs->l3_offset = offset; if (layer <= ODP_PROTO_LAYER_L2) - return prs->error_flags.all != 0; + return prs->flags.all.error != 0; /* Set l3 flag only for known ethtypes */ prs->input_flags.l3 = 1; @@ -2213,7 +2209,7 @@ int packet_parse_common_l3_l4(packet_parser_t *prs, const uint8_t *parseptr, } if (layer == ODP_PROTO_LAYER_L3) - return prs->error_flags.all != 0; + return prs->flags.all.error != 0; /* Set l4 flag only for known ip_proto */ prs->input_flags.l4 = 1; @@ -2264,7 +2260,7 @@ int packet_parse_common_l3_l4(packet_parser_t *prs, const uint8_t *parseptr, break; } - return prs->error_flags.all != 0; + return prs->flags.all.error != 0; } /** diff --git a/platform/linux-generic/odp_packet_flags.c b/platform/linux-generic/odp_packet_flags.c index 2e26ad601..bda85a8c6 100644 --- a/platform/linux-generic/odp_packet_flags.c +++ b/platform/linux-generic/odp_packet_flags.c @@ -24,7 +24,7 @@ int odp_packet_has_error(odp_packet_t pkt) { odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); - return pkt_hdr->p.error_flags.all != 0; + return pkt_hdr->p.flags.all.error != 0; } /* Get Input Flags */ @@ -34,9 +34,7 @@ int odp_packet_has_l2_error(odp_packet_t pkt) odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); /* L2 parsing is always done by default and hence no additional check is required */ - return pkt_hdr->p.error_flags.frame_len - | pkt_hdr->p.error_flags.snap_len - | pkt_hdr->p.error_flags.l2_chksum; + return pkt_hdr->p.flags.snap_len_err; } int odp_packet_has_l3(odp_packet_t pkt) @@ -48,7 +46,7 @@ int odp_packet_has_l3_error(odp_packet_t pkt) { odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); - return pkt_hdr->p.error_flags.ip_err; + return pkt_hdr->p.flags.ip_err; } int odp_packet_has_l4(odp_packet_t pkt) @@ -60,7 +58,7 @@ int odp_packet_has_l4_error(odp_packet_t pkt) { odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); - return pkt_hdr->p.error_flags.tcp_err | pkt_hdr->p.error_flags.udp_err; + return pkt_hdr->p.flags.tcp_err | pkt_hdr->p.flags.udp_err; } int odp_packet_has_eth_bcast(odp_packet_t pkt) @@ -169,14 +167,14 @@ void odp_packet_drop_eligible_set(odp_packet_t pkt, odp_bool_t drop) int8_t odp_packet_shaper_len_adjust(odp_packet_t pkt) { - retflag(pkt, output_flags.shaper_len_adj); + retflag(pkt, flags.shaper_len_adj); } void odp_packet_shaper_len_adjust_set(odp_packet_t pkt, int8_t adj) { odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); - pkt_hdr->p.output_flags.shaper_len_adj = adj; + pkt_hdr->p.flags.shaper_len_adj = adj; } /* Set Input Flags */ diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index 54fd0bdef..177c9ec01 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -380,8 +380,8 @@ static inline int pkt_set_ol_rx(odp_pktin_config_opt_t *pktin_cfg, return -1; pkt_hdr->p.input_flags.l3_chksum_done = 1; - pkt_hdr->p.error_flags.ip_err = 1; - pkt_hdr->p.error_flags.l3_chksum = 1; + pkt_hdr->p.flags.ip_err = 1; + pkt_hdr->p.flags.l3_chksum_err = 1; } } @@ -396,8 +396,8 @@ static inline int pkt_set_ol_rx(odp_pktin_config_opt_t *pktin_cfg, return -1; pkt_hdr->p.input_flags.l4_chksum_done = 1; - pkt_hdr->p.error_flags.udp_err = 1; - pkt_hdr->p.error_flags.l4_chksum = 1; + pkt_hdr->p.flags.udp_err = 1; + pkt_hdr->p.flags.l4_chksum_err = 1; } } else if (pktin_cfg->bit.tcp_chksum && HAS_L4_PROTO(mbuf, RTE_PTYPE_L4_TCP)) { @@ -410,8 +410,8 @@ static inline int pkt_set_ol_rx(odp_pktin_config_opt_t *pktin_cfg, return -1; pkt_hdr->p.input_flags.l4_chksum_done = 1; - pkt_hdr->p.error_flags.tcp_err = 1; - pkt_hdr->p.error_flags.l4_chksum = 1; + pkt_hdr->p.flags.tcp_err = 1; + pkt_hdr->p.flags.l4_chksum_err = 1; } } @@ -572,18 +572,18 @@ static inline void pkt_set_ol_tx(odp_pktout_config_opt_t *pktout_cfg, ipv4_chksum_pkt = OL_TX_CHKSUM_PKT(pktout_cfg->bit.ipv4_chksum, pktout_capa->bit.ipv4_chksum, l3_proto_v4, - pkt_p->output_flags.l3_chksum_set, - pkt_p->output_flags.l3_chksum); + pkt_p->flags.l3_chksum_set, + pkt_p->flags.l3_chksum); udp_chksum_pkt = OL_TX_CHKSUM_PKT(pktout_cfg->bit.udp_chksum, pktout_capa->bit.udp_chksum, (l4_proto == _ODP_IPPROTO_UDP), - pkt_p->output_flags.l4_chksum_set, - pkt_p->output_flags.l4_chksum); + pkt_p->flags.l4_chksum_set, + pkt_p->flags.l4_chksum); tcp_chksum_pkt = OL_TX_CHKSUM_PKT(pktout_cfg->bit.tcp_chksum, pktout_capa->bit.tcp_chksum, (l4_proto == _ODP_IPPROTO_TCP), - pkt_p->output_flags.l4_chksum_set, - pkt_p->output_flags.l4_chksum); + pkt_p->flags.l4_chksum_set, + pkt_p->flags.l4_chksum); if (!ipv4_chksum_pkt && !udp_chksum_pkt && !tcp_chksum_pkt) return; From patchwork Mon Jan 15 13:00:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 124519 Delivered-To: patch@linaro.org Received: by 10.46.64.148 with SMTP id r20csp662072lje; Mon, 15 Jan 2018 05:05:59 -0800 (PST) X-Google-Smtp-Source: ACJfBotYExgZwUAkVxDOQUd/5+io5stw7GufVIRi+DD2xecNLWRKthTEV0gONqp4PmBHqvFe4MMB X-Received: by 10.237.52.162 with SMTP id x31mr7570087qtd.6.1516021559578; Mon, 15 Jan 2018 05:05:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516021559; cv=none; d=google.com; s=arc-20160816; b=w7rOM80TL+0d2E4IBChbfTAGQ2YXCulLcuc0Pb7zUZXtpu1QnRl0cvMYslUecto/E+ PqGvOk6i/LSFEnLGjv8KZtyiAWxy+ZiImCz0S0PaFiFyNzB6OHI+1SwiymbPYp/HRTzk k21BpbwjIMH8n48M7W25f1JZLGqqgQc6cXmkRBrFwMUD7uaaVbZoMUGKw2vhSICG3j7z rP2ghtrTsiiADyavsbYSRHDfgRUx99qn2HYXXHG7hH6yrVGDakS1wytWWkMZjhD33yAD hag3tbiCxHmZyHNfZfH0BwWZDFyOM2krMmG4VGmSp7ftZsrOGT/qf7G+EUTfZ6HVZxT4 lOZw== 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=qbcPNmYnbvxa6aJaNeNSXAblgIyPbeEcLPqIu9LYty8=; b=sBx6UUaMKMJ3yMzOFk/rKMkdqIrMFiTaFzlpEApF90/kKqlB9qbJMPpQ35gAxf8vdZ H9dW226WN3i89/Rxzs/kqZfPn6fAT4pSiIFEJBa1txDlaaBACvwzKcjignNP4L/O8i3O rS6pMf0PXVRp2uAGTE0bTMKdvCdXNcFwE40sj4RegklnkIPz45h+sE/6n9XER7YbxvPc 9tUjaMTV7XAq4+VHik9VgVGFbLaflTRM86y6ibUAnwQS3dw+NMGSCAF7M/gov3h/dR4x M06qfnXKTSufwRqij3rcdGsGac3FCH2E+CGjJRzx9nUvFxUW+oyYdT/jlEev1FZHEH5F sn7Q== 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 m42si3511326qtf.9.2018.01.15.05.05.59; Mon, 15 Jan 2018 05:05:59 -0800 (PST) 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 384FA617AD; Mon, 15 Jan 2018 13:05:59 +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, RCVD_IN_MSPIKE_H2 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 0BDE060956; Mon, 15 Jan 2018 13:03:56 +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 679C2617B9; Mon, 15 Jan 2018 13:03:47 +0000 (UTC) Received: from forward100p.mail.yandex.net (forward100p.mail.yandex.net [77.88.28.100]) by lists.linaro.org (Postfix) with ESMTPS id 0A2F16152C for ; Mon, 15 Jan 2018 13:00:15 +0000 (UTC) Received: from mxback8g.mail.yandex.net (mxback8g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:169]) by forward100p.mail.yandex.net (Yandex) with ESMTP id BF88751018BD for ; Mon, 15 Jan 2018 16:00:13 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback8g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id iGpuSJV8Dl-0Dta8vB3; Mon, 15 Jan 2018 16:00:13 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id Bnqb3pkuSH-0D1q8rpJ; Mon, 15 Jan 2018 16:00:13 +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: Mon, 15 Jan 2018 16:00:07 +0300 Message-Id: <1516021209-8997-5-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> References: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 388 Subject: [lng-odp] [PATCH API-NEXT v2 4/6] api: packet: initialize user ptr to NULL 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 Require that implementation initializes the pointer value to NULL. Application can use the pointer more robustly when it can tell if the pointer has been set previously or not. Signed-off-by: Petri Savolainen --- /** Email created from pull request 388 (psavol:next-user-ptr-init) ** https://github.com/Linaro/odp/pull/388 ** Patch: https://github.com/Linaro/odp/pull/388.patch ** Base sha: 6303c7d0e98fafe0f14c8c4dd9989b3b7633ebf4 ** Merge commit sha: 76bd874ba5677533132a4c0a39c8e5cf9049a9af **/ include/odp/api/spec/packet.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/include/odp/api/spec/packet.h b/include/odp/api/spec/packet.h index 3655f5899..8aca552f6 100644 --- a/include/odp/api/spec/packet.h +++ b/include/odp/api/spec/packet.h @@ -1341,7 +1341,10 @@ int odp_packet_input_index(odp_packet_t pkt); /** * User context pointer * - * Return previously stored user context pointer. + * Return previously stored user context pointer. If not otherwise documented, + * the pointer value is maintained over packet manipulating operations. + * Implementation initializes the pointer value to NULL during new packet + * creation (e.g. alloc and packet input) and reset. * * @param pkt Packet handle * @@ -1357,10 +1360,10 @@ void *odp_packet_user_ptr(odp_packet_t pkt); * value of type intptr_t. ODP may use the pointer for data prefetching, but * must ignore any invalid addresses. * - * @param pkt Packet handle - * @param ctx User context pointer + * @param pkt Packet handle + * @param user_ptr User context pointer */ -void odp_packet_user_ptr_set(odp_packet_t pkt, const void *ctx); +void odp_packet_user_ptr_set(odp_packet_t pkt, const void *user_ptr); /** * User area address From patchwork Mon Jan 15 13:00:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 124526 Delivered-To: patch@linaro.org Received: by 10.46.64.148 with SMTP id r20csp663818lje; Mon, 15 Jan 2018 05:11:12 -0800 (PST) X-Google-Smtp-Source: ACJfBovnX9HgUpYeDneBwwQN9tXwzSqTuCOWe2WsU9tpFztxGlDyYIQPnbQJx11qbf//4iufGf2T X-Received: by 10.55.97.196 with SMTP id v187mr17749202qkb.332.1516021871875; Mon, 15 Jan 2018 05:11:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516021871; cv=none; d=google.com; s=arc-20160816; b=bxHfCOaHC/KP0ZoyAL7u3DMyg+AYWMMy7eTS5apR1vuL8s1wUsORYJSFUAJe0bKSz9 MrquMxf29rSmKV0L7K4iJ/X7eB/lxVPLNF8XTxQr72ufIIBYf8ojUdnWxiWP5TcGhPJo D7Q+ad6dWtBU9yAuXKiMOZD44eZjhkC2uM9hB2c/uxXl+XfYrkUfnRtm8UrUKfhKS0H8 iJnpjelQm2YkJUCXeErJmLY+rx9FWtRZVJ5wBJaXlLh+LFmEIrhyUWSh8IzIDG6UUgvr cRgZugGHJTh7wGbyCZGNZqwY7ruCJT+Y96suek881LHF3qsjPLJ+UxIzcYm+FuTF+liN mO4w== 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=GRYYL7/KqGdoURvMt+OPZomK4QEJG0+NI7WYg95fmao=; b=YtmFSk+SjHKhmhothjGTprlXxohGo1Mpym1tIweaIiwhUzudOZwbVI1l2x2Kkgkvvs gLI41rkUABU1VBaSYx2rcm6aVFYNpl3DoDfmx97vmEHQo9ygDcGWUgwOhF+FgXq1l9YT UerPhBQeUgxyPjuQmo6aZYlR1x15YMGqWSHqTN/aECSQsyw9izfTeJfaRdIvoxX8mI1P 2PfcFurLldf4YnzRWTCoL9K+wEv42KQVkZCGZfiihAps7plq6KP6FJef4o07CfqX5AbP d2/hSaIT8Pq8/2fviL5Gg8UsE7VmT/aXL61qcN/HkCJxtBC0DK7xUnCdwl16IT9TKfxL T9zQ== 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 a129si802195qke.348.2018.01.15.05.11.11; Mon, 15 Jan 2018 05:11:11 -0800 (PST) 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 723FB617B8; Mon, 15 Jan 2018 13:11:11 +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, RCVD_IN_MSPIKE_H2 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 D060D6177F; Mon, 15 Jan 2018 13:04:27 +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 CB55E60881; Mon, 15 Jan 2018 13:03:55 +0000 (UTC) Received: from forward105o.mail.yandex.net (forward105o.mail.yandex.net [37.140.190.183]) by lists.linaro.org (Postfix) with ESMTPS id 1F56C61745 for ; Mon, 15 Jan 2018 13:00:16 +0000 (UTC) Received: from mxback2o.mail.yandex.net (mxback2o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::1c]) by forward105o.mail.yandex.net (Yandex) with ESMTP id 625314442FDA for ; Mon, 15 Jan 2018 16:00:14 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback2o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id lZ5j8cjukv-0E6K6TWD; Mon, 15 Jan 2018 16:00:14 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id Bnqb3pkuSH-0D1GW1ko; Mon, 15 Jan 2018 16:00:13 +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: Mon, 15 Jan 2018 16:00:08 +0300 Message-Id: <1516021209-8997-6-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> References: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 388 Subject: [lng-odp] [PATCH API-NEXT v2 5/6] linux-gen: packet: initialize user ptr to NULL 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 Use a flag to record if user pointer has been set. This avoids resetting the pointer in every alloc. Signed-off-by: Petri Savolainen --- /** Email created from pull request 388 (psavol:next-user-ptr-init) ** https://github.com/Linaro/odp/pull/388 ** Patch: https://github.com/Linaro/odp/pull/388.patch ** Base sha: 6303c7d0e98fafe0f14c8c4dd9989b3b7633ebf4 ** Merge commit sha: 76bd874ba5677533132a4c0a39c8e5cf9049a9af **/ .../linux-generic/include/odp/api/plat/packet_inlines.h | 7 +++++++ platform/linux-generic/include/odp/api/plat/packet_types.h | 12 +++++++++--- platform/linux-generic/odp_packet.c | 13 +++++++++++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/platform/linux-generic/include/odp/api/plat/packet_inlines.h b/platform/linux-generic/include/odp/api/plat/packet_inlines.h index b00b9c923..64c12377b 100644 --- a/platform/linux-generic/include/odp/api/plat/packet_inlines.h +++ b/platform/linux-generic/include/odp/api/plat/packet_inlines.h @@ -98,6 +98,13 @@ static inline int _odp_packet_num_segs(odp_packet_t pkt) /** @internal Inline function @param pkt @return */ static inline void *_odp_packet_user_ptr(odp_packet_t pkt) { + _odp_packet_flags_t flags; + + flags.all_flags = _odp_pkt_get(pkt, uint32_t, flags); + + if (flags.user_ptr_set == 0) + return NULL; + return _odp_pkt_get(pkt, void *, user_ptr); } diff --git a/platform/linux-generic/include/odp/api/plat/packet_types.h b/platform/linux-generic/include/odp/api/plat/packet_types.h index 14810e585..6691b04ae 100644 --- a/platform/linux-generic/include/odp/api/plat/packet_types.h +++ b/platform/linux-generic/include/odp/api/plat/packet_types.h @@ -91,6 +91,7 @@ typedef struct _odp_packet_inline_offset_t { uint16_t flow_hash; uint16_t timestamp; uint16_t input_flags; + uint16_t flags; } _odp_packet_inline_offset_t; @@ -156,7 +157,12 @@ typedef union { uint32_t all_flags; struct { - uint32_t reserved1: 12; + uint32_t reserved1: 11; + + /* + * Init flags + */ + uint32_t user_ptr_set: 1; /* User has set a non-NULL value */ /* * Packet output flags @@ -182,8 +188,8 @@ typedef union { /* Flag groups */ struct { - uint32_t reserved2: 12; - uint32_t other: 12; /* All other flags */ + uint32_t reserved2: 11; + uint32_t other: 13; /* All other flags */ uint32_t error: 8; /* All error flags */ } all; diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index ada5dca47..ca6a0f4d2 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -42,7 +42,8 @@ const _odp_packet_inline_offset_t _odp_packet_inline ODP_ALIGNED_CACHE = { .l4_offset = offsetof(odp_packet_hdr_t, p.l4_offset), .flow_hash = offsetof(odp_packet_hdr_t, flow_hash), .timestamp = offsetof(odp_packet_hdr_t, timestamp), - .input_flags = offsetof(odp_packet_hdr_t, p.input_flags) + .input_flags = offsetof(odp_packet_hdr_t, p.input_flags), + .flags = offsetof(odp_packet_hdr_t, p.flags) }; @@ -1259,7 +1260,15 @@ int odp_packet_input_index(odp_packet_t pkt) void odp_packet_user_ptr_set(odp_packet_t pkt, const void *ptr) { - packet_hdr(pkt)->buf_hdr.user_ptr = ptr; + odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt); + + if (odp_unlikely(ptr == NULL)) { + pkt_hdr->p.flags.user_ptr_set = 0; + return; + } + + pkt_hdr->buf_hdr.user_ptr = ptr; + pkt_hdr->p.flags.user_ptr_set = 1; } int odp_packet_l2_offset_set(odp_packet_t pkt, uint32_t offset) From patchwork Mon Jan 15 13:00:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 124525 Delivered-To: patch@linaro.org Received: by 10.46.64.148 with SMTP id r20csp663180lje; Mon, 15 Jan 2018 05:09:34 -0800 (PST) X-Google-Smtp-Source: ACJfBotaTxx7KuACqLFVJlZnb8AP2XdTedIrNkhmFGEq/1pRKHjIDIOD8ElHstJMg2gmObkhgZMT X-Received: by 10.55.99.143 with SMTP id x137mr22721039qkb.90.1516021774341; Mon, 15 Jan 2018 05:09:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516021774; cv=none; d=google.com; s=arc-20160816; b=vJ7FPjIJ+rUIRf/gdFYVR1ba9jv22l+ff9cWhI2Q+rdGWbVkCqc/blh/su1NcrYfAY tczYgZUvrjq/FmuzhFwE+VDupSbvRigRV1DmEoUOmiLhonRH3AhEnvFqJGRzn0WKYh31 dQl8ix1qEPyOqvG+P8TE8phfNXtSBa91YqOBvsq0nrUvDW8Uvh2+RH36vCcCtb2RBr/4 eJ6cWplabSDdBbnbaDbkDCVttnaAFWedr4spqLSXfw+QMRhEv2JOVFiAWVWAsvShPnWQ HgSvm0n7RMsFp1JhzZ5aMRACV/fzRdOji2opfn/N8Nax3eVpDU5OIYPIn3wzyFOwcA5k Zu0A== 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=VzJ0vHpWCibZlY+Jjx8X9M8rM/m47NMHSWj/h2iVYJo=; b=Q5ULRTYHXefmt1yy4OOts726Cv4xWm/35ofnDLkJ5lKGo0TWbpnIxVAk7nO5dXx1oe 8BGgh681PbrTfg9LGqMAHnUVvmEYyuh8nJV4+HCb/dhwh4cCvmBD5QiIJSJwU21fxyVv F+PV4/S98uiwLEcvZwnQvtycSFb5IdMeaeISd4Ut2B7MWA99GEAATbqdSKLcnF36bgIB foqe6gEKgcIOHaA+FrwzbbdKhBg5nyGHqkf0bDycVTKvvBozHbUzi81XOEozPS5SzQU3 SwxmvjsNq94xHDuXB4xfM/pj3BY9GAPBZCsAfMyrJxeHvR6rahflPvWnrKHIvLP4tMJH hm+w== 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 v89si3933657qte.236.2018.01.15.05.09.34; Mon, 15 Jan 2018 05:09:34 -0800 (PST) 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 01C42617B7; Mon, 15 Jan 2018 13:09:33 +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, RCVD_IN_MSPIKE_H2 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 F2980617BE; Mon, 15 Jan 2018 13:04:13 +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 3AA8F60956; Mon, 15 Jan 2018 13:03:50 +0000 (UTC) Received: from forward101p.mail.yandex.net (forward101p.mail.yandex.net [77.88.28.101]) by lists.linaro.org (Postfix) with ESMTPS id 20C3F61747 for ; Mon, 15 Jan 2018 13:00:16 +0000 (UTC) Received: from mxback13j.mail.yandex.net (mxback13j.mail.yandex.net [IPv6:2a02:6b8:0:1619::88]) by forward101p.mail.yandex.net (Yandex) with ESMTP id 007EE6A82E88 for ; Mon, 15 Jan 2018 16:00:15 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback13j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id DHrgXvaVgy-0EHWRsqx; Mon, 15 Jan 2018 16:00:14 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id Bnqb3pkuSH-0E1qeULu; Mon, 15 Jan 2018 16:00:14 +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: Mon, 15 Jan 2018 16:00:09 +0300 Message-Id: <1516021209-8997-7-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> References: <1516021209-8997-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 388 Subject: [lng-odp] [PATCH API-NEXT v2 6/6] validation: packet: test user pointer init to NULL 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 Test if user pointer is NULL after alloc and reset. Signed-off-by: Petri Savolainen --- /** Email created from pull request 388 (psavol:next-user-ptr-init) ** https://github.com/Linaro/odp/pull/388 ** Patch: https://github.com/Linaro/odp/pull/388.patch ** Base sha: 6303c7d0e98fafe0f14c8c4dd9989b3b7633ebf4 ** Merge commit sha: 76bd874ba5677533132a4c0a39c8e5cf9049a9af **/ test/validation/api/packet/packet.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/validation/api/packet/packet.c b/test/validation/api/packet/packet.c index 75e50d531..e63bd74e5 100644 --- a/test/validation/api/packet/packet.c +++ b/test/validation/api/packet/packet.c @@ -290,6 +290,9 @@ void packet_test_alloc_free(void) CU_ASSERT(odp_packet_to_u64(packet) != odp_packet_to_u64(ODP_PACKET_INVALID)); + /* User pointer should be NULL after alloc */ + CU_ASSERT(odp_packet_user_ptr(packet) == NULL); + /* Pool should have only one packet */ CU_ASSERT_FATAL(odp_packet_alloc(pool, packet_len) == ODP_PACKET_INVALID); @@ -369,6 +372,9 @@ void packet_test_alloc_free_multi(void) CU_ASSERT(subtype == ODP_EVENT_PACKET_BASIC); CU_ASSERT(odp_packet_to_u64(packet[i]) != odp_packet_to_u64(ODP_PACKET_INVALID)); + + /* User pointer should be NULL after alloc */ + CU_ASSERT(odp_packet_user_ptr(packet[i]) == NULL); } /* Pools should have no more packets */ @@ -648,7 +654,15 @@ void packet_test_context(void) CU_ASSERT(memcmp(udat, &test_packet_udata, sizeof(struct udata_struct)) == 0); + odp_packet_user_ptr_set(pkt, NULL); + CU_ASSERT(odp_packet_user_ptr(pkt) == NULL); + odp_packet_user_ptr_set(pkt, (void *)0xdead); + CU_ASSERT(odp_packet_user_ptr(pkt) == (void *)0xdead); + odp_packet_reset(pkt, packet_len); + + /* User pointer should be NULL after reset */ + CU_ASSERT(odp_packet_user_ptr(pkt) == NULL); } void packet_test_layer_offsets(void)