net/avp: remove resources when port is closed

Message ID 20190527134631.24427-1-allain.legacy@windriver.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series net/avp: remove resources when port is closed |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/Intel-compilation success Compilation OK

Commit Message

Allain Legacy May 27, 2019, 1:46 p.m. UTC
  The rte_eth_dev_close() function now handles freeing resources for
devices (e.g., mac_addrs).  There is no change in behaviour for AVP
devices since they do not currently free their dynamic memory; which was
a bug.  To conform with the new close() behaviour we are asserting the
RTE_ETH_DEV_CLOSE_REMOVE flag so that rte_eth_dev_close() releases
all device related dynamic memory.

Cc: Matt Peters <matt.peters@windriver.com>
Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
---
 drivers/net/avp/avp_ethdev.c | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Ferruh Yigit May 27, 2019, 4:03 p.m. UTC | #1
On 5/27/2019 2:46 PM, Allain Legacy wrote:
> The rte_eth_dev_close() function now handles freeing resources for
> devices (e.g., mac_addrs).  There is no change in behaviour for AVP
> devices since they do not currently free their dynamic memory; which was
> a bug.  To conform with the new close() behaviour we are asserting the
> RTE_ETH_DEV_CLOSE_REMOVE flag so that rte_eth_dev_close() releases
> all device related dynamic memory.
> 
> Cc: Matt Peters <matt.peters@windriver.com>
> Signed-off-by: Allain Legacy <allain.legacy@windriver.com>

+1 to patch.
But Rx/Tx queues are not freed by 'rte_eth_dev_close()', they are still need to
be freed by the driver.
Since you started this, can you please extend the patch to clean them as well?

> ---
>  drivers/net/avp/avp_ethdev.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c
> index 09388d05f..7c37f4c8a 100644
> --- a/drivers/net/avp/avp_ethdev.c
> +++ b/drivers/net/avp/avp_ethdev.c
> @@ -959,6 +959,8 @@ eth_avp_dev_init(struct rte_eth_dev *eth_dev)
>  	eth_dev->dev_ops = &avp_eth_dev_ops;
>  	eth_dev->rx_pkt_burst = &avp_recv_pkts;
>  	eth_dev->tx_pkt_burst = &avp_xmit_pkts;
> +	/* Let rte_eth_dev_close() release the port resources */
> +	eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
>  
>  	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>  		/*
>
  

Patch

diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c
index 09388d05f..7c37f4c8a 100644
--- a/drivers/net/avp/avp_ethdev.c
+++ b/drivers/net/avp/avp_ethdev.c
@@ -959,6 +959,8 @@  eth_avp_dev_init(struct rte_eth_dev *eth_dev)
 	eth_dev->dev_ops = &avp_eth_dev_ops;
 	eth_dev->rx_pkt_burst = &avp_recv_pkts;
 	eth_dev->tx_pkt_burst = &avp_xmit_pkts;
+	/* Let rte_eth_dev_close() release the port resources */
+	eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
 
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
 		/*