No matter what the mbuf size is, the data buffer size should not be greater than 16K - 128.
Fixes: 69dd4c3d0898 ("net/avf: enable queue and device") Cc: sta...@dpdk.org Signed-off-by: Wenjun Wu <wenjun1...@intel.com> --- drivers/net/iavf/iavf_rxtx.c | 1 + drivers/net/iavf/iavf_rxtx.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c index b1d0fbceb6..0db3aabd92 100644 --- a/drivers/net/iavf/iavf_rxtx.c +++ b/drivers/net/iavf/iavf_rxtx.c @@ -697,6 +697,7 @@ iavf_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, len = rte_pktmbuf_data_room_size(rxq->mp) - RTE_PKTMBUF_HEADROOM; rxq->rx_buf_len = RTE_ALIGN_FLOOR(len, (1 << IAVF_RXQ_CTX_DBUFF_SHIFT)); + rxq->rx_buf_len = RTE_MIN(rxq->rx_buf_len, IAVF_RX_MAX_DATA_BUF_SIZE); /* Allocate the software ring. */ len = nb_desc + IAVF_RX_MAX_BURST; diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h index 09e2127db0..f205a2aaf1 100644 --- a/drivers/net/iavf/iavf_rxtx.h +++ b/drivers/net/iavf/iavf_rxtx.h @@ -16,6 +16,9 @@ /* used for Rx Bulk Allocate */ #define IAVF_RX_MAX_BURST 32 +/* Max data buffer size must be 16K - 128 bytes */ +#define IAVF_RX_MAX_DATA_BUF_SIZE (16 * 1024 - 128) + /* used for Vector PMD */ #define IAVF_VPMD_RX_MAX_BURST 32 #define IAVF_VPMD_TX_MAX_BURST 32 -- 2.34.1