ethdev: add internal reset function

This is a helper for DPDK internal users to force a reconfiguration of a
device.

Signed-off-by: Jan Blunck <jblunck@infradead.org>
This commit is contained in:
Jan Blunck 2016-11-24 12:26:47 +01:00 committed by Thomas Monjalon
parent c3d3ba9892
commit 5c51e40445
3 changed files with 36 additions and 0 deletions

View File

@ -856,6 +856,22 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
return 0;
}
void
_rte_eth_dev_reset(struct rte_eth_dev *dev)
{
if (dev->data->dev_started) {
RTE_PMD_DEBUG_TRACE(
"port %d must be stopped to allow reset\n",
dev->data->port_id);
return;
}
rte_eth_dev_rx_queue_config(dev, 0);
rte_eth_dev_tx_queue_config(dev, 0);
memset(&dev->data->dev_conf, 0, sizeof(dev->data->dev_conf));
}
static void
rte_eth_dev_config_restore(uint8_t port_id)
{

View File

@ -1913,6 +1913,19 @@ uint32_t rte_eth_speed_bitflag(uint32_t speed, int duplex);
int rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_queue,
uint16_t nb_tx_queue, const struct rte_eth_conf *eth_conf);
/**
* @internal
* Release device queues and clear its configuration to force the user
* application to reconfigure it. It is for internal use only.
*
* @param dev
* Pointer to struct rte_eth_dev.
*
* @return
* void
*/
void _rte_eth_dev_reset(struct rte_eth_dev *dev);
/**
* Allocate and set up a receive queue for an Ethernet device.
*

View File

@ -147,3 +147,10 @@ DPDK_16.11 {
rte_eth_dev_pci_remove;
} DPDK_16.07;
DPDK_17.02 {
global:
_rte_eth_dev_reset;
} DPDK_16.11;