ethdev: get rid of device type
[dpdk.git] / drivers / net / xenvirt / rte_eth_xenvirt.c
index 264aeda..2ffa54c 100644 (file)
@@ -39,6 +39,9 @@
 #include <sys/mman.h>
 #include <errno.h>
 #include <sys/user.h>
+#ifndef PAGE_SIZE
+#define PAGE_SIZE sysconf(_SC_PAGE_SIZE)
+#endif
 #include <linux/binfmts.h>
 #include <xen/xen-compat.h>
 #if __XEN_LATEST_INTERFACE_VERSION__ < 0x00040200
@@ -70,26 +73,15 @@ static int virtio_idx = 0;
 static const char *drivername = "xen virtio PMD";
 
 static struct rte_eth_link pmd_link = {
-               .link_speed = 10000,
+               .link_speed = ETH_SPEED_NUM_10G,
                .link_duplex = ETH_LINK_FULL_DUPLEX,
-               .link_status = 0
+               .link_status = ETH_LINK_DOWN,
+               .link_autoneg = ETH_LINK_SPEED_FIXED
 };
 
 static void
 eth_xenvirt_free_queues(struct rte_eth_dev *dev);
 
-static inline struct rte_mbuf *
-rte_rxmbuf_alloc(struct rte_mempool *mp)
-{
-       struct rte_mbuf *m;
-
-       m = __rte_mbuf_raw_alloc(mp);
-       __rte_mbuf_sanity_check_raw(m, 0);
-
-       return m;
-}
-
-
 static uint16_t
 eth_xenvirt_rx(void *q, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
 {
@@ -102,7 +94,7 @@ eth_xenvirt_rx(void *q, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
 
        nb_used = VIRTQUEUE_NUSED(rxvq);
 
-       rte_compiler_barrier(); /* rmb */
+       rte_smp_rmb();
        num = (uint16_t)(likely(nb_used <= nb_pkts) ? nb_used : nb_pkts);
        num = (uint16_t)(likely(num <= VIRTIO_MBUF_BURST_SZ) ? num : VIRTIO_MBUF_BURST_SZ);
        if (unlikely(num == 0)) return 0;
@@ -121,7 +113,7 @@ eth_xenvirt_rx(void *q, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
        }
        /* allocate new mbuf for the used descriptor */
        while (likely(!virtqueue_full(rxvq))) {
-               new_mbuf = rte_rxmbuf_alloc(rxvq->mpool);
+               new_mbuf = rte_mbuf_raw_alloc(rxvq->mpool);
                if (unlikely(new_mbuf == NULL)) {
                        break;
                }
@@ -153,7 +145,7 @@ eth_xenvirt_tx(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
        PMD_TX_LOG(DEBUG, "%d packets to xmit", nb_pkts);
        nb_used = VIRTQUEUE_NUSED(txvq);
 
-       rte_compiler_barrier();   /* rmb */
+       rte_smp_rmb();
 
        num = (uint16_t)(likely(nb_used <= VIRTIO_MBUF_BURST_SZ) ? nb_used : VIRTIO_MBUF_BURST_SZ);
        num = virtqueue_dequeue_burst(txvq, snd_pkts, len, num);
@@ -290,9 +282,9 @@ eth_dev_start(struct rte_eth_dev *dev)
        struct pmd_internals *pi = (struct pmd_internals *)dev->data->dev_private;
        int rv;
 
-       dev->data->dev_link.link_status = 1;
+       dev->data->dev_link.link_status = ETH_LINK_UP;
        while (!virtqueue_full(rxvq)) {
-               m = rte_rxmbuf_alloc(rxvq->mpool);
+               m = rte_mbuf_raw_alloc(rxvq->mpool);
                if (m == NULL)
                        break;
                /* Enqueue allocated buffers. */
@@ -318,7 +310,7 @@ eth_dev_stop(struct rte_eth_dev *dev)
 {
        struct pmd_internals *pi = (struct pmd_internals *)dev->data->dev_private;
 
-       dev->data->dev_link.link_status = 0;
+       dev->data->dev_link.link_status = ETH_LINK_DOWN;
        dev_stop_notify(pi->virtio_idx);
 }
 
@@ -431,10 +423,8 @@ gntalloc_vring_create(int queue_type, uint32_t size, int vtidx)
                va = NULL;
        }
 out:
-       if (pa_arr)
-               free(pa_arr);
-       if (gref_arr)
-               free(gref_arr);
+       free(pa_arr);
+       free(gref_arr);
 
        return va;
 }
@@ -640,7 +630,8 @@ eth_dev_xenvirt_create(const char *name, const char *params,
        struct pmd_internals *internals = NULL;
        struct rte_eth_dev *eth_dev = NULL;
        struct xenvirt_dict dict;
-       bzero(&dict, sizeof(struct xenvirt_dict));
+
+       memset(&dict, 0, sizeof(struct xenvirt_dict));
 
        RTE_LOG(INFO, PMD, "Creating virtio rings backed ethdev on numa socket %u\n",
                        numa_node);
@@ -663,7 +654,7 @@ eth_dev_xenvirt_create(const char *name, const char *params,
                goto err;
 
        /* 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 err;
 
@@ -769,10 +760,11 @@ rte_pmd_xenvirt_devuninit(const char *name)
 }
 
 static struct rte_driver pmd_xenvirt_drv = {
-       .name = "eth_xenvirt",
        .type = PMD_VDEV,
        .init = rte_pmd_xenvirt_devinit,
        .uninit = rte_pmd_xenvirt_devuninit,
 };
 
-PMD_REGISTER_DRIVER(pmd_xenvirt_drv);
+PMD_REGISTER_DRIVER(pmd_xenvirt_drv, net_xenvirt);
+DRIVER_REGISTER_PARAM_STRING(net_xenvirt,
+       "mac=<mac addr>");