1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2015-2020
5 #include <rte_common.h>
6 #include <rte_ethdev_pci.h>
9 #include "txgbe_logs.h"
10 #include "base/txgbe.h"
11 #include "txgbe_ethdev.h"
14 * The set of PCI devices this driver supports
16 static const struct rte_pci_id pci_id_txgbe_map[] = {
17 { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_RAPTOR_SFP) },
18 { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, TXGBE_DEV_ID_WX1820_SFP) },
19 { .vendor_id = 0, /* sentinel */ },
23 eth_txgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused)
25 RTE_SET_USED(eth_dev);
31 eth_txgbe_dev_uninit(struct rte_eth_dev *eth_dev)
33 RTE_SET_USED(eth_dev);
39 eth_txgbe_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
40 struct rte_pci_device *pci_dev)
42 struct rte_eth_dev *pf_ethdev;
43 struct rte_eth_devargs eth_da;
46 if (pci_dev->device.devargs) {
47 retval = rte_eth_devargs_parse(pci_dev->device.devargs->args,
52 memset(ð_da, 0, sizeof(eth_da));
55 retval = rte_eth_dev_create(&pci_dev->device, pci_dev->device.name,
56 sizeof(struct txgbe_adapter),
57 eth_dev_pci_specific_init, pci_dev,
58 eth_txgbe_dev_init, NULL);
60 if (retval || eth_da.nb_representor_ports < 1)
63 pf_ethdev = rte_eth_dev_allocated(pci_dev->device.name);
64 if (pf_ethdev == NULL)
70 static int eth_txgbe_pci_remove(struct rte_pci_device *pci_dev)
72 struct rte_eth_dev *ethdev;
74 ethdev = rte_eth_dev_allocated(pci_dev->device.name);
78 return rte_eth_dev_destroy(ethdev, eth_txgbe_dev_uninit);
81 static struct rte_pci_driver rte_txgbe_pmd = {
82 .id_table = pci_id_txgbe_map,
83 .drv_flags = RTE_PCI_DRV_NEED_MAPPING |
85 .probe = eth_txgbe_pci_probe,
86 .remove = eth_txgbe_pci_remove,
89 RTE_PMD_REGISTER_PCI(net_txgbe, rte_txgbe_pmd);
90 RTE_PMD_REGISTER_PCI_TABLE(net_txgbe, pci_id_txgbe_map);
91 RTE_PMD_REGISTER_KMOD_DEP(net_txgbe, "* igb_uio | uio_pci_generic | vfio-pci");
93 RTE_LOG_REGISTER(txgbe_logtype_init, pmd.net.txgbe.init, NOTICE);
94 RTE_LOG_REGISTER(txgbe_logtype_driver, pmd.net.txgbe.driver, NOTICE);
96 #ifdef RTE_LIBRTE_TXGBE_DEBUG_RX
97 RTE_LOG_REGISTER(txgbe_logtype_rx, pmd.net.txgbe.rx, DEBUG);
99 #ifdef RTE_LIBRTE_TXGBE_DEBUG_TX
100 RTE_LOG_REGISTER(txgbe_logtype_tx, pmd.net.txgbe.tx, DEBUG);
103 #ifdef RTE_LIBRTE_TXGBE_DEBUG_TX_FREE
104 RTE_LOG_REGISTER(txgbe_logtype_tx_free, pmd.net.txgbe.tx_free, DEBUG);