On 10/17/18 4:54 AM, Thomas Monjalon wrote:
This is a clean-up of common ethdev data freeing.
All data freeing are moved to rte_eth_dev_release_port()
and done only in case of primary process.
It is probably fixing some memory leaks for PMDs which were
not freeing all data.
Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
[...]
diff --git a/lib/librte_ethdev/rte_ethdev_driver.h
b/lib/librte_ethdev/rte_ethdev_driver.h
index ca31b5777..a1398a80c 100644
--- a/lib/librte_ethdev/rte_ethdev_driver.h
+++ b/lib/librte_ethdev/rte_ethdev_driver.h
@@ -58,7 +58,16 @@ struct rte_eth_dev *rte_eth_dev_attach_secondary(const char
*name);
/**
* @internal
- * Release the specified ethdev port.
+ * Notify RTE_ETH_EVENT_DESTROY and release the specified ethdev port.
+ *
+ * The following data fields will be freed:
+ * - rx_queues
+ * - tx_queues
I think rx_queues and tx_queues from should not be mentioned here.
They are managed by ethdev and there is no options here.
+ * - mac_addrs
+ * - hash_mac_addrs
+ * - dev_private
+ * If one of these fields should not be freed,
+ * it must be reset to NULL by the caller.
I'm afraid nobody will find it here. Let's add
@see rte_eth_dev_release_port()
to these members description in rte_ethdev_core.h
struct rte_eth_dev_data.
Also I think "by the caller" is misleading here.
Let's highlight that it is PMD responsibility, i.e.
"by the PMD" may be with
"typically in dev_close method implementation".
Andrew.