Although C compilation works with the struct rte_mbuf_sched declared inside the struct rte_mbuf namespace, C++ fails to compile.
This fix removes the temporary struct rte_mbuf_sched, instead reading from the mbuf directly for each struct member. As the struct is now not used directly, the C++ compiler doesn't need to know about the struct, resolving the issue. Fixes: 5d3f72100904 ("mbuf: implement generic format for sched field") Signed-off-by: Harry van Haaren <harry.van.haa...@intel.com> --- Cc: reshma.pat...@intel.com Cc: cristian.dumitre...@intel.com Cc: tho...@monjalon.net Cc: olivier.m...@6wind.com See mailing list for v1 discussion, perhaps this solution is more readable due to leaving sched struct in-line in the mbuf struct. --- lib/librte_mbuf/rte_mbuf.h | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index bc562dc8a..1b260efd5 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -2344,11 +2344,9 @@ rte_mbuf_sched_get(const struct rte_mbuf *m, uint32_t *queue_id, uint8_t *traffic_class, uint8_t *color) { - struct rte_mbuf_sched sched = m->hash.sched; - - *queue_id = sched.queue_id; - *traffic_class = sched.traffic_class; - *color = sched.color; + *queue_id = m->hash.sched.queue_id; + *traffic_class = m->hash.sched.traffic_class; + *color = m->hash.sched.color; } /** @@ -2395,11 +2393,9 @@ rte_mbuf_sched_set(struct rte_mbuf *m, uint32_t queue_id, uint8_t traffic_class, uint8_t color) { - m->hash.sched = (struct rte_mbuf_sched){ - .queue_id = queue_id, - .traffic_class = traffic_class, - .color = color, - }; + m->hash.sched.queue_id = queue_id; + m->hash.sched.traffic_class = traffic_class; + m->hash.sched.color = color; } #ifdef __cplusplus -- 2.17.1