| 1631 | } |
| 1632 | |
| 1633 | static int |
| 1634 | ifpga_rawdev_destroy(struct rte_pci_device *pci_dev) |
| 1635 | { |
| 1636 | int ret; |
| 1637 | struct rte_rawdev *rawdev; |
| 1638 | char name[RTE_RAWDEV_NAME_MAX_LEN]; |
| 1639 | |
| 1640 | if (!pci_dev) { |
| 1641 | IFPGA_RAWDEV_PMD_ERR("Invalid pci_dev of the device!"); |
| 1642 | ret = -EINVAL; |
| 1643 | return ret; |
| 1644 | } |
| 1645 | |
| 1646 | memset(name, 0, sizeof(name)); |
| 1647 | snprintf(name, RTE_RAWDEV_NAME_MAX_LEN, IFPGA_RAWDEV_NAME_FMT, |
| 1648 | pci_dev->addr.bus, pci_dev->addr.devid, pci_dev->addr.function); |
| 1649 | |
| 1650 | IFPGA_RAWDEV_PMD_INFO("Closing %s on NUMA node %d", |
| 1651 | name, rte_socket_id()); |
| 1652 | |
| 1653 | rawdev = rte_rawdev_pmd_get_named_dev(name); |
| 1654 | if (!rawdev) { |
| 1655 | IFPGA_RAWDEV_PMD_ERR("Invalid device name (%s)", name); |
| 1656 | return -EINVAL; |
| 1657 | } |
| 1658 | |
| 1659 | /* rte_rawdev_close is called by pmd_release */ |
| 1660 | ret = rte_rawdev_pmd_release(rawdev); |
| 1661 | if (ret) |
| 1662 | IFPGA_RAWDEV_PMD_DEBUG("Device cleanup failed"); |
| 1663 | |
| 1664 | return ret; |
| 1665 | } |
| 1666 | |
| 1667 | static int |
| 1668 | ifpga_rawdev_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, |
no test coverage detected