From patchwork Wed Mar 2 20:05:41 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zoltan Kiss X-Patchwork-Id: 63418 Delivered-To: patch@linaro.org Received: by 10.112.199.169 with SMTP id jl9csp2573265lbc; Wed, 2 Mar 2016 12:06:36 -0800 (PST) X-Received: by 10.55.79.207 with SMTP id d198mr34973682qkb.49.1456949193424; Wed, 02 Mar 2016 12:06:33 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id 90si37548494qgj.127.2016.03.02.12.06.33; Wed, 02 Mar 2016 12:06:33 -0800 (PST) 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 Received: by lists.linaro.org (Postfix, from userid 109) id EE978622B1; Wed, 2 Mar 2016 20:06:32 +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, RCVD_IN_DNSWL_LOW, 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 B759D62BAC; Wed, 2 Mar 2016 20:06:02 +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 99C06622A6; Wed, 2 Mar 2016 20:05:56 +0000 (UTC) Received: from mail-wm0-f50.google.com (mail-wm0-f50.google.com [74.125.82.50]) by lists.linaro.org (Postfix) with ESMTPS id A82A161D4C for ; Wed, 2 Mar 2016 20:05:54 +0000 (UTC) Received: by mail-wm0-f50.google.com with SMTP id l68so4953848wml.0 for ; Wed, 02 Mar 2016 12:05:54 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=PsJmPhNtFURgT2wRJcTBcgwOmEIHRAe4pxaF5KfOei0=; b=SBr3E/3fmgO7mzq3AqwpNGt8y2RLMgw4sTFhCa3oAwspr8rjIz9l2xSLE2My6yGTDK 1MoG6jzWmkEtWU5jPURBifh++Zmny1wLKCDtg9u5oiZaoEYjp/Kr8BS09ZuVQdG8WjOa Iag4NmNvRwpX3+xyLG0m/7BxgYEBszXED0DP83dlmuX1lj1oNo3ipbScIDtSziofsso1 UcDBR2GtcpGCubmjgnWwa6/VyEypQaqz2UXw/EFJ2OjM1NjeE+Vyhe7xSULxehDi2vAb 0/zbvS4iyfQeuLsBRGkRzYvFA5eRA5iiuo/+Szmgf361wBabcLxsJD8NvJkXtaXML3Rf VByQ== X-Gm-Message-State: AD7BkJJtSH2vFbOQtM7xCLcdjwX/GkmtshKoKshOQ2tKH5bw0/cMQE5qlY5onr2fL0deNhhoNKc= X-Received: by 10.194.11.67 with SMTP id o3mr27675642wjb.74.1456949153818; Wed, 02 Mar 2016 12:05:53 -0800 (PST) Received: from localhost.localdomain ([195.11.233.227]) by smtp.googlemail.com with ESMTPSA id z6sm5687302wme.9.2016.03.02.12.05.52 for (version=TLSv1/SSLv3 cipher=OTHER); Wed, 02 Mar 2016 12:05:53 -0800 (PST) From: Zoltan Kiss To: lng-odp@lists.linaro.org Date: Wed, 2 Mar 2016 20:05:41 +0000 Message-Id: <1456949141-32378-3-git-send-email-zoltan.kiss@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1456949141-32378-1-git-send-email-zoltan.kiss@linaro.org> References: <1456949141-32378-1-git-send-email-zoltan.kiss@linaro.org> X-Topics: patch Subject: [lng-odp] [PATCH 2/2] linux-generic: packet: don't look for L2 header if there isn't any 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: , MIME-Version: 1.0 Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" The L2 offset functions should consider the L2 flag: return negative answer if there isn't any, and implicitly set it when offset is set. E.g. user created packets don't have L2 headers immediately. Signed-off-by: Zoltan Kiss --- platform/linux-generic/include/odp_packet_internal.h | 5 +++++ platform/linux-generic/odp_packet.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h index d9fe544..1dc875e 100644 --- a/platform/linux-generic/include/odp_packet_internal.h +++ b/platform/linux-generic/include/odp_packet_internal.h @@ -263,6 +263,11 @@ static inline int odp_packet_hdr_has_l2(odp_packet_hdr_t *pkt_hdr) return pkt_hdr->input_flags.l2; } +static inline void odp_packet_hdr_has_l2_set(odp_packet_hdr_t *pkt_hdr, int val) +{ + pkt_hdr->input_flags.l2 = val; +} + static inline int odp_packet_hdr_has_eth(odp_packet_hdr_t *pkt_hdr) { return pkt_hdr->input_flags.eth; diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index db85b5e..94d7f85 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -353,12 +353,16 @@ uint32_t odp_packet_user_area_size(odp_packet_t pkt) void *odp_packet_l2_ptr(odp_packet_t pkt, uint32_t *len) { odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); + if (!odp_packet_hdr_has_l2(pkt_hdr)) + return NULL; return packet_map(pkt_hdr, pkt_hdr->l2_offset, len); } uint32_t odp_packet_l2_offset(odp_packet_t pkt) { odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); + if (!odp_packet_hdr_has_l2(pkt_hdr)) + return ODP_PACKET_OFFSET_INVALID; return pkt_hdr->l2_offset; } @@ -369,6 +373,7 @@ int odp_packet_l2_offset_set(odp_packet_t pkt, uint32_t offset) if (offset >= pkt_hdr->frame_len) return -1; + odp_packet_hdr_has_l2_set(pkt_hdr, 1); pkt_hdr->l2_offset = offset; return 0; }