New upstream version 16.11.8
[deb_dpdk.git] / drivers / net / null / rte_eth_null.c
index 5e8e203..620f09a 100644 (file)
@@ -35,7 +35,7 @@
 #include <rte_ethdev.h>
 #include <rte_malloc.h>
 #include <rte_memcpy.h>
-#include <rte_dev.h>
+#include <rte_vdev.h>
 #include <rte_kvargs.h>
 #include <rte_spinlock.h>
 
@@ -69,6 +69,7 @@ struct null_queue {
 struct pmd_internals {
        unsigned packet_size;
        unsigned packet_copy;
+       uint8_t port_id;
 
        struct null_queue rx_null_queues[RTE_MAX_QUEUES_PER_PORT];
        struct null_queue tx_null_queues[RTE_MAX_QUEUES_PER_PORT];
@@ -92,7 +93,7 @@ static struct rte_eth_link pmd_link = {
        .link_speed = ETH_SPEED_NUM_10G,
        .link_duplex = ETH_LINK_FULL_DUPLEX,
        .link_status = ETH_LINK_DOWN,
-       .link_autoneg = ETH_LINK_SPEED_AUTONEG,
+       .link_autoneg = ETH_LINK_FIXED,
 };
 
 static uint16_t
@@ -114,6 +115,7 @@ eth_null_rx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs)
                bufs[i]->pkt_len = packet_size;
                bufs[i]->nb_segs = 1;
                bufs[i]->next = NULL;
+               bufs[i]->port = h->internals->port_id;
        }
 
        rte_atomic64_add(&(h->rx_pkts), i);
@@ -142,6 +144,7 @@ eth_null_copy_rx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs)
                bufs[i]->pkt_len = packet_size;
                bufs[i]->nb_segs = 1;
                bufs[i]->next = NULL;
+               bufs[i]->port = h->internals->port_id;
        }
 
        rte_atomic64_add(&(h->rx_pkts), i);
@@ -459,6 +462,12 @@ eth_rss_hash_conf_get(struct rte_eth_dev *dev,
        return 0;
 }
 
+static void
+eth_mac_address_set(__rte_unused struct rte_eth_dev *dev,
+                   __rte_unused struct ether_addr *addr)
+{
+}
+
 static const struct eth_dev_ops ops = {
        .dev_start = eth_dev_start,
        .dev_stop = eth_dev_stop,
@@ -469,6 +478,7 @@ static const struct eth_dev_ops ops = {
        .rx_queue_release = eth_queue_release,
        .tx_queue_release = eth_queue_release,
        .link_update = eth_link_update,
+       .mac_addr_set = eth_mac_address_set,
        .stats_get = eth_stats_get,
        .stats_reset = eth_stats_reset,
        .reta_update = eth_rss_reta_update,
@@ -514,7 +524,7 @@ eth_dev_null_create(const char *name,
                goto error;
 
        /* reserve an ethdev entry */
-       eth_dev = rte_eth_dev_allocate(name, RTE_ETH_DEV_VIRTUAL);
+       eth_dev = rte_eth_dev_allocate(name);
        if (eth_dev == NULL)
                goto error;
 
@@ -529,6 +539,7 @@ eth_dev_null_create(const char *name,
 
        internals->packet_size = packet_size;
        internals->packet_copy = packet_copy;
+       internals->port_id = eth_dev->data->port_id;
 
        internals->flow_type_rss_offloads =  ETH_RSS_PROTO_MASK;
        internals->reta_size = RTE_DIM(internals->reta_conf) * RTE_RETA_GROUP_SIZE;
@@ -607,7 +618,7 @@ get_packet_copy_arg(const char *key __rte_unused,
 }
 
 static int
-rte_pmd_null_devinit(const char *name, const char *params)
+rte_pmd_null_probe(const char *name, const char *params)
 {
        unsigned numa_node;
        unsigned packet_size = default_packet_size;
@@ -659,7 +670,7 @@ free_kvlist:
 }
 
 static int
-rte_pmd_null_devuninit(const char *name)
+rte_pmd_null_remove(const char *name)
 {
        struct rte_eth_dev *eth_dev = NULL;
 
@@ -682,11 +693,13 @@ rte_pmd_null_devuninit(const char *name)
        return 0;
 }
 
-static struct rte_driver pmd_null_drv = {
-       .name = "eth_null",
-       .type = PMD_VDEV,
-       .init = rte_pmd_null_devinit,
-       .uninit = rte_pmd_null_devuninit,
+static struct rte_vdev_driver pmd_null_drv = {
+       .probe = rte_pmd_null_probe,
+       .remove = rte_pmd_null_remove,
 };
 
-PMD_REGISTER_DRIVER(pmd_null_drv);
+RTE_PMD_REGISTER_VDEV(net_null, pmd_null_drv);
+RTE_PMD_REGISTER_ALIAS(net_null, eth_null);
+RTE_PMD_REGISTER_PARAM_STRING(net_null,
+       "size=<int> "
+       "copy=<int>");