From: Renyong Wan <wa...@3snic.com> Register device ID for 3SNIC ethernet adapter to support PCI ethdev probe and remove.
Signed-off-by: Steven Song <steven.s...@3snic.com> Signed-off-by: Renyong Wan <wa...@3snic.com> --- drivers/net/sssnic/base/sssnic_hw.h | 11 +++++++++ drivers/net/sssnic/sssnic_ethdev.c | 37 +++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 drivers/net/sssnic/base/sssnic_hw.h diff --git a/drivers/net/sssnic/base/sssnic_hw.h b/drivers/net/sssnic/base/sssnic_hw.h new file mode 100644 index 0000000000..db916b1977 --- /dev/null +++ b/drivers/net/sssnic/base/sssnic_hw.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018-2022 Shenzhen 3SNIC Information Technology Co., Ltd. + */ + +#ifndef _SSSNIC_HW_H_ +#define _SSSNIC_HW_H_ + +#define SSSNIC_PCI_VENDOR_ID 0x1F3F +#define SSSNIC_DEVICE_ID_STD 0x9020 + +#endif /* _SSSNIC_HW_H_ */ diff --git a/drivers/net/sssnic/sssnic_ethdev.c b/drivers/net/sssnic/sssnic_ethdev.c index 0f1017af9d..4f8b5c2684 100644 --- a/drivers/net/sssnic/sssnic_ethdev.c +++ b/drivers/net/sssnic/sssnic_ethdev.c @@ -6,25 +6,54 @@ #include <ethdev_pci.h> #include "sssnic_log.h" +#include "base/sssnic_hw.h" + +static int +sssnic_ethdev_init(struct rte_eth_dev *ethdev) +{ + RTE_SET_USED(ethdev); + PMD_INIT_FUNC_TRACE(); + + return -EINVAL; +} + +static int +sssnic_ethdev_uninit(struct rte_eth_dev *ethdev) +{ + RTE_SET_USED(ethdev); + PMD_INIT_FUNC_TRACE(); + + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + return -EINVAL; +} static int sssnic_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) { RTE_SET_USED(pci_drv); - RTE_SET_USED(pci_dev); PMD_INIT_FUNC_TRACE(); - return -EINVAL; + + return rte_eth_dev_pci_generic_probe(pci_dev, 0, sssnic_ethdev_init); } static int sssnic_pci_remove(struct rte_pci_device *pci_dev) { - RTE_SET_USED(pci_dev); PMD_INIT_FUNC_TRACE(); - return -EINVAL; + + return rte_eth_dev_pci_generic_remove(pci_dev, sssnic_ethdev_uninit); } +static const struct rte_pci_id sssnic_pci_id_map[] = { + { RTE_PCI_DEVICE(SSSNIC_PCI_VENDOR_ID, SSSNIC_DEVICE_ID_STD) }, + { .vendor_id = 0 }, +}; + static struct rte_pci_driver sssnic_pmd = { + .id_table = sssnic_pci_id_map, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING, .probe = sssnic_pci_probe, .remove = sssnic_pci_remove, }; -- 2.27.0