-
-#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
-