> > 'uint64_t' is used to hold the pointer, for 32-bits build this > assumption is wrong and giving following build error: > > rte_eth_af_xdp.c: In function ‘xdp_umem_configure’: > rte_eth_af_xdp.c:970:15: > error: cast to pointer from integer of different size > [-Werror=int-to-pointer-cast] > 970 | base_addr = (void *)get_base_addr(mb_pool, &align); > | ^ > > Replacing the 'uint64_t' return type of the 'get_base_addr()' to the > 'uintptr_t'. > Although not sure if the overall logic supports the 32-bits, using > 'uintptr_t' should be safe both for 64/32 bits. > > Fixes: d8a210774e1d ("net/af_xdp: support unaligned umem chunks") > Cc: sta...@dpdk.org > > Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com> > > --- > > Hi Ciara, > > I am not sure if 32-bit is supported for the af_xdp, but even not does > this change make sense for the 64-bits?
Hi Ferruh, LGTM. I've tested it for 64bit and all looks good to me. Tested-by: Ciara Loftus <ciara.lof...@intel.com> I've been looking into 32-bit compatibility and will submit a patch for at least the docs when I've verified what works. Thanks, Ciara > --- > drivers/net/af_xdp/rte_eth_af_xdp.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c > b/drivers/net/af_xdp/rte_eth_af_xdp.c > index 4076ff797c..2c7892bd7e 100644 > --- a/drivers/net/af_xdp/rte_eth_af_xdp.c > +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c > @@ -910,13 +910,13 @@ eth_link_update(struct rte_eth_dev *dev > __rte_unused, > } > > #if defined(XDP_UMEM_UNALIGNED_CHUNK_FLAG) > -static inline uint64_t get_base_addr(struct rte_mempool *mp, uint64_t > *align) > +static inline uintptr_t get_base_addr(struct rte_mempool *mp, uint64_t > *align) > { > struct rte_mempool_memhdr *memhdr; > - uint64_t memhdr_addr, aligned_addr; > + uintptr_t memhdr_addr, aligned_addr; > > memhdr = STAILQ_FIRST(&mp->mem_list); > - memhdr_addr = (uint64_t)memhdr->addr; > + memhdr_addr = (uintptr_t)memhdr->addr; > aligned_addr = memhdr_addr & ~(getpagesize() - 1); > *align = memhdr_addr - aligned_addr; > > -- > 2.26.2