[dpdk-dev] [PATCH 02/20] thunderx/nicvf: add pmd skeleton
> -Original Message- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Jerin Jacob > Sent: Saturday, May 7, 2016 4:16 PM > To: dev at dpdk.org > Cc: thomas.monjalon at 6wind.com; Richardson, Bruce > ; Jerin Jacob > ; Maciej Czekaj > ; Kamil Rytarowski > ; Zyta Szpak > ; Slawomir Rosek ; > Radoslaw Biernacki > Subject: [dpdk-dev] [PATCH 02/20] thunderx/nicvf: add pmd skeleton > > Introduce driver initialization and enable build infrastructure for nicvf pmd > driver. > > By default, It is enabled only for defconfig_arm64-thunderx-* config as it is > an > inbuilt NIC device. > > --- > diff --git a/drivers/net/thunderx/nicvf_ethdev.c > b/drivers/net/thunderx/nicvf_ethdev.c > new file mode 100644 > index 000..3c545b4 > +static int > +nicvf_periodic_alarm_stop(struct nicvf *nic) { > + int ret; > + > + ret = rte_intr_callback_unregister(>intr_handle, > +nicvf_interrupt, nic); > + ret |= close(nic->intr_handle.fd); > + return ret; > +} > + > + You can remove extra blank line > +/* Initialise and register driver with DPDK Application */ static const Typo Initialise. > + > + nic->device_id = pci_dev->id.device_id; > + nic->vendor_id = pci_dev->id.vendor_id; > + nic->subsystem_device_id = pci_dev->id.subsystem_device_id; > + nic->subsystem_vendor_id = pci_dev->id.subsystem_vendor_id; > + nic->eth_dev = eth_dev; > + > + PMD_INIT_LOG(DEBUG, "nicvf: device (%x:%x) %u:%u:%u:%u", > + pci_dev->id.vendor_id, pci_dev->id.device_id, > + pci_dev->addr.domain, pci_dev->addr.bus, > + pci_dev->addr.devid, pci_dev->addr.function); I see some indentation issue mix of tabs + spaces here in LOG. > + > + if (nic->sqs_mode) { > + PMD_INIT_LOG(INFO, "Unsupported SQS VF detected, > Detaching..."); > + /* Detach port by returning postive error number */ typo, should be Positive. > diff --git a/drivers/net/thunderx/nicvf_ethdev.h > b/drivers/net/thunderx/nicvf_ethdev.h > new file mode 100644 > index 000..6431329 > --- /dev/null > +++ b/drivers/net/thunderx/nicvf_ethdev.h > @@ -0,0 +1,49 @@ > + > +#ifndef __THUNDERX_NICVF_ETHDEV_H__ > +#define __THUNDERX_NICVF_ETHDEV_H__ > + > +#include > + > +#define THUNDERX_NICVF_PMD_VERSION "1.0" > + > +#define NICVF_INTR_POLL_INTERVAL_MS 50 > + > +static inline struct nicvf* Should follow (foo *) not foo* > +nicvf_pmd_priv(struct rte_eth_dev *eth_dev) { > + return (struct nicvf *)eth_dev->data->dev_private; } > + > + > +#endif /* __THUNDERX_NICVF_ETHDEV_H__ */ multiple blank lines before #endif > +++ b/drivers/net/thunderx/nicvf_struct.h > + > +#ifndef _THUNDERX_NICVF_STRUCT_H > +#define _THUNDERX_NICVF_STRUCT_H > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include Should leave blank line between standard library headers and rte headers. Thanks, Reshma
[dpdk-dev] [PATCH 02/20] thunderx/nicvf: add pmd skeleton
On 05/07/2016 06:16 PM, Jerin Jacob wrote: > diff --git a/drivers/net/thunderx/Makefile b/drivers/net/thunderx/Makefile > new file mode 100644 > index 000..69bb750 > --- /dev/null > +++ b/drivers/net/thunderx/Makefile > @@ -0,0 +1,64 @@ > +# BSD LICENSE > +# > +# Copyright(c) 2016 Cavium Networks. All rights reserved. > +# All rights reserved. > +# > +# Redistribution and use in source and binary forms, with or without > +# modification, are permitted provided that the following conditions > +# are met: > +# > +# * Redistributions of source code must retain the above copyright > +# notice, this list of conditions and the following disclaimer. > +# * Redistributions in binary form must reproduce the above copyright > +# notice, this list of conditions and the following disclaimer in > +# the documentation and/or other materials provided with the > +# distribution. > +# * Neither the name of Cavium Networks nor the names of its > +# contributors may be used to endorse or promote products derived > +# from this software without specific prior written permission. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR > +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT > +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > +# > + > +include $(RTE_SDK)/mk/rte.vars.mk > + > +# > +# library name > +# > +LIB = librte_pmd_thunderx_nicvf.a > + > +CFLAGS += $(WERROR_FLAGS) > + > +EXPORT_MAP := rte_pmd_thunderx_nicvf_version.map > + > +LIBABIVER := 1 > + > +OBJS_BASE_DRIVER=$(patsubst %.c,%.o,$(notdir $(wildcard $(SRCDIR)/base/*.c))) > +$(foreach obj, $(OBJS_BASE_DRIVER), $(eval > CFLAGS_$(obj)+=$(CFLAGS_BASE_DRIVER))) > + > +VPATH += $(SRCDIR)/base > + > +# > +# all source are stored in SRCS-y > +# > +SRCS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += nicvf_hw.c > +SRCS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += nicvf_mbox.c > +SRCS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += nicvf_ethdev.c > + > + > +# this lib depends upon: > +DEPDIRS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += lib/librte_eal > lib/librte_ether > +DEPDIRS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += lib/librte_mempool > lib/librte_mbuf > +DEPDIRS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += lib/librte_net > lib/librte_malloc librte_malloc no longer exists for almost a year by now (see commits 2f9d47013e4d and aace9d0bcf58) but seems to be a popular thing to copy to new drivers :) - Panu -
[dpdk-dev] [PATCH 02/20] thunderx/nicvf: add pmd skeleton
On Mon, May 09, 2016 at 10:41:22AM -0700, Stephen Hemminger wrote: > On Sat, 7 May 2016 20:46:20 +0530 > Jerin Jacob wrote: > > > + > > +static inline struct nicvf* > > +nicvf_pmd_priv(struct rte_eth_dev *eth_dev) > > +{ > > + return (struct nicvf *)eth_dev->data->dev_private; > > +} > > Cast here is unnecessary because dev_private is void * Agree with all of your review comments in [PATCH 01/20] and [PATCH 02/20]. Will fix it in V2.
[dpdk-dev] [PATCH 02/20] thunderx/nicvf: add pmd skeleton
On Sat, 7 May 2016 20:46:20 +0530 Jerin Jacob wrote: > + > +static inline struct nicvf* > +nicvf_pmd_priv(struct rte_eth_dev *eth_dev) > +{ > + return (struct nicvf *)eth_dev->data->dev_private; > +} Cast here is unnecessary because dev_private is void *
[dpdk-dev] [PATCH 02/20] thunderx/nicvf: add pmd skeleton
On Sat, 7 May 2016 20:46:20 +0530 Jerin Jacob wrote: > + > +static struct rte_pci_id pci_id_nicvf_map[] = { > + { Another table that should be const
[dpdk-dev] [PATCH 02/20] thunderx/nicvf: add pmd skeleton
Introduce driver initialization and enable build infrastructure for nicvf pmd driver. By default, It is enabled only for defconfig_arm64-thunderx-* config as it is an inbuilt NIC device. Signed-off-by: Jerin Jacob Signed-off-by: Maciej Czekaj Signed-off-by: Kamil Rytarowski Signed-off-by: Zyta Szpak Signed-off-by: Slawomir Rosek Signed-off-by: Radoslaw Biernacki --- config/common_base | 10 + config/defconfig_arm64-thunderx-linuxapp-gcc | 10 + drivers/net/Makefile | 1 + drivers/net/thunderx/Makefile | 64 + drivers/net/thunderx/nicvf_ethdev.c| 274 + drivers/net/thunderx/nicvf_ethdev.h| 49 drivers/net/thunderx/nicvf_logs.h | 83 +++ drivers/net/thunderx/nicvf_struct.h| 124 ++ .../thunderx/rte_pmd_thunderx_nicvf_version.map| 4 + mk/rte.app.mk | 2 + 10 files changed, 621 insertions(+) create mode 100644 drivers/net/thunderx/Makefile create mode 100644 drivers/net/thunderx/nicvf_ethdev.c create mode 100644 drivers/net/thunderx/nicvf_ethdev.h create mode 100644 drivers/net/thunderx/nicvf_logs.h create mode 100644 drivers/net/thunderx/nicvf_struct.h create mode 100644 drivers/net/thunderx/rte_pmd_thunderx_nicvf_version.map diff --git a/config/common_base b/config/common_base index 35d38d9..a0e2b50 100644 --- a/config/common_base +++ b/config/common_base @@ -259,6 +259,16 @@ CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0 # +# Compile burst-oriented Cavium Thunderx NICVF PMD driver +# +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n + +# # Compile burst-oriented VIRTIO PMD driver # CONFIG_RTE_LIBRTE_VIRTIO_PMD=y diff --git a/config/defconfig_arm64-thunderx-linuxapp-gcc b/config/defconfig_arm64-thunderx-linuxapp-gcc index fe5e987..7940bbd 100644 --- a/config/defconfig_arm64-thunderx-linuxapp-gcc +++ b/config/defconfig_arm64-thunderx-linuxapp-gcc @@ -34,3 +34,13 @@ CONFIG_RTE_MACHINE="thunderx" CONFIG_RTE_CACHE_LINE_SIZE=128 + +# +# Compile Cavium Thunderx NICVF PMD driver +# +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=y +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n diff --git a/drivers/net/Makefile b/drivers/net/Makefile index 3386a67..58dafb5 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile @@ -49,6 +49,7 @@ DIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL) += null DIRS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += pcap DIRS-$(CONFIG_RTE_LIBRTE_PMD_RING) += ring DIRS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += szedata2 +DIRS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += thunderx DIRS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += virtio DIRS-$(CONFIG_RTE_LIBRTE_VMXNET3_PMD) += vmxnet3 DIRS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += xenvirt diff --git a/drivers/net/thunderx/Makefile b/drivers/net/thunderx/Makefile new file mode 100644 index 000..69bb750 --- /dev/null +++ b/drivers/net/thunderx/Makefile @@ -0,0 +1,64 @@ +# BSD LICENSE +# +# Copyright(c) 2016 Cavium Networks. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Cavium Networks nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR