net/nfp: check hugepage IOVA based on DMA mask
[dpdk.git] / drivers / net / softnic / rte_eth_softnic.c
index 25599ae..4ecfe95 100644 (file)
@@ -190,6 +190,7 @@ pmd_dev_stop(struct rte_eth_dev *dev)
        softnic_mempool_free(p);
 
        tm_hierarchy_free(p);
+       softnic_mtr_free(p);
 }
 
 static void
@@ -290,12 +291,14 @@ pmd_init(struct pmd_params *params)
 
        /* Resources */
        tm_hierarchy_init(p);
+       softnic_mtr_init(p);
 
        softnic_mempool_init(p);
        softnic_swq_init(p);
        softnic_link_init(p);
        softnic_tmgr_init(p);
        softnic_tap_init(p);
+       softnic_cryptodev_init(p);
        softnic_port_in_action_profile_init(p);
        softnic_table_action_profile_init(p);
        softnic_pipeline_init(p);
@@ -344,6 +347,7 @@ pmd_free(struct pmd_internals *p)
        softnic_mempool_free(p);
 
        tm_hierarchy_free(p);
+       softnic_mtr_free(p);
 
        rte_free(p);
 }
@@ -553,7 +557,6 @@ static int
 pmd_remove(struct rte_vdev_device *vdev)
 {
        struct rte_eth_dev *dev = NULL;
-       struct pmd_internals *p;
 
        if (!vdev)
                return -EINVAL;
@@ -564,12 +567,12 @@ pmd_remove(struct rte_vdev_device *vdev)
        dev = rte_eth_dev_allocated(rte_vdev_device_name(vdev));
        if (dev == NULL)
                return -ENODEV;
-       p = dev->data->dev_private;
 
        /* Free device data structures*/
-       rte_free(dev->data);
+       pmd_free(dev->data->dev_private);
+       dev->data->dev_private = NULL; /* already freed */
+       dev->data->mac_addrs = NULL; /* statically allocated */
        rte_eth_dev_release_port(dev);
-       pmd_free(p);
 
        return 0;
 }