| Bug ID | 1544 |
|---|---|
| Summary | rte_eth_dev_adjust_nb_rx_tx_desc nb_tx_desc minimum incorrect |
| Product | DPDK |
| Version | 24.07 |
| Hardware | All |
| OS | All |
| Status | UNCONFIRMED |
| Severity | normal |
| Priority | Normal |
| Component | ethdev |
| Assignee | dev@dpdk.org |
| Reporter | mb@smartsharesystems.com |
| Target Milestone | --- |
rte_eth_dev_adjust_nb_rx_tx_desc() does not consider tx_rs_thresh and tx_free_thresh when adjusting nb_tx_desc for minimum allowed TX descriptors. E.g. the IXGBE driver reports: dev_info.tx_desc_lim.nb_min = 32. dev_info.default_txconf.tx_rs_thresh = 32. dev_info.default_txconf.tx_free_thresh = 32. If calling rte_eth_dev_adjust_nb_rx_tx_desc() with nb_tx_desc = 32, it will adjust to nb_tx_desc = 32. But then rte_eth_tx_queue_setup() will fail afterwards, because it needs nb_tx_desc >= tx_rs_thresh + tx_free_thresh. Suggested fix: Under all circumstances, rte_eth_dev_adjust_nb_rx_tx_desc() should take tx_rs_thresh and tx_free_thresh into consideration when adjusting nb_tx_desc for minimum allowed. Preferably, it should take an optional "const struct rte_eth_txconf *tx_conf" parameter, like rte_eth_tx_queue_setup(), or it can use the tx_rs_thresh and tx_free_thresh values from default_txconf.