[dpdk-dev] [PATCH v3 2/4] ethdev: free all common data when releasing port
Andrew Rybchenko
arybchenko at solarflare.com
Wed Oct 17 09:13:53 CEST 2018
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 <thomas at 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.
More information about the dev
mailing list