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 <harry.van.haa...@intel.com> --- 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.pat...@intel.com Cc: cristian.dumitre...@intel.com Cc: olivier.m...@6wind.com Cc: tho...@monjalon.net Cc: step...@networkplumber.org Cc: gavin...@arm.com Cc: honnappa.nagaraha...@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; -- 2.17.1