net/mlx4: release port upon close
authorThomas Monjalon <thomas@monjalon.net>
Mon, 28 Sep 2020 23:14:20 +0000 (01:14 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 30 Sep 2020 17:19:14 +0000 (19:19 +0200)
The flag RTE_ETH_DEV_CLOSE_REMOVE is set so all port resources
can be freed by rte_eth_dev_close().

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
drivers/net/mlx4/mlx4.c

index df59314..ad7c805 100644 (file)
@@ -400,6 +400,8 @@ mlx4_dev_close(struct rte_eth_dev *dev)
                MLX4_ASSERT(priv->ctx == NULL);
        mlx4_intr_uninstall(priv);
        memset(priv, 0, sizeof(*priv));
+       /* mac_addrs must not be freed because part of dev_private */
+       dev->data->mac_addrs = NULL;
        return 0;
 }
 
@@ -1025,6 +1027,7 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
                        ERROR("can not allocate rte ethdev");
                        goto port_error;
                }
+               eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
                eth_dev->data->dev_private = priv;
                eth_dev->data->mac_addrs = priv->mac;
                eth_dev->device = &pci_dev->device;