env_dpdk: break up dpdk_pci_device_copy_identifiers
Break this function up into three APIs instead: * dpdk_pci_device_get_addr * dpdk_pci_device_get_id * dpdk_pci_device_get_numa_node This more clearly delineates the requirements we have from the DPDK PCI device/driver APIs. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Ie585c8252d63c15c6e6884d60f8a064c3f0ab94f Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14684 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
This commit is contained in:
parent
1eb35ac7e3
commit
5be703ef35
@ -8,6 +8,7 @@
|
||||
|
||||
#include <rte_alarm.h>
|
||||
#include <rte_devargs.h>
|
||||
#include <rte_pci.h>
|
||||
#include "spdk/env.h"
|
||||
#include "spdk/log.h"
|
||||
#include "spdk/string.h"
|
||||
@ -351,6 +352,8 @@ pci_device_init(struct rte_pci_driver *_drv,
|
||||
{
|
||||
struct spdk_pci_driver *driver = (struct spdk_pci_driver *)_drv;
|
||||
struct spdk_pci_device *dev;
|
||||
struct rte_pci_addr *addr;
|
||||
struct rte_pci_id *id;
|
||||
int rc;
|
||||
|
||||
dev = calloc(1, sizeof(*dev));
|
||||
@ -360,7 +363,20 @@ pci_device_init(struct rte_pci_driver *_drv,
|
||||
|
||||
dev->dev_handle = _dev;
|
||||
|
||||
dpdk_pci_device_copy_identifiers(_dev, dev);
|
||||
addr = dpdk_pci_device_get_addr(_dev);
|
||||
dev->addr.domain = addr->domain;
|
||||
dev->addr.bus = addr->bus;
|
||||
dev->addr.dev = addr->devid;
|
||||
dev->addr.func = addr->function;
|
||||
|
||||
id = dpdk_pci_device_get_id(_dev);
|
||||
dev->id.class_id = id->class_id;
|
||||
dev->id.vendor_id = id->vendor_id;
|
||||
dev->id.device_id = id->device_id;
|
||||
dev->id.subvendor_id = id->subsystem_vendor_id;
|
||||
dev->id.subdevice_id = id->subsystem_device_id;
|
||||
|
||||
dev->socket_id = dpdk_pci_device_get_numa_node(_dev);
|
||||
dev->type = "pci";
|
||||
|
||||
dev->map_bar = map_bar_rte;
|
||||
|
@ -61,10 +61,22 @@ dpdk_pci_device_get_devargs(struct rte_pci_device *rte_dev)
|
||||
return g_dpdk_fn_table->pci_device_get_devargs(rte_dev);
|
||||
}
|
||||
|
||||
void
|
||||
dpdk_pci_device_copy_identifiers(struct rte_pci_device *_dev, struct spdk_pci_device *dev)
|
||||
struct rte_pci_addr *
|
||||
dpdk_pci_device_get_addr(struct rte_pci_device *rte_dev)
|
||||
{
|
||||
g_dpdk_fn_table->pci_device_copy_identifiers(_dev, dev);
|
||||
return g_dpdk_fn_table->pci_device_get_addr(rte_dev);
|
||||
}
|
||||
|
||||
struct rte_pci_id *
|
||||
dpdk_pci_device_get_id(struct rte_pci_device *rte_dev)
|
||||
{
|
||||
return g_dpdk_fn_table->pci_device_get_id(rte_dev);
|
||||
}
|
||||
|
||||
int
|
||||
dpdk_pci_device_get_numa_node(struct rte_pci_device *_dev)
|
||||
{
|
||||
return g_dpdk_fn_table->pci_device_get_numa_node(_dev);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -29,7 +29,9 @@ struct dpdk_fn_table {
|
||||
uint64_t (*pci_device_vtophys)(struct rte_pci_device *dev, uint64_t vaddr, size_t len);
|
||||
const char *(*pci_device_get_name)(struct rte_pci_device *);
|
||||
struct rte_devargs *(*pci_device_get_devargs)(struct rte_pci_device *);
|
||||
void (*pci_device_copy_identifiers)(struct rte_pci_device *_dev, struct spdk_pci_device *dev);
|
||||
struct rte_pci_addr *(*pci_device_get_addr)(struct rte_pci_device *);
|
||||
struct rte_pci_id *(*pci_device_get_id)(struct rte_pci_device *);
|
||||
int (*pci_device_get_numa_node)(struct rte_pci_device *_dev);
|
||||
int (*pci_device_map_bar)(struct rte_pci_device *dev, uint32_t bar,
|
||||
void **mapped_addr, uint64_t *phys_addr, uint64_t *size);
|
||||
int (*pci_device_read_config)(struct rte_pci_device *dev, void *value, uint32_t len,
|
||||
@ -55,7 +57,9 @@ int dpdk_pci_init(void);
|
||||
uint64_t dpdk_pci_device_vtophys(struct rte_pci_device *dev, uint64_t vaddr, size_t len);
|
||||
const char *dpdk_pci_device_get_name(struct rte_pci_device *);
|
||||
struct rte_devargs *dpdk_pci_device_get_devargs(struct rte_pci_device *);
|
||||
void dpdk_pci_device_copy_identifiers(struct rte_pci_device *_dev, struct spdk_pci_device *dev);
|
||||
struct rte_pci_addr *dpdk_pci_device_get_addr(struct rte_pci_device *);
|
||||
struct rte_pci_id *dpdk_pci_device_get_id(struct rte_pci_device *);
|
||||
int dpdk_pci_device_get_numa_node(struct rte_pci_device *_dev);
|
||||
int dpdk_pci_device_map_bar(struct rte_pci_device *dev, uint32_t bar,
|
||||
void **mapped_addr, uint64_t *phys_addr, uint64_t *size);
|
||||
int dpdk_pci_device_read_config(struct rte_pci_device *dev, void *value, uint32_t len,
|
||||
|
@ -59,19 +59,22 @@ pci_device_get_devargs_2207(struct rte_pci_device *rte_dev)
|
||||
return rte_dev->device.devargs;
|
||||
}
|
||||
|
||||
static void
|
||||
pci_device_copy_identifiers_2207(struct rte_pci_device *_dev, struct spdk_pci_device *dev)
|
||||
static struct rte_pci_addr *
|
||||
pci_device_get_addr_2207(struct rte_pci_device *_dev)
|
||||
{
|
||||
dev->addr.domain = _dev->addr.domain;
|
||||
dev->addr.bus = _dev->addr.bus;
|
||||
dev->addr.dev = _dev->addr.devid;
|
||||
dev->addr.func = _dev->addr.function;
|
||||
dev->id.class_id = _dev->id.class_id;
|
||||
dev->id.vendor_id = _dev->id.vendor_id;
|
||||
dev->id.device_id = _dev->id.device_id;
|
||||
dev->id.subvendor_id = _dev->id.subsystem_vendor_id;
|
||||
dev->id.subdevice_id = _dev->id.subsystem_device_id;
|
||||
dev->socket_id = _dev->device.numa_node;
|
||||
return &_dev->addr;
|
||||
}
|
||||
|
||||
static struct rte_pci_id *
|
||||
pci_device_get_id_2207(struct rte_pci_device *_dev)
|
||||
{
|
||||
return &_dev->id;
|
||||
}
|
||||
|
||||
static int
|
||||
pci_device_get_numa_node_2207(struct rte_pci_device *_dev)
|
||||
{
|
||||
return _dev->device.numa_node;
|
||||
}
|
||||
|
||||
static int
|
||||
@ -243,7 +246,9 @@ struct dpdk_fn_table fn_table_2207 = {
|
||||
.pci_device_vtophys = pci_device_vtophys_2207,
|
||||
.pci_device_get_name = pci_device_get_name_2207,
|
||||
.pci_device_get_devargs = pci_device_get_devargs_2207,
|
||||
.pci_device_copy_identifiers = pci_device_copy_identifiers_2207,
|
||||
.pci_device_get_addr = pci_device_get_addr_2207,
|
||||
.pci_device_get_id = pci_device_get_id_2207,
|
||||
.pci_device_get_numa_node = pci_device_get_numa_node_2207,
|
||||
.pci_device_map_bar = pci_device_map_bar_2207,
|
||||
.pci_device_read_config = pci_device_read_config_2207,
|
||||
.pci_device_write_config = pci_device_write_config_2207,
|
||||
|
Loading…
Reference in New Issue
Block a user