ethdev: get default Rx/Tx configuration from dev info
Many sample apps use duplicated code to set rte_eth_txconf and rte_eth_rxconf structures. This patch allows the user to get a default optimal RX/TX configuration through rte_eth_dev_info get, and still any parameters may be tweaked as wished, before setting up queues. Besides, if a NULL pointer is passed to rte_eth_rx_queue_setup or rte_eth_tx_queue_setup, these functions get internally the default RX/TX configuration for the user. Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Reviewed-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: David Marchand <david.marchand@6wind.com> [Thomas: split patch]
This commit is contained in:
parent
a30268e9a2
commit
fbde27f19a
@ -1022,6 +1022,9 @@ rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id,
|
||||
return (-EINVAL);
|
||||
}
|
||||
|
||||
if (rx_conf == NULL)
|
||||
rx_conf = &dev_info.default_rxconf;
|
||||
|
||||
ret = (*dev->dev_ops->rx_queue_setup)(dev, rx_queue_id, nb_rx_desc,
|
||||
socket_id, rx_conf, mp);
|
||||
if (!ret) {
|
||||
@ -1039,6 +1042,7 @@ rte_eth_tx_queue_setup(uint8_t port_id, uint16_t tx_queue_id,
|
||||
const struct rte_eth_txconf *tx_conf)
|
||||
{
|
||||
struct rte_eth_dev *dev;
|
||||
struct rte_eth_dev_info dev_info;
|
||||
|
||||
/* This function is only safe when called from the primary process
|
||||
* in a multi-process setup*/
|
||||
@ -1060,7 +1064,14 @@ rte_eth_tx_queue_setup(uint8_t port_id, uint16_t tx_queue_id,
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_infos_get, -ENOTSUP);
|
||||
FUNC_PTR_OR_ERR_RET(*dev->dev_ops->tx_queue_setup, -ENOTSUP);
|
||||
|
||||
(*dev->dev_ops->dev_infos_get)(dev, &dev_info);
|
||||
|
||||
if (tx_conf == NULL)
|
||||
tx_conf = &dev_info.default_txconf;
|
||||
|
||||
return (*dev->dev_ops->tx_queue_setup)(dev, tx_queue_id, nb_tx_desc,
|
||||
socket_id, tx_conf);
|
||||
}
|
||||
|
@ -906,6 +906,8 @@ struct rte_eth_dev_info {
|
||||
uint16_t max_vmdq_pools; /**< Maximum number of VMDq pools. */
|
||||
uint32_t rx_offload_capa; /**< Device RX offload capabilities. */
|
||||
uint32_t tx_offload_capa; /**< Device TX offload capabilities. */
|
||||
struct rte_eth_rxconf default_rxconf; /**< Default RX configuration */
|
||||
struct rte_eth_txconf default_txconf; /**< Default TX configuration */
|
||||
};
|
||||
|
||||
/** Maximum name length for extended statistics counters */
|
||||
@ -1717,6 +1719,8 @@ extern int rte_eth_dev_configure(uint8_t port_id,
|
||||
* the DMA memory allocated for the receive descriptors of the ring.
|
||||
* @param rx_conf
|
||||
* The pointer to the configuration data to be used for the receive queue.
|
||||
* NULL value is allowed, in which case default RX configuration
|
||||
* will be used.
|
||||
* The *rx_conf* structure contains an *rx_thresh* structure with the values
|
||||
* of the Prefetch, Host, and Write-Back threshold registers of the receive
|
||||
* ring.
|
||||
@ -1754,6 +1758,8 @@ extern int rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id,
|
||||
* the DMA memory allocated for the transmit descriptors of the ring.
|
||||
* @param tx_conf
|
||||
* The pointer to the configuration data to be used for the transmit queue.
|
||||
* NULL value is allowed, in which case default RX configuration
|
||||
* will be used.
|
||||
* The *tx_conf* structure contains the following data:
|
||||
* - The *tx_thresh* structure with the values of the Prefetch, Host, and
|
||||
* Write-Back threshold registers of the transmit ring.
|
||||
|
Loading…
Reference in New Issue
Block a user