doc: use SPDX tag for bnx2x guide
[dpdk.git] / drivers / net / null / rte_eth_null.c
index f04a7d7..b2c92ab 100644 (file)
@@ -62,7 +62,6 @@ struct null_queue {
 
        rte_atomic64_t rx_pkts;
        rte_atomic64_t tx_pkts;
-       rte_atomic64_t err_pkts;
 };
 
 struct pmd_internals {
@@ -73,7 +72,7 @@ struct pmd_internals {
        struct null_queue rx_null_queues[RTE_MAX_QUEUES_PER_PORT];
        struct null_queue tx_null_queues[RTE_MAX_QUEUES_PER_PORT];
 
-       struct ether_addr eth_addr;
+       struct rte_ether_addr eth_addr;
        /** Bit mask of RSS offloads, the bit offset also means flow type */
        uint64_t flow_type_rss_offloads;
 
@@ -311,7 +310,7 @@ static int
 eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *igb_stats)
 {
        unsigned i, num_stats;
-       unsigned long rx_total = 0, tx_total = 0, tx_err_total = 0;
+       unsigned long rx_total = 0, tx_total = 0;
        const struct pmd_internals *internal;
 
        if ((dev == NULL) || (igb_stats == NULL))
@@ -333,15 +332,11 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *igb_stats)
        for (i = 0; i < num_stats; i++) {
                igb_stats->q_opackets[i] =
                        internal->tx_null_queues[i].tx_pkts.cnt;
-               igb_stats->q_errors[i] =
-                       internal->tx_null_queues[i].err_pkts.cnt;
                tx_total += igb_stats->q_opackets[i];
-               tx_err_total += igb_stats->q_errors[i];
        }
 
        igb_stats->ipackets = rx_total;
        igb_stats->opackets = tx_total;
-       igb_stats->oerrors = tx_err_total;
 
        return 0;
 }
@@ -358,10 +353,8 @@ eth_stats_reset(struct rte_eth_dev *dev)
        internal = dev->data->dev_private;
        for (i = 0; i < RTE_DIM(internal->rx_null_queues); i++)
                internal->rx_null_queues[i].rx_pkts.cnt = 0;
-       for (i = 0; i < RTE_DIM(internal->tx_null_queues); i++) {
+       for (i = 0; i < RTE_DIM(internal->tx_null_queues); i++)
                internal->tx_null_queues[i].tx_pkts.cnt = 0;
-               internal->tx_null_queues[i].err_pkts.cnt = 0;
-       }
 }
 
 static void
@@ -467,7 +460,7 @@ eth_rss_hash_conf_get(struct rte_eth_dev *dev,
 
 static int
 eth_mac_address_set(__rte_unused struct rte_eth_dev *dev,
-                   __rte_unused struct ether_addr *addr)
+                   __rte_unused struct rte_ether_addr *addr)
 {
        return 0;
 }
@@ -492,8 +485,6 @@ static const struct eth_dev_ops ops = {
        .rss_hash_conf_get = eth_rss_hash_conf_get
 };
 
-static struct rte_vdev_driver pmd_null_drv;
-
 static int
 eth_dev_null_create(struct rte_vdev_device *dev,
                unsigned packet_size,
@@ -535,7 +526,7 @@ eth_dev_null_create(struct rte_vdev_device *dev,
        internals->packet_size = packet_size;
        internals->packet_copy = packet_copy;
        internals->port_id = eth_dev->data->port_id;
-       eth_random_addr(internals->eth_addr.addr_bytes);
+       rte_eth_random_addr(internals->eth_addr.addr_bytes);
 
        internals->flow_type_rss_offloads =  ETH_RSS_PROTO_MASK;
        internals->reta_size = RTE_DIM(internals->reta_conf) * RTE_RETA_GROUP_SIZE;
@@ -559,6 +550,7 @@ eth_dev_null_create(struct rte_vdev_device *dev,
                eth_dev->tx_pkt_burst = eth_null_tx;
        }
 
+       rte_eth_dev_probing_finish(eth_dev);
        return 0;
 }
 
@@ -613,8 +605,7 @@ rte_pmd_null_probe(struct rte_vdev_device *dev)
        params = rte_vdev_device_args(dev);
        PMD_LOG(INFO, "Initializing pmd_null for %s", name);
 
-       if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
-           strlen(params) == 0) {
+       if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
                eth_dev = rte_eth_dev_attach_secondary(name);
                if (!eth_dev) {
                        PMD_LOG(ERR, "Failed to probe %s", name);
@@ -622,6 +613,8 @@ rte_pmd_null_probe(struct rte_vdev_device *dev)
                }
                /* TODO: request info from primary to set up Rx and Tx */
                eth_dev->dev_ops = &ops;
+               eth_dev->device = &dev->device;
+               rte_eth_dev_probing_finish(eth_dev);
                return 0;
        }
 
@@ -677,7 +670,9 @@ rte_pmd_null_remove(struct rte_vdev_device *dev)
        if (eth_dev == NULL)
                return -1;
 
-       rte_free(eth_dev->data->dev_private);
+       if (rte_eal_process_type() == RTE_PROC_PRIMARY)
+               /* mac_addrs must not be freed alone because part of dev_private */
+               eth_dev->data->mac_addrs = NULL;
 
        rte_eth_dev_release_port(eth_dev);
 
@@ -695,9 +690,7 @@ RTE_PMD_REGISTER_PARAM_STRING(net_null,
        "size=<int> "
        "copy=<int>");
 
-RTE_INIT(eth_null_init_log);
-static void
-eth_null_init_log(void)
+RTE_INIT(eth_null_init_log)
 {
        eth_null_logtype = rte_log_register("pmd.net.null");
        if (eth_null_logtype >= 0)