Max rx desc causing 100% imisses

I have a server setup that uses MT27800 (ConnectX5), and when I tried to increase rx_desc to 32768, I observed 100% imisses.

Test setup

DPDK version: 22.11
driver: mlx5_core
version: 5.7-1.0.2
firmware: 16.35.4506 (MT_0000000011)

dpdk-testpmd -l 1-10 -n 4 -a 0000:45:00.0,rxq_comp_en=1,rxq_pkt_pad_en=1 – -i –max_pkt_len=4096 –rxq=8 –txq=8 nb_cores=8 –rxd=32768 –enable_drop_en –enable_scatter

After doing some tracing to the DPDK source code, it seems that the following code may have overflow issue:

Under DPDK source → drivers/net/mlx5/mlx5_devx.c

/*
* For vectorized Rx, it must not be doubled in order to
* make cq_ci and rq_ci aligned.
*/
if (mlx5_rxq_check_vec_support(rxq_data) < 0)
cqe_n *= 2;

The above mentioned code seems to double the amount of cqe for non-vectorized rx, which may leads to overflow.

I further confirmed that when I set my set up to MTU 1500 (vectorized mode), there isnt 100% imisses, but when I set my MTU to 4096 (non-vectorized), 100% imiss occurred.

I also upgraded my setup to use the latest version of DPDK version (25.11), same observations were made.

As I am not very familiar with the mlx5 driver, could NDIVIA assist to check if the above mentioned causing the overflow from 32768 to 65536 which resulted to 0 for uint16_t type?

Hi Jeremy,

Looks like we need some more information and debugging on this.

I would advice on opening a case with NVIDIA Enterprise Support at:

Thanks and have a great day!

Ilan.