For clarity make the setup of PCI resources for Linux
into a function rather than block of code #ifdef'd in middle
of dev_init.

---
 lib/librte_pmd_virtio/virtio_ethdev.c |   76 +++++++++++++++++++---------------
 1 file changed, 43 insertions(+), 33 deletions(-)

--- a/lib/librte_pmd_virtio/virtio_ethdev.c     2014-08-25 19:00:03.622515574 
-0700
+++ b/lib/librte_pmd_virtio/virtio_ethdev.c     2014-08-25 19:00:03.622515574 
-0700
@@ -706,6 +706,41 @@ virtio_has_msix(const struct rte_pci_add

        return (d != NULL);
 }
+
+/* Extract I/O port numbers from sysfs */
+static int virtio_resource_init(struct rte_pci_device *pci_dev)
+{
+       char dirname[PATH_MAX];
+       char filename[PATH_MAX];
+       unsigned long start, size;
+
+       if (get_uio_dev(&pci_dev->addr, dirname, sizeof(dirname)) < 0)
+               return -1;
+
+       /* get portio size */
+       snprintf(filename, sizeof(filename),
+                    "%s/portio/port0/size", dirname);
+       if (parse_sysfs_value(filename, &size) < 0) {
+               PMD_INIT_LOG(ERR, "%s(): cannot parse size",
+                            __func__);
+               return -1;
+       }
+
+       /* get portio start */
+       snprintf(filename, sizeof(filename),
+                "%s/portio/port0/start", dirname);
+       if (parse_sysfs_value(filename, &start) < 0) {
+               PMD_INIT_LOG(ERR, "%s(): cannot parse portio start",
+                            __func__);
+               return -1;
+       }
+       pci_dev->mem_resource[0].addr = (void *)(uintptr_t)start;
+       pci_dev->mem_resource[0].len =  (uint64_t)size;
+       PMD_INIT_LOG(DEBUG,
+                    "PCI Port IO found start=0x%lx with size=0x%lx",
+                    start, size);
+       return 0;
+}
 #else
 static int
 virtio_has_msix(const struct rte_pci_addr *loc __rte_unused)
@@ -713,6 +748,12 @@ virtio_has_msix(const struct rte_pci_add
        /* nic_uio does not enable interrupts, return 0 (false). */
        return 0;
 }
+
+static int virtio_resource_init(struct rte_pci_device *pci_dev __rte_unused)
+{
+       /* no setup required */
+       return 0;
+}
 #endif

 /*
@@ -749,40 +790,9 @@ eth_virtio_dev_init(__rte_unused struct
                return 0;

        pci_dev = eth_dev->pci_dev;
+       if (virtio_resource_init(pci_dev) < 0)
+               return -1;

-#ifdef RTE_EXEC_ENV_LINUXAPP
-       {
-               char dirname[PATH_MAX];
-               char filename[PATH_MAX];
-               unsigned long start, size;
-
-               if (get_uio_dev(&pci_dev->addr, dirname, sizeof(dirname)) < 0)
-                       return -1;
-
-               /* get portio size */
-               snprintf(filename, sizeof(filename),
-                            "%s/portio/port0/size", dirname);
-               if (parse_sysfs_value(filename, &size) < 0) {
-                       PMD_INIT_LOG(ERR, "%s(): cannot parse size",
-                                    __func__);
-                       return -1;
-               }
-
-               /* get portio start */
-               snprintf(filename, sizeof(filename),
-                            "%s/portio/port0/start", dirname);
-               if (parse_sysfs_value(filename, &start) < 0) {
-                       PMD_INIT_LOG(ERR, "%s(): cannot parse portio start",
-                                    __func__);
-                       return -1;
-               }
-               pci_dev->mem_resource[0].addr = (void *)(uintptr_t)start;
-               pci_dev->mem_resource[0].len =  (uint64_t)size;
-               PMD_INIT_LOG(DEBUG,
-                            "PCI Port IO found start=0x%lx with size=0x%lx",
-                            start, size);
-       }
-#endif
        hw->use_msix = virtio_has_msix(&pci_dev->addr);
        hw->io_base = (uint32_t)(uintptr_t)pci_dev->mem_resource[0].addr;


Reply via email to