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 01E0BA0C4A; Tue, 15 Jun 2021 04:52:59 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B17494067A; Tue, 15 Jun 2021 04:52:59 +0200 (CEST) Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) by mails.dpdk.org (Postfix) with ESMTP id 05FFF40140 for ; Tue, 15 Jun 2021 04:52:57 +0200 (CEST) X-QQ-mid: bizesmtp32t1623725564tyugeigy Received: from jiawenwu (unknown [183.129.236.74]) by esmtp6.qq.com (ESMTP) with id ; Tue, 15 Jun 2021 10:52:43 +0800 (CST) X-QQ-SSF: 01400000000000D0E000B00A0000000 X-QQ-FEAT: Pvky8Oa9jq8gXUwkyha5f+P5zpB1LGXoq6g8pASu+RiT4QlQzQHBw20Aa4KEM /rVex/Cno12iGS87GqKFecdZkmG75Vdin8XhkeKFa6a9fxXQLO6f60zstCfvHfWZ4CQXceq 752lnXwQ3bWttS0qnIDh8oR8jOWOIrNEfTxQVIk3bg/A+xF+bM9a2bNNWAJMimrc+qiKY89 ys0WVpsYC4P4+q+XMiCImFIdyb2PBRxVfnyWnO0ak3s9z7WLGUChUibyTQvLHQ/r+Dz6tBB GWP3r9Jz4bEKA3bGnx/s1+ps3nz9QOxFcn1jME+ywKublLx5W7GQ1aXHC58Hie7lcleO206 sI4DDdRUE8K+t8gYuQ= X-QQ-GoodBg: 2 From: "Jiawen Wu" To: "'Andrew Rybchenko'" , References: <20210602094108.1575640-1-jiawenwu@trustnetic.com> <20210602094108.1575640-3-jiawenwu@trustnetic.com> <1cdddea5-d22e-6311-0123-80b84cbec0af@oktetlabs.ru> In-Reply-To: <1cdddea5-d22e-6311-0123-80b84cbec0af@oktetlabs.ru> Date: Tue, 15 Jun 2021 10:52:43 +0800 Message-ID: <009501d76191$83bc31e0$8b3495a0$@trustnetic.com>+58BC96C72B9B57DD MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQL8bWR0+7rAB5h3oc26F7ZoPPQu9gGKnkEcAtF6f7qop2RzUA== Content-Language: zh-cn X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybgforeign:qybgforeign2 X-QQ-Bgrelay: 1 Subject: Re: [dpdk-dev] [PATCH v5 02/24] net/ngbe: add device IDs 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 Tuesday, June 15, 2021 1:09 AM, Andrew Rybchenko wrote: > On 6/2/21 12:40 PM, Jiawen Wu wrote: > > Add device IDs for Wangxun 1Gb NICs, and register rte_ngbe_pmd. > > > > Signed-off-by: Jiawen Wu > > --- > > drivers/net/ngbe/base/meson.build | 18 +++++++ > > drivers/net/ngbe/base/ngbe_devids.h | 84 = +++++++++++++++++++++++++++++ > > drivers/net/ngbe/meson.build | 6 +++ > > drivers/net/ngbe/ngbe_ethdev.c | 51 ++++++++++++++++++ > > 4 files changed, 159 insertions(+) > > create mode 100644 drivers/net/ngbe/base/meson.build > > create mode 100644 drivers/net/ngbe/base/ngbe_devids.h > > > > 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 =3D [] > > + > > +error_cflags =3D [] > > + > > +c_args =3D cflags > > +foreach flag: error_cflags > > + if cc.has_argument(flag) > > + c_args +=3D flag > > + endif > > +endforeach > > + > > +base_lib =3D static_library('ngbe_base', sources, > > + dependencies: [static_rte_eal, static_rte_ethdev, = static_rte_bus_pci], > > + c_args: c_args) > > +base_objs =3D base_lib.extract_all_objects() > > diff --git a/drivers/net/ngbe/base/ngbe_devids.h > > b/drivers/net/ngbe/base/ngbe_devids.h > > new file mode 100644 > > index 0000000000..81671f71da > > --- /dev/null > > +++ b/drivers/net/ngbe/base/ngbe_devids.h > > @@ -0,0 +1,84 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright(c) 2018-2020 Beijing WangXun Technology Co., Ltd. > > + * Copyright(c) 2010-2017 Intel Corporation */ > > + > > +#ifndef _NGBE_DEVIDS_H_ > > +#define _NGBE_DEVIDS_H_ > > + > > +/* > > + * Vendor ID > > + */ > > +#ifndef PCI_VENDOR_ID_WANGXUN > > +#define PCI_VENDOR_ID_WANGXUN 0x8088 > > +#endif > > + > > +/* > > + * Device IDs > > + */ > > +#define NGBE_DEV_ID_EM_VF 0x0110 > > +#define NGBE_SUB_DEV_ID_EM_VF 0x0110 > > +#define NGBE_DEV_ID_EM 0x0100 > > +#define NGBE_SUB_DEV_ID_EM_MVL_RGMII 0x0200 > > +#define NGBE_SUB_DEV_ID_EM_MVL_SFP 0x0403 > > +#define NGBE_SUB_DEV_ID_EM_RTL_SGMII 0x0410 > > +#define NGBE_SUB_DEV_ID_EM_YT8521S_SFP 0x0460 > > + > > +#define NGBE_DEV_ID_EM_WX1860AL_W 0x0100 > > +#define NGBE_DEV_ID_EM_WX1860AL_W_VF 0x0110 > > +#define NGBE_DEV_ID_EM_WX1860A2 0x0101 > > +#define NGBE_DEV_ID_EM_WX1860A2_VF 0x0111 > > +#define NGBE_DEV_ID_EM_WX1860A2S 0x0102 > > +#define NGBE_DEV_ID_EM_WX1860A2S_VF 0x0112 > > +#define NGBE_DEV_ID_EM_WX1860A4 0x0103 > > +#define NGBE_DEV_ID_EM_WX1860A4_VF 0x0113 > > +#define NGBE_DEV_ID_EM_WX1860A4S 0x0104 > > +#define NGBE_DEV_ID_EM_WX1860A4S_VF 0x0114 > > +#define NGBE_DEV_ID_EM_WX1860AL2 0x0105 > > +#define NGBE_DEV_ID_EM_WX1860AL2_VF 0x0115 > > +#define NGBE_DEV_ID_EM_WX1860AL2S 0x0106 > > +#define NGBE_DEV_ID_EM_WX1860AL2S_VF 0x0116 > > +#define NGBE_DEV_ID_EM_WX1860AL4 0x0107 > > +#define NGBE_DEV_ID_EM_WX1860AL4_VF 0x0117 > > +#define NGBE_DEV_ID_EM_WX1860AL4S 0x0108 > > +#define NGBE_DEV_ID_EM_WX1860AL4S_VF 0x0118 > > +#define NGBE_DEV_ID_EM_WX1860NCSI 0x0109 > > +#define NGBE_DEV_ID_EM_WX1860NCSI_VF 0x0119 > > +#define NGBE_DEV_ID_EM_WX1860A1 0x010A > > +#define NGBE_DEV_ID_EM_WX1860A1_VF 0x011A > > +#define NGBE_DEV_ID_EM_WX1860A1L 0x010B > > +#define NGBE_DEV_ID_EM_WX1860A1L_VF 0x011B > > +#define NGBE_SUB_DEV_ID_EM_ZTE5201_RJ45 0x0100 > > +#define NGBE_SUB_DEV_ID_EM_SF100F_LP 0x0103 > > +#define NGBE_SUB_DEV_ID_EM_M88E1512_RJ45 0x0200 > > +#define NGBE_SUB_DEV_ID_EM_SF100HT 0x0102 > > +#define NGBE_SUB_DEV_ID_EM_SF200T 0x0201 > > +#define NGBE_SUB_DEV_ID_EM_SF200HT 0x0202 > > +#define NGBE_SUB_DEV_ID_EM_SF200T_S 0x0210 > > +#define NGBE_SUB_DEV_ID_EM_SF200HT_S 0x0220 > > +#define NGBE_SUB_DEV_ID_EM_SF200HXT 0x0230 > > +#define NGBE_SUB_DEV_ID_EM_SF400T 0x0401 > > +#define NGBE_SUB_DEV_ID_EM_SF400HT 0x0402 > > +#define NGBE_SUB_DEV_ID_EM_M88E1512_SFP 0x0403 > > +#define NGBE_SUB_DEV_ID_EM_SF400T_S 0x0410 > > +#define NGBE_SUB_DEV_ID_EM_SF400HT_S 0x0420 > > +#define NGBE_SUB_DEV_ID_EM_SF400HXT 0x0430 > > +#define NGBE_SUB_DEV_ID_EM_SF400_OCP 0x0440 > > +#define NGBE_SUB_DEV_ID_EM_SF400_LY 0x0450 > > +#define NGBE_SUB_DEV_ID_EM_SF400_LY_YT 0x0470 > > + > > +/* Assign excessive id with masks */ > > +#define NGBE_INTERNAL_MASK 0x000F > > +#define NGBE_OEM_MASK 0x00F0 > > +#define NGBE_WOL_SUP_MASK 0x4000 > > +#define NGBE_NCSI_SUP_MASK 0x8000 > > + > > +#define NGBE_INTERNAL_SFP 0x0003 > > +#define NGBE_OCP_CARD 0x0040 > > +#define NGBE_LY_M88E1512_SFP 0x0050 > > +#define NGBE_YT8521S_SFP 0x0060 > > +#define NGBE_LY_YT8521S_SFP 0x0070 > > +#define NGBE_WOL_SUP 0x4000 > > +#define NGBE_NCSI_SUP 0x8000 > > + > > +#endif /* _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 =3D [base_objs] > > + > > sources =3D files( > > 'ngbe_ethdev.c', > > ) > > + > > +includes +=3D include_directories('base') > > + > > diff --git a/drivers/net/ngbe/ngbe_ethdev.c > > b/drivers/net/ngbe/ngbe_ethdev.c index e424ff11a2..0f1fa86fe6 100644 > > --- a/drivers/net/ngbe/ngbe_ethdev.c > > +++ b/drivers/net/ngbe/ngbe_ethdev.c > > @@ -3,3 +3,54 @@ > > * Copyright(c) 2010-2017 Intel Corporation > > */ > > > > +#include > > + > > +#include > > + > > +/* > > + * The set of PCI devices this driver supports */ static const > > +struct rte_pci_id pci_id_ngbe_map[] =3D { > > + { 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) > > +}, >=20 > Are all these devices supported at once? Or do some devices require = extra code > and it would be clear to add its IDs later? Yes, all these device IDs need to be supported at once. Some extra code is added based on different subsystem IDs. >=20 > > + { .vendor_id =3D 0, /* sentinel */ }, > > +}; > > + > > +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 0; >=20 > IMHO more correct behaviour of such dummy functions is to return = failure. Get it. >=20 > > +} > > + > > +static int eth_ngbe_pci_remove(struct rte_pci_device *pci_dev) { > > + RTE_SET_USED(pci_dev); > > + > > + return 0; > > +} > > + > > +static struct rte_pci_driver rte_ngbe_pmd =3D { > > + .id_table =3D pci_id_ngbe_map, > > + .drv_flags =3D RTE_PCI_DRV_NEED_MAPPING | > > + RTE_PCI_DRV_INTR_LSC, >=20 > LSC should be added here when it is actually supported. >=20 > > + .probe =3D eth_ngbe_pci_probe, > > + .remove =3D 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"); > > + > >