enic: add device ids
[dpdk.git] / lib / librte_pmd_enic / enic_main.c
index e4f43c5..15313c2 100644 (file)
@@ -211,7 +211,6 @@ void enic_dev_stats_get(struct enic *enic, struct rte_eth_stats *r_stats)
 {
        struct vnic_stats *stats;
 
-       memset(r_stats, 0, sizeof(*r_stats));
        if (vnic_dev_stats_dump(enic->vdev, &stats)) {
                dev_err(enic, "Error in getting stats\n");
                return;
@@ -345,7 +344,7 @@ static int enic_rq_alloc_buf(struct vnic_rq *rq)
                hdr_mbuf->data_off = RTE_PKTMBUF_HEADROOM;
 
                hdr_mbuf->nb_segs = 2;
-               hdr_mbuf->port = rq->index;
+               hdr_mbuf->port = enic->port_id;
                hdr_mbuf->next = mbuf;
 
                dma_addr = (dma_addr_t)
@@ -360,7 +359,7 @@ static int enic_rq_alloc_buf(struct vnic_rq *rq)
                type = RQ_ENET_TYPE_NOT_SOP;
        } else {
                mbuf->nb_segs = 1;
-               mbuf->port = rq->index;
+               mbuf->port = enic->port_id;
        }
 
        mbuf->data_off = RTE_PKTMBUF_HEADROOM;
@@ -567,7 +566,6 @@ enic_intr_handler(__rte_unused struct rte_intr_handle *handle,
 {
        struct enic *enic = pmd_priv((struct rte_eth_dev *)arg);
 
-       dev_err(enic, "Err intr.\n");
        vnic_intr_return_all_credits(&enic->intr);
 
        enic_log_q_error(enic);
@@ -605,13 +603,11 @@ int enic_enable(struct enic *enic)
 
        vnic_dev_enable_wait(enic->vdev);
 
-#ifndef VFIO_PRESENT
        /* Register and enable error interrupt */
        rte_intr_callback_register(&(enic->pdev->intr_handle),
                enic_intr_handler, (void *)enic->rte_dev);
 
        rte_intr_enable(&(enic->pdev->intr_handle));
-#endif
        vnic_intr_unmask(&enic->intr);
 
        return 0;
@@ -844,10 +840,12 @@ static int enic_set_rsskey(struct enic *enic)
        dma_addr_t rss_key_buf_pa;
        union vnic_rss_key *rss_key_buf_va = NULL;
        static union vnic_rss_key rss_key = {
-               .key[0] = {.b = {85, 67, 83, 97, 119, 101, 115, 111, 109, 101}},
-               .key[1] = {.b = {80, 65, 76, 79, 117, 110, 105, 113, 117, 101}},
-               .key[2] = {.b = {76, 73, 78, 85, 88, 114, 111, 99, 107, 115}},
-               .key[3] = {.b = {69, 78, 73, 67, 105, 115, 99, 111, 111, 108}},
+               .key = {
+                       [0] = {.b = {85, 67, 83, 97, 119, 101, 115, 111, 109, 101}},
+                       [1] = {.b = {80, 65, 76, 79, 117, 110, 105, 113, 117, 101}},
+                       [2] = {.b = {76, 73, 78, 85, 88, 114, 111, 99, 107, 115}},
+                       [3] = {.b = {69, 78, 73, 67, 105, 115, 99, 111, 111, 108}},
+               }
        };
        int err;
        u8 name[NAME_MAX];
@@ -969,31 +967,6 @@ int enic_setup_finish(struct enic *enic)
        return 0;
 }
 
-#ifdef VFIO_PRESENT
-static void enic_eventfd_init(struct enic *enic)
-{
-       enic->eventfd = enic->pdev->intr_handle.fd;
-}
-
-void *enic_err_intr_handler(void *arg)
-{
-       struct enic *enic = (struct enic *)arg;
-       unsigned int intr = enic_msix_err_intr(enic);
-       ssize_t size;
-       uint64_t data;
-
-       while (1) {
-               size = read(enic->eventfd, &data, sizeof(data));
-               dev_err(enic, "Err intr.\n");
-               vnic_intr_return_all_credits(&enic->intr);
-
-               enic_log_q_error(enic);
-       }
-
-       return NULL;
-}
-#endif
-
 void enic_add_packet_filter(struct enic *enic)
 {
        /* Args -> directed, multicast, broadcast, promisc, allmulti */
@@ -1006,87 +979,11 @@ int enic_get_link_status(struct enic *enic)
        return vnic_dev_link_status(enic->vdev);
 }
 
-
-#ifdef VFIO_PRESENT
-static int enic_create_err_intr_thread(struct enic *enic)
-{
-       pthread_attr_t intr_attr;
-
-       /* create threads for error interrupt handling */
-       pthread_attr_init(&intr_attr);
-       pthread_attr_setstacksize(&intr_attr, 0x100000);
-
-       /* ERR */
-       if (pthread_create(&enic->err_intr_thread, &intr_attr,
-                   enic_err_intr_handler, (void *)enic)) {
-               dev_err(enic, "Failed to create err interrupt handler threads\n");
-               return -1;
-       }
-
-       pthread_attr_destroy(&intr_attr);
-
-       return 0;
-}
-
-
-static int enic_set_intr_mode(struct enic *enic)
-{
-       struct vfio_irq_set *irq_set;
-       int *fds;
-       int size;
-       int ret = -1;
-       int index;
-
-       if (enic->intr_count < 1) {
-               dev_err(enic, "Unsupported resource conf.\n");
-               return -1;
-       }
-       vnic_dev_set_intr_mode(enic->vdev, VNIC_DEV_INTR_MODE_MSIX);
-
-       enic->intr_count = 1;
-
-       enic_eventfd_init(enic);
-       size = sizeof(*irq_set) + (sizeof(int));
-
-       irq_set = rte_zmalloc("enic_vfio_irq", size, 0);
-       irq_set->argsz = size;
-       irq_set->index = VFIO_PCI_MSIX_IRQ_INDEX;
-       irq_set->start = 0;
-       irq_set->count = 1; /* For error interrupt only */
-       irq_set->flags = VFIO_IRQ_SET_DATA_EVENTFD |
-           VFIO_IRQ_SET_ACTION_TRIGGER;
-       fds = (int *)&irq_set->data;
-
-       fds[0] = enic->eventfd;
-
-       ret = ioctl(enic->pdev->intr_handle.vfio_dev_fd,
-               VFIO_DEVICE_SET_IRQS, irq_set);
-       rte_free(irq_set);
-       if (ret) {
-               dev_err(enic, "Failed to set eventfds for interrupts\n");
-               return -1;
-       }
-
-       enic_create_err_intr_thread(enic);
-       return 0;
-}
-
-static void enic_clear_intr_mode(struct enic *enic)
-{
-       vnic_dev_set_intr_mode(enic->vdev, VNIC_DEV_INTR_MODE_UNKNOWN);
-}
-#endif
-
 static void enic_dev_deinit(struct enic *enic)
 {
        struct rte_eth_dev *eth_dev = enic->rte_dev;
 
-       if (eth_dev->data->mac_addrs)
-               rte_free(eth_dev->data->mac_addrs);
-
-#ifdef VFIO_PRESENT
-       enic_clear_intr_mode(enic);
-#endif
+       rte_free(eth_dev->data->mac_addrs);
 }
 
 
@@ -1139,20 +1036,6 @@ static int enic_dev_init(struct enic *enic)
        */
        enic_get_res_counts(enic);
 
-#ifdef VFIO_PRESENT
-       /* Set interrupt mode based on resource counts and system
-        * capabilities
-        */
-       err = enic_set_intr_mode(enic);
-       if (err) {
-               rte_free(eth_dev->data->mac_addrs);
-               enic_clear_intr_mode(enic);
-               dev_err(dev, "Failed to set intr mode based on resource "\
-                       "counts and system capabilities, aborting\n");
-               return err;
-       }
-#endif
-
        vnic_dev_set_reset_flag(enic->vdev, 0);
 
        return 0;
@@ -1164,7 +1047,7 @@ int enic_probe(struct enic *enic)
        struct rte_pci_device *pdev = enic->pdev;
        int err = -1;
 
-       dev_info(enic, " Initializing ENIC PMD version %s\n", DRV_VERSION);
+       dev_debug(enic, " Initializing ENIC PMD version %s\n", DRV_VERSION);
 
        enic->bar0.vaddr = (void *)pdev->mem_resource[0].addr;
        enic->bar0.len = pdev->mem_resource[0].len;