From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0ADF4A0A0C; Fri, 2 Jul 2021 15:22:34 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EF1DB413D6; Fri, 2 Jul 2021 15:22:33 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id DE7B3413D3 for ; Fri, 2 Jul 2021 15:22:31 +0200 (CEST) Received: from [192.168.38.17] (aros.oktetlabs.ru [192.168.38.17]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id 687917F52A; Fri, 2 Jul 2021 16:22:31 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 687917F52A DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=oktetlabs.ru; s=default; t=1625232151; bh=b08+woJZAJ6CVaUDhFf9BCU+/m53ClcT+XR5l0okvLQ=; h=Subject:To:References:From:Date:In-Reply-To; b=KKyvtPQyp5Q66pXxw3Qzgd2UfiAUqN+P6L6OzSvFzgSHvZhYU2z2L1igIgt9OHRnU sowcR8wDeyQWkuSkBOyliVHaB0Ux7mMQ8Byi3oYrvrAdRVPZM6KTOxNQZGhXvDfWZG 82M/ZkH0IFP15w/OAky7Lp12Rw4BX17sottAF3bw= To: Jiawen Wu , dev@dpdk.org References: <20210617110005.4132926-1-jiawenwu@trustnetic.com> <20210617110005.4132926-3-jiawenwu@trustnetic.com> From: Andrew Rybchenko Organization: OKTET Labs Message-ID: <5eb2494b-fcc9-8533-a057-1fec5f95eda8@oktetlabs.ru> Date: Fri, 2 Jul 2021 16:22:31 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210617110005.4132926-3-jiawenwu@trustnetic.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v6 02/19] net/ngbe: support probe and remove X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 6/17/21 1:59 PM, Jiawen Wu wrote: > Add device IDs for Wangxun 1Gb NICs, map device IDs to register ngbe > PMD. Add basic PCIe ethdev probe and remove. > > Signed-off-by: Jiawen Wu > --- > doc/guides/nics/features/ngbe.ini | 1 + > drivers/net/ngbe/base/meson.build | 18 +++++++ > drivers/net/ngbe/base/ngbe_devids.h | 83 +++++++++++++++++++++++++++++ > drivers/net/ngbe/meson.build | 6 +++ > drivers/net/ngbe/ngbe_ethdev.c | 66 +++++++++++++++++++++-- > drivers/net/ngbe/ngbe_ethdev.h | 16 ++++++ > 6 files changed, 186 insertions(+), 4 deletions(-) > create mode 100644 drivers/net/ngbe/base/meson.build > create mode 100644 drivers/net/ngbe/base/ngbe_devids.h > create mode 100644 drivers/net/ngbe/ngbe_ethdev.h > > diff --git a/doc/guides/nics/features/ngbe.ini b/doc/guides/nics/features/ngbe.ini > index a7a524defc..977286ac04 100644 > --- a/doc/guides/nics/features/ngbe.ini > +++ b/doc/guides/nics/features/ngbe.ini > @@ -4,6 +4,7 @@ > ; Refer to default.ini for the full list of available PMD features. > ; > [Features] > +Multiprocess aware = Y > Linux = Y > ARMv8 = Y > x86-32 = Y > diff --git a/drivers/net/ngbe/base/meson.build b/drivers/net/ngbe/base/meson.build > new file mode 100644 > index 0000000000..c5f6467743 > --- /dev/null > +++ b/drivers/net/ngbe/base/meson.build > @@ -0,0 +1,18 @@ > +# SPDX-License-Identifier: BSD-3-Clause > +# Copyright(c) 2018-2020 Beijing WangXun Technology Co., Ltd. > + > +sources = [] > + > +error_cflags = [] > + > +c_args = cflags > +foreach flag: error_cflags > + if cc.has_argument(flag) > + c_args += flag > + endif > +endforeach It is a dead code since error_cflags is empty. It should be added when the first flag is added to error_cflags. > + > +base_lib = static_library('ngbe_base', sources, > + dependencies: [static_rte_eal, static_rte_ethdev, static_rte_bus_pci], > + c_args: c_args) > +base_objs = base_lib.extract_all_objects() [snip] > diff --git a/drivers/net/ngbe/base/ngbe_devids.h b/drivers/net/ngbe/base/ngbe_devids.h > diff --git a/drivers/net/ngbe/meson.build b/drivers/net/ngbe/meson.build > index de2d7be716..81173fa7f0 100644 > --- a/drivers/net/ngbe/meson.build > +++ b/drivers/net/ngbe/meson.build > @@ -7,6 +7,12 @@ if is_windows > subdir_done() > endif > > +subdir('base') > +objs = [base_objs] > + > sources = files( > 'ngbe_ethdev.c', > ) > + > +includes += include_directories('base') > + Trailing empty line should be avoided > diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c > index f8e19066de..d8df7ef896 100644 > --- a/drivers/net/ngbe/ngbe_ethdev.c > +++ b/drivers/net/ngbe/ngbe_ethdev.c > @@ -7,23 +7,81 @@ > #include > #include > > +#include Shouldn't it be #include "ngbe_devids.h" since base is in includes? It definitely should be in double-quotes since it is not a system header. > +#include "ngbe_ethdev.h" > + > +/* > + * The set of PCI devices this driver supports > + */ > +static const struct rte_pci_id pci_id_ngbe_map[] = { > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860A2) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860A2S) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860A4) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860A4S) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860AL2) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860AL2S) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860AL4) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860AL4S) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860NCSI) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860A1) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860A1L) }, > + { RTE_PCI_DEVICE(PCI_VENDOR_ID_WANGXUN, NGBE_DEV_ID_EM_WX1860AL_W) }, > + { .vendor_id = 0, /* sentinel */ }, > +}; > + > +static int > +eth_ngbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused) > +{ > + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); > + > + if (rte_eal_process_type() != RTE_PROC_PRIMARY) > + return 0; > + > + rte_eth_copy_pci_info(eth_dev, pci_dev); > + > + return -EINVAL; > +} > + > +static int > +eth_ngbe_dev_uninit(struct rte_eth_dev *eth_dev) > +{ > + if (rte_eal_process_type() != RTE_PROC_PRIMARY) > + return 0; > + > + RTE_SET_USED(eth_dev); > + > + return -EINVAL; > +} > + > static int > eth_ngbe_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, > struct rte_pci_device *pci_dev) > { > - RTE_SET_USED(pci_dev); > - return -EINVAL; > + return rte_eth_dev_create(&pci_dev->device, pci_dev->device.name, > + sizeof(struct ngbe_adapter), > + eth_dev_pci_specific_init, pci_dev, > + eth_ngbe_dev_init, NULL); > } > > static int eth_ngbe_pci_remove(struct rte_pci_device *pci_dev) > { > - RTE_SET_USED(pci_dev); > - return -EINVAL; > + struct rte_eth_dev *ethdev; > + > + ethdev = rte_eth_dev_allocated(pci_dev->device.name); > + if (ethdev == NULL) > + return 0; > + > + return rte_eth_dev_destroy(ethdev, eth_ngbe_dev_uninit); > } > > static struct rte_pci_driver rte_ngbe_pmd = { > + .id_table = pci_id_ngbe_map, > + .drv_flags = RTE_PCI_DRV_NEED_MAPPING, > .probe = eth_ngbe_pci_probe, > .remove = eth_ngbe_pci_remove, > }; > > RTE_PMD_REGISTER_PCI(net_ngbe, rte_ngbe_pmd); > +RTE_PMD_REGISTER_PCI_TABLE(net_ngbe, pci_id_ngbe_map); > +RTE_PMD_REGISTER_KMOD_DEP(net_ngbe, "* igb_uio | uio_pci_generic | vfio-pci"); > + > diff --git a/drivers/net/ngbe/ngbe_ethdev.h b/drivers/net/ngbe/ngbe_ethdev.h > new file mode 100644 > index 0000000000..38f55f7fb1 > --- /dev/null > +++ b/drivers/net/ngbe/ngbe_ethdev.h > @@ -0,0 +1,16 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(c) 2018-2020 Beijing WangXun Technology Co., Ltd. 2021? > + * Copyright(c) 2010-2017 Intel Corporation > + */ > + > +#ifndef _NGBE_ETHDEV_H_ > +#define _NGBE_ETHDEV_H_ > + > +/* > + * Structure to store private data for each driver instance (for each port). > + */ > +struct ngbe_adapter { > + void *back; It should be a comment above what it is and why it is added. > +}; > + > +#endif /* _NGBE_ETHDEV_H_ */ >