From patchwork Fri Jan 11 11:32:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Van Haaren, Harry" X-Patchwork-Id: 49675 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 588B51B94A; Fri, 11 Jan 2019 12:32:14 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 761BA1B945 for ; Fri, 11 Jan 2019 12:32:12 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jan 2019 03:32:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,465,1539673200"; d="scan'208";a="117317254" Received: from silpixa00399779.ir.intel.com (HELO silpixa00399779.ger.corp.intel.com) ([10.237.222.118]) by orsmga003.jf.intel.com with ESMTP; 11 Jan 2019 03:32:09 -0800 From: Harry van Haaren To: dev@dpdk.org Cc: Harry van Haaren , reshma.pattan@intel.com, cristian.dumitrescu@intel.com, olivier.matz@6wind.com, thomas@monjalon.net, stephen@networkplumber.org, gavin.hu@arm.com, honnappa.nagarahalli@arm.com Date: Fri, 11 Jan 2019 11:32:39 +0000 Message-Id: <20190111113239.61275-1-harry.van.haaren@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190110180658.23302-1-harry.van.haaren@intel.com> References: <20190110180658.23302-1-harry.van.haaren@intel.com> Subject: [dpdk-dev] [PATCH v3] mbuf: fix compile by making sched struct visible X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Although C compilation works with the struct rte_mbuf_sched declared inside the struct rte_mbuf namespace, C++ fails to compile. This fix moves the rte_mbuf_sched struct up to the global namespace, instead of declaring it inside the struct mbuf namespace. The struct rte_mbuf_sched is being used on the stack in rte_mbuf_sched_get() and as a cast in _set(). For this reason, it must be exposed as an available type. Fixes: 5d3f72100904 ("mbuf: implement generic format for sched field") Signed-off-by: Harry van Haaren Acked-by: Cristian Dumitrescu Acked-by: Olivier Matz --- v3: - Update comment in mbuf to state size of struct sched (Crisitian) v2: - Different solution, not applicable, v3 based on v1 (ML discussion) Cc: reshma.pattan@intel.com Cc: cristian.dumitrescu@intel.com Cc: olivier.matz@6wind.com Cc: thomas@monjalon.net Cc: stephen@networkplumber.org Cc: gavin.hu@arm.com Cc: honnappa.nagarahalli@arm.com --- lib/librte_mbuf/rte_mbuf.h | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index bc562dc8a..d53b68253 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -468,6 +468,17 @@ __extension__ typedef uint64_t MARKER64[0]; /**< marker that allows us to overwrite 8 bytes * with a single assignment */ +struct rte_mbuf_sched { + uint32_t queue_id; /**< Queue ID. */ + uint8_t traffic_class; + /**< Traffic class ID. Traffic class 0 + * is the highest priority traffic class. + */ + uint8_t color; + /**< Color. @see enum rte_color.*/ + uint16_t reserved; /**< Reserved. */ +}; /**< Hierarchical scheduler */ + /** * The generic rte_mbuf, containing a packet mbuf. */ @@ -574,16 +585,8 @@ struct rte_mbuf { * on PKT_RX_FDIR_* flag in ol_flags. */ } fdir; /**< Filter identifier if FDIR enabled */ - struct rte_mbuf_sched { - uint32_t queue_id; /**< Queue ID. */ - uint8_t traffic_class; - /**< Traffic class ID. Traffic class 0 - * is the highest priority traffic class. - */ - uint8_t color; - /**< Color. @see enum rte_color.*/ - uint16_t reserved; /**< Reserved. */ - } sched; /**< Hierarchical scheduler */ + struct rte_mbuf_sched sched; + /**< Hierarchical scheduler : 8 bytes */ struct { uint32_t reserved1; uint16_t reserved2;