MSVC struct packing is not compatible with GCC. Replace macro __rte_packed with __rte_packed_begin to push existing pack value and set packing to 1-byte and macro __rte_packed_end to restore the pack value prior to the push.
Macro __rte_packed_end is deliberately utilized to trigger a MSVC compiler warning if no existing packing has been pushed allowing easy identification of locations where the __rte_packed_begin is missing. Signed-off-by: Andre Muezerie <andre...@linux.microsoft.com> Reviewed-by: Tyler Retzlaff <roret...@linux.microsoft.com> --- drivers/event/octeontx/timvf_evdev.c | 4 ++-- drivers/event/octeontx/timvf_evdev.h | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/event/octeontx/timvf_evdev.c b/drivers/event/octeontx/timvf_evdev.c index 82f17144a6..b404b1db61 100644 --- a/drivers/event/octeontx/timvf_evdev.c +++ b/drivers/event/octeontx/timvf_evdev.c @@ -9,10 +9,10 @@ RTE_LOG_REGISTER_SUFFIX(otx_logtype_timvf, timer, NOTICE); static struct rte_eventdev *event_dev; -struct __rte_packed timvf_mbox_dev_info { +struct __rte_packed_begin timvf_mbox_dev_info { uint64_t ring_active[4]; uint64_t clk_freq; -}; +} __rte_packed_end; /* Response messages */ enum { diff --git a/drivers/event/octeontx/timvf_evdev.h b/drivers/event/octeontx/timvf_evdev.h index 44a4ee41c4..e9152424ab 100644 --- a/drivers/event/octeontx/timvf_evdev.h +++ b/drivers/event/octeontx/timvf_evdev.h @@ -123,7 +123,7 @@ enum timvf_clk_src { }; /* TIM_MEM_BUCKET */ -struct __rte_aligned(8) tim_mem_bucket { +struct __rte_aligned(8) __rte_packed_begin tim_mem_bucket { uint64_t first_chunk; union { RTE_ATOMIC(uint64_t) w1; @@ -139,19 +139,19 @@ struct __rte_aligned(8) tim_mem_bucket { }; uint64_t current_chunk; uint64_t pad; -} __rte_packed; +} __rte_packed_end; -struct tim_mem_entry { +struct __rte_packed_begin tim_mem_entry { uint64_t w0; uint64_t wqe; -} __rte_packed; +} __rte_packed_end; -struct timvf_ctrl_reg { +struct __rte_packed_begin timvf_ctrl_reg { uint64_t rctrl0; uint64_t rctrl1; uint64_t rctrl2; uint8_t use_pmu; -} __rte_packed; +} __rte_packed_end; struct timvf_ring; -- 2.47.0.vfs.0.3