[dpdk-dev] [PATCH v2] ntnic: add PMD driver

Finn Christensen fc at napatech.com
Thu Sep 8 16:22:02 CEST 2016



> -----Original Message-----
> From: Neil Horman [mailto:nhorman at tuxdriver.com]
> Sent: 8. september 2016 15:50
> To: Finn Christensen <fc at napatech.com>
> Cc: dev at dpdk.org; thomas.monjalon at 6wind.com;
> stephen at networkplumber.org
> Subject: Re: [dpdk-dev] [PATCH v2] ntnic: add PMD driver
>
> On Thu, Sep 08, 2016 at 11:14:24AM +0000, Finn Christensen wrote:
> > This is the Napatech NTNIC Poll Mode Driver (PMD) for DPDK.
> >
> > This patch adds support for Napatech NICs to DPDK. This is the initial
> > implementation.
> >
> > Signed-off-by: Finn Christensen <fc at napatech.com>
> > ---
> > v2:
> >   * Added information how to build the PMD without NIC
> >     Board Support Package
> >   * Fixed some formatting issues
> > ---
> >  MAINTAINERS                                 |   5 +
> >  config/common_base                          |   6 +
> >  doc/guides/nics/features/ntnic.ini          |  15 +
> >  doc/guides/nics/index.rst                   |   1 +
> >  doc/guides/nics/ntnic.rst                   | 145 +++++
> >  drivers/net/Makefile                        |   1 +
> >  drivers/net/ntnic/Makefile                  |  65 ++
> >  drivers/net/ntnic/rte_eth_ntnic.c           | 975
> ++++++++++++++++++++++++++++
> >  drivers/net/ntnic/rte_pmd_ntnic_version.map |   4 +
> >  mk/rte.app.mk                               |   7 +
> >  10 files changed, 1224 insertions(+)
> >  create mode 100644 doc/guides/nics/features/ntnic.ini
> >  create mode 100644 doc/guides/nics/ntnic.rst  create mode 100644
> > drivers/net/ntnic/Makefile  create mode 100644
> > drivers/net/ntnic/rte_eth_ntnic.c  create mode 100644
> > drivers/net/ntnic/rte_pmd_ntnic_version.map
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS index bc9aa02..d3e5f56 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -356,6 +356,11 @@ M: Sony Chacko <sony.chacko at qlogic.com>
> >  F: drivers/net/qede/
> >  F: doc/guides/nics/qede.rst
> >
> > +Napatech ntnic
> > +M: Finn Christensen <fc at napatech.com>
> > +F: drivers/net/ntnic/
> > +F: doc/guides/nics/ntnic.rst
> > +
> >  RedHat virtio
> >  M: Huawei Xie <huawei.xie at intel.com>
> >  M: Yuanhan Liu <yuanhan.liu at linux.intel.com> diff --git
> > a/config/common_base b/config/common_base index 7830535..4a3b2b8
> > 100644
> > --- a/config/common_base
> > +++ b/config/common_base
> > @@ -309,6 +309,12 @@ CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
> >  CONFIG_RTE_LIBRTE_PMD_PCAP=n
> >
> >  #
> > +# Compile software PMD backed by NTNIC files #
> > +CONFIG_RTE_LIBRTE_PMD_NTNIC=n
> > +
> > +
> > +#
> >  # Compile link bonding PMD library
> >  #
> >  CONFIG_RTE_LIBRTE_PMD_BOND=y
> > diff --git a/doc/guides/nics/features/ntnic.ini
> > b/doc/guides/nics/features/ntnic.ini
> > new file mode 100644
> > index 0000000..b6cfc5a
> > --- /dev/null
> > +++ b/doc/guides/nics/features/ntnic.ini
> > @@ -0,0 +1,15 @@
> > +;
> > +; Supported features of the 'ntnic' network poll mode driver.
> > +;
> > +; Refer to default.ini for the full list of available PMD features.
> > +;
> > +[Features]
> > +Link status          = Y
> > +Queue start/stop     = Y
> > +Promiscuous mode     = Y
> > +Jumbo frame          = Y
> > +Basic stats          = Y
> > +Multiprocess aware   = Y
> > +x86-32               = Y
> > +x86-64               = Y
> > +Usage doc            = Y
> > diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst
> > index 92d56a5..5c4205c 100644
> > --- a/doc/guides/nics/index.rst
> > +++ b/doc/guides/nics/index.rst
> > @@ -52,6 +52,7 @@ Network Interface Controller Drivers
> >      qede
> >      szedata2
> >      thunderx
> > +    ntnic
> >      virtio
> >      vhost
> >      vmxnet3
> > diff --git a/doc/guides/nics/ntnic.rst b/doc/guides/nics/ntnic.rst new
> > file mode 100644 index 0000000..8512d02
> > --- /dev/null
> > +++ b/doc/guides/nics/ntnic.rst
> > @@ -0,0 +1,145 @@
> > +..  BSD LICENSE
> > +    Copyright (c) 2016 Napatech A/S
> > +    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 Napatech 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.
> > +
> > +NTNIC Poll Mode Driver
> > +======================
> > +
> > +The NTNIC poll mode driver library (**librte_pmd_ntnic**) implements
> > +support for **Napatech NIC** 40/50 Gbps adapters.
> > +This PMD is implemented as a pure software virtual device and must be
> > +created by using the EAL --vdev=parameter (parameters are explained i
> detail later).
> > +It runs on top of the Napatech NFV NIC Board Support Package that
> > +must be installed and started.
> > +If no Napatech NIC is available, you can download the Napatech NTAPI
> > +library to build against.
> > +
> > +Supported Features
> > +------------------
> > +
> > +- RSS (Receive Side Scaling)
> > +- TSS (Transmit Side Scaling)
> > +- Promiscuous mode
> > +- Basic statistics
> > +
> > +
> > +Prerequisites
> > +-------------
> > +
> > +Requires Napatech NIC and Napatech NIC Board Support Package
> > +installed and running in version **0.3.0** or higher.
> > +This includes external libraries and kernel driver for resources
> > +allocations and initialization.
> > +If build only is required, download the Napatech NTAPI to build against.
> > +
> > +Pre-Installation Configuration
> > +------------------------------
> > +
> > +Environment variables
> > +~~~~~~~~~~~~~~~~~~~~~
> > +
> > +In order to compile the Napatech NIC PMD, user must:
> > +
> > +* Export the environment variable NAPATECH3_PATH with the path
> where
> > +  the Napatech Board Support Package libs was installed (default
> > +location is
> > +  /opt/napatech3).
> > +  Or if no Napatech NIC available:
> > +  Download the Napatech NTAPI libs from Github:
> > +  `Napatech NTAPI <https://github.com/napa-tech/ntapi>`_.
> > +
> NAK
>
> Most of the code you provide in this patch looks fine, but you require that it
> be linked with the ntapi and ntos libraries.  You provide those above in your
> external git tree...in binary only form. Thats not ok.  If you want this to be in
> any way supportable, or usable on any platforms DPDK supports besides the
> x86_64 build you've provided, then you need to make the libraries in that git
> tree available in source form
>
> Neil

No, our NIC is not supported on anything else than x86_64 platform. It would
not seem to make sense to compile it against anything else than what we
support. We assumed that the supported platforms was to be decribed in the
doc/guides/nics/features/<nic>.ini  file, and that is what we have done.
Many of the other supported nics in the DPDK does also only support either
x86 platform, or only a few others.

Even though we do not support other platforms, do we need to be able to
compile The ntnic PMD on other than x86_64 platforms?

Would a dynamic linking in the PMD module be preferred or a possible
solution?

Thanks!
Disclaimer: This email and any files transmitted with it may contain confidential information intended for the addressee(s) only. The information is not to be surrendered or copied to unauthorized persons. If you have received this communication in error, please notify the sender immediately and delete this e-mail from your system.


More information about the dev mailing list