MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ifpga_rawdev_create

Function ifpga_rawdev_create

dpdk/drivers/raw/ifpga/ifpga_rawdev.c:1529–1631  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1527}
1528
1529static int
1530ifpga_rawdev_create(struct rte_pci_device *pci_dev,
1531 int socket_id)
1532{
1533 int ret = 0;
1534 struct rte_rawdev *rawdev = NULL;
1535 struct ifpga_rawdev *dev = NULL;
1536 struct opae_adapter *adapter = NULL;
1537 struct opae_manager *mgr = NULL;
1538 struct opae_adapter_data_pci *data = NULL;
1539 char name[RTE_RAWDEV_NAME_MAX_LEN];
1540 int i;
1541
1542 if (!pci_dev) {
1543 IFPGA_RAWDEV_PMD_ERR("Invalid pci_dev of the device!");
1544 ret = -EINVAL;
1545 goto cleanup;
1546 }
1547
1548 memset(name, 0, sizeof(name));
1549 snprintf(name, RTE_RAWDEV_NAME_MAX_LEN, IFPGA_RAWDEV_NAME_FMT,
1550 pci_dev->addr.bus, pci_dev->addr.devid, pci_dev->addr.function);
1551
1552 IFPGA_RAWDEV_PMD_INFO("Init %s on NUMA node %d", name, rte_socket_id());
1553
1554 /* Allocate device structure */
1555 rawdev = rte_rawdev_pmd_allocate(name, sizeof(struct opae_adapter),
1556 socket_id);
1557 if (rawdev == NULL) {
1558 IFPGA_RAWDEV_PMD_ERR("Unable to allocate rawdevice");
1559 ret = -EINVAL;
1560 goto cleanup;
1561 }
1562
1563 ipn3ke_bridge_func.get_ifpga_rawdev = ifpga_rawdev_get;
1564 ipn3ke_bridge_func.set_i40e_sw_dev = rte_pmd_i40e_set_switch_dev;
1565
1566 dev = ifpga_rawdev_allocate(rawdev);
1567 if (dev == NULL) {
1568 IFPGA_RAWDEV_PMD_ERR("Unable to allocate ifpga_rawdevice");
1569 ret = -EINVAL;
1570 goto cleanup;
1571 }
1572 dev->aer_enable = 0;
1573
1574 /* alloc OPAE_FPGA_PCI data to register to OPAE hardware level API */
1575 data = opae_adapter_data_alloc(OPAE_FPGA_PCI);
1576 if (!data) {
1577 ret = -ENOMEM;
1578 goto cleanup;
1579 }
1580
1581 /* init opae_adapter_data_pci for device specific information */
1582 for (i = 0; i < PCI_MAX_RESOURCE; i++) {
1583 data->region[i].phys_addr = pci_dev->mem_resource[i].phys_addr;
1584 data->region[i].len = pci_dev->mem_resource[i].len;
1585 data->region[i].addr = pci_dev->mem_resource[i].addr;
1586 }

Callers 1

ifpga_rawdev_pci_probeFunction · 0.85

Calls 13

memsetFunction · 0.85
snprintfFunction · 0.85
rte_socket_idFunction · 0.85
rte_rawdev_pmd_allocateFunction · 0.85
ifpga_rawdev_allocateFunction · 0.85
opae_adapter_data_allocFunction · 0.85
rte_intr_dev_fd_getFunction · 0.85
opae_adapter_initFunction · 0.85
opae_adapter_enumerateFunction · 0.85
opae_adapter_get_mgrFunction · 0.85
ifpga_register_msix_irqFunction · 0.85
ifpga_monitor_start_funcFunction · 0.85

Tested by

no test coverage detected