git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
pci: separate ioport handlers per UIO driver
[dpdk.git]
/
lib
/
librte_eal
/
linuxapp
/
eal
/
eal_pci.c
diff --git
a/lib/librte_eal/linuxapp/eal/eal_pci.c
b/lib/librte_eal/linuxapp/eal/eal_pci.c
index
d2e8a09
..
74c6919
100644
(file)
--- a/
lib/librte_eal/linuxapp/eal/eal_pci.c
+++ b/
lib/librte_eal/linuxapp/eal/eal_pci.c
@@
-362,7
+362,7
@@
pci_scan_one(const char *dirname, uint16_t domain, uint8_t bus,
else
dev->kdrv = RTE_KDRV_UNKNOWN;
} else
else
dev->kdrv = RTE_KDRV_UNKNOWN;
} else
- dev->kdrv = RTE_KDRV_
UNKNOWN
;
+ dev->kdrv = RTE_KDRV_
NONE
;
/* device is valid, add in list (sorted) */
if (TAILQ_EMPTY(&pci_device_list)) {
/* device is valid, add in list (sorted) */
if (TAILQ_EMPTY(&pci_device_list)) {
@@
-607,28
+607,28
@@
int
rte_eal_pci_ioport_map(struct rte_pci_device *dev, int bar,
struct rte_pci_ioport *p)
{
rte_eal_pci_ioport_map(struct rte_pci_device *dev, int bar,
struct rte_pci_ioport *p)
{
- int ret;
+ int ret
= -1
;
switch (dev->kdrv) {
#ifdef VFIO_PRESENT
case RTE_KDRV_VFIO:
switch (dev->kdrv) {
#ifdef VFIO_PRESENT
case RTE_KDRV_VFIO:
- ret = -1;
if (pci_vfio_is_enabled())
ret = pci_vfio_ioport_map(dev, bar, p);
break;
#endif
case RTE_KDRV_IGB_UIO:
if (pci_vfio_is_enabled())
ret = pci_vfio_ioport_map(dev, bar, p);
break;
#endif
case RTE_KDRV_IGB_UIO:
+ ret = pci_uio_ioport_map(dev, bar, p);
+ break;
case RTE_KDRV_UIO_GENERIC:
ret = pci_uio_ioport_map(dev, bar, p);
break;
case RTE_KDRV_UIO_GENERIC:
ret = pci_uio_ioport_map(dev, bar, p);
break;
-
default
:
+
case RTE_KDRV_NONE
:
#if defined(RTE_ARCH_X86)
#if defined(RTE_ARCH_X86)
- /* special case for x86 ... */
ret = pci_ioport_map(dev, bar, p);
ret = pci_ioport_map(dev, bar, p);
-#else
- ret = -1;
#endif
break;
#endif
break;
+ default:
+ break;
}
if (!ret)
}
if (!ret)
@@
-648,15
+648,18
@@
rte_eal_pci_ioport_read(struct rte_pci_ioport *p,
break;
#endif
case RTE_KDRV_IGB_UIO:
break;
#endif
case RTE_KDRV_IGB_UIO:
+ pci_uio_ioport_read(p, data, len, offset);
+ break;
case RTE_KDRV_UIO_GENERIC:
pci_uio_ioport_read(p, data, len, offset);
break;
case RTE_KDRV_UIO_GENERIC:
pci_uio_ioport_read(p, data, len, offset);
break;
-
default
:
+
case RTE_KDRV_NONE
:
#if defined(RTE_ARCH_X86)
#if defined(RTE_ARCH_X86)
- /* special case for x86 ... */
pci_uio_ioport_read(p, data, len, offset);
#endif
break;
pci_uio_ioport_read(p, data, len, offset);
#endif
break;
+ default:
+ break;
}
}
}
}
@@
-671,43
+674,46
@@
rte_eal_pci_ioport_write(struct rte_pci_ioport *p,
break;
#endif
case RTE_KDRV_IGB_UIO:
break;
#endif
case RTE_KDRV_IGB_UIO:
+ pci_uio_ioport_write(p, data, len, offset);
+ break;
case RTE_KDRV_UIO_GENERIC:
pci_uio_ioport_write(p, data, len, offset);
break;
case RTE_KDRV_UIO_GENERIC:
pci_uio_ioport_write(p, data, len, offset);
break;
-
default
:
+
case RTE_KDRV_NONE
:
#if defined(RTE_ARCH_X86)
#if defined(RTE_ARCH_X86)
- /* special case for x86 ... */
pci_uio_ioport_write(p, data, len, offset);
#endif
break;
pci_uio_ioport_write(p, data, len, offset);
#endif
break;
+ default:
+ break;
}
}
int
rte_eal_pci_ioport_unmap(struct rte_pci_ioport *p)
{
}
}
int
rte_eal_pci_ioport_unmap(struct rte_pci_ioport *p)
{
- int ret;
+ int ret
= -1
;
switch (p->dev->kdrv) {
#ifdef VFIO_PRESENT
case RTE_KDRV_VFIO:
switch (p->dev->kdrv) {
#ifdef VFIO_PRESENT
case RTE_KDRV_VFIO:
- ret = -1;
if (pci_vfio_is_enabled())
ret = pci_vfio_ioport_unmap(p);
break;
#endif
case RTE_KDRV_IGB_UIO:
if (pci_vfio_is_enabled())
ret = pci_vfio_ioport_unmap(p);
break;
#endif
case RTE_KDRV_IGB_UIO:
+ ret = pci_uio_ioport_unmap(p);
+ break;
case RTE_KDRV_UIO_GENERIC:
ret = pci_uio_ioport_unmap(p);
break;
case RTE_KDRV_UIO_GENERIC:
ret = pci_uio_ioport_unmap(p);
break;
-
default
:
+
case RTE_KDRV_NONE
:
#if defined(RTE_ARCH_X86)
#if defined(RTE_ARCH_X86)
- /* special case for x86 ... nothing to do */
ret = 0;
ret = 0;
-#else
- ret = -1;
#endif
break;
#endif
break;
+ default:
+ break;
}
return ret;
}
return ret;