pci: add vlib_pci_get_msix_file_index 97/29297/2
authorDamjan Marion <damarion@cisco.com>
Wed, 7 Oct 2020 18:00:39 +0000 (20:00 +0200)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Thu, 8 Oct 2020 10:21:44 +0000 (10:21 +0000)
Type: improvement
Change-Id: Ibc15aa6f75e989b2b7caa9a57e3665b1ffc7cc18
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vlib/linux/pci.c
src/vlib/pci/pci.h

index a010e64..6078be2 100644 (file)
@@ -912,6 +912,17 @@ vlib_pci_enable_msix_irq (vlib_main_t * vm, vlib_pci_dev_handle_t h,
                        VFIO_IRQ_SET_ACTION_TRIGGER, fds);
 }
 
+uword
+vlib_pci_get_msix_file_index (vlib_main_t * vm, vlib_pci_dev_handle_t h,
+                             u16 index)
+{
+  linux_pci_device_t *p = linux_pci_get_device (h);
+  linux_pci_irq_t *irq = vec_elt_at_index (p->msix_irqs, index);
+  if (irq->fd == -1)
+    return ~0;
+  return irq->clib_file_index;
+}
+
 clib_error_t *
 vlib_pci_disable_msix_irq (vlib_main_t * vm, vlib_pci_dev_handle_t h,
                           u16 start, u16 count)
index d3b43ba..5aae597 100644 (file)
@@ -316,6 +316,8 @@ clib_error_t *vlib_pci_disable_msix_irq (vlib_main_t * vm,
                                         u16 count);
 clib_error_t *vlib_pci_map_dma (vlib_main_t * vm, vlib_pci_dev_handle_t h,
                                void *ptr);
+uword vlib_pci_get_msix_file_index (vlib_main_t * vm, vlib_pci_dev_handle_t h,
+                                   u16 index);
 
 int vlib_pci_supports_virtual_addr_dma (vlib_main_t * vm,
                                        vlib_pci_dev_handle_t h);