Bug 1129

Summary: net/mlx5: cannot transmit if Tx queue is setup with maximum number of descriptors
Product: DPDK Reporter: Andrew Rybchenko (andrew.rybchenko)
Component: ethdevAssignee: dev
Status: UNCONFIRMED ---    
Severity: normal CC: viacheslavo
Priority: Normal    
Version: 22.11   
Target Milestone: ---   
Hardware: All   
OS: All   

Description Andrew Rybchenko 2022-11-17 13:52:20 CET
net/mlx5: cannot transmit if Tx queue is setup with maximum number of descriptors

net/mlx5 does not report Rx/Tx descriptors limits (min/max/align).
As the result application sees theoretical maximum UINT16_MAX (65535) which is set as the default by ethdev.

If application tries to use the value to setup Tx queue, setup succeed, but Tx burst always returns 0. I guess the reason is in the following log message:

mlx5_net: port 0 increased number of descriptors in Tx queue 0 to the next power of two (0)

i.e. effective number of descriptors is equal to 0.
Comment 1 Andrew Rybchenko 2024-02-10 10:06:16 CET
Logs from run at UNH IOL:

https://ts-factory.io/bublik/v2/log/625098?focusId=627059&mode=treeAndinfoAndlog&experimental=true&lineNumber=1_53

RPC (DPDK,iut_rpcs[17]): rte_eth_tx_queue_setup(0, 0, 65535, 1, { tx_thresh={ pthresh=0, hthresh=0, wthresh=0 }, tx_rs_thresh=0, tx_free_thresh=0, txq_flags=, tx_deferred_start=0, offloads= }) -> 0 (RPC-EAGAIN)

mlx5_net: port 0 increased number of descriptors in Tx queue 0 to the next power of two (0)

As the result no single packet could be sent.

IMHO, it would be great to report correct min/max/align values for Tx and Rx descriptor limits.