On 02/10, Ciara Loftus wrote: >The previous frame size calculation incorrectly used >mb_pool->private_data_size and didn't include mb_pool->header_size. >Instead of performing a manual calculation, use the >rte_mempool_calc_obj_size API to determine the frame size. > >The previous frame headroom calculation also incorrectly used >mb_pool->private_data_size and didn't include mb_pool->header_size or the >mbuf priv size. Fix this. > >Fixes: d8a210774e1d ("net/af_xdp: support unaligned umem chunks") >Cc: sta...@dpdk.org > >Signed-off-by: Ciara Loftus <ciara.lof...@intel.com> >--- > drivers/net/af_xdp/rte_eth_af_xdp.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > >diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c >b/drivers/net/af_xdp/rte_eth_af_xdp.c >index 683e2a559..8b189119c 100644 >--- a/drivers/net/af_xdp/rte_eth_af_xdp.c >+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c >@@ -34,6 +34,7 @@ > #include <rte_log.h> > #include <rte_memory.h> > #include <rte_memzone.h> >+#include <rte_mempool.h> > #include <rte_mbuf.h> > #include <rte_malloc.h> > #include <rte_ring.h> >@@ -755,11 +756,13 @@ xsk_umem_info *xdp_umem_configure(struct pmd_internals >*internals __rte_unused, > void *base_addr = NULL; > struct rte_mempool *mb_pool = rxq->mb_pool; > >- usr_config.frame_size = rte_pktmbuf_data_room_size(mb_pool) + >- ETH_AF_XDP_MBUF_OVERHEAD + >- mb_pool->private_data_size; >- usr_config.frame_headroom = ETH_AF_XDP_DATA_HEADROOM + >- mb_pool->private_data_size; >+ usr_config.frame_size = rte_mempool_calc_obj_size(mb_pool->elt_size, >+ mb_pool->flags, >+ NULL); >+ usr_config.frame_headroom = mb_pool->header_size + >+ sizeof(struct rte_mbuf) + >+ rte_pktmbuf_priv_size(mb_pool) + >+ RTE_PKTMBUF_HEADROOM; > > umem = rte_zmalloc_socket("umem", sizeof(*umem), 0, rte_socket_id()); > if (umem == NULL) { >-- >2.17.1 >
Reviewed-by: Xiaolong Ye <xiaolong...@intel.com>