ethdev: add internal reset function
authorJan Blunck <jblunck@infradead.org>
Thu, 24 Nov 2016 11:26:47 +0000 (12:26 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 21 Dec 2016 17:47:53 +0000 (18:47 +0100)
This is a helper for DPDK internal users to force a reconfiguration of a
device.

Signed-off-by: Jan Blunck <jblunck@infradead.org>
lib/librte_ether/rte_ethdev.c
lib/librte_ether/rte_ethdev.h
lib/librte_ether/rte_ether_version.map

index 418434c..9f60ff3 100644 (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)
 {
index 9678179..52119af 100644 (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.
  *
index 72be66d..209328c 100644 (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;