net/af_xdp: fix umem frame size and headroom
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: stable@dpdk.org Signed-off-by: Ciara Loftus <ciara.loftus@intel.com> Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
This commit is contained in:
parent
2df00d562d
commit
b79ae90c78
@ -33,6 +33,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>
|
||||
@ -754,11 +755,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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user