net/hns3: add build and doc infrastructure

This patch adds build and doc infrastructure for hns3 PMD driver.

Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Signed-off-by: Chunsong Feng <fengchunsong@huawei.com>
Signed-off-by: Hao Chen <chenhao164@huawei.com>
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
Wei Hu (Xavier) 2019-09-26 22:01:47 +08:00 committed by Ferruh Yigit
parent 702928afeb
commit 565829db8b
20 changed files with 167 additions and 0 deletions

View file

@ -605,6 +605,14 @@ F: drivers/net/enic/
F: doc/guides/nics/enic.rst
F: doc/guides/nics/features/enic.ini
Hisilicon hns3
M: Wei Hu (Xavier) <xavier.huwei@huawei.com>
M: Min Hu (Connor) <humin29@huawei.com>
M: Yisen Zhuang <yisen.zhuang@huawei.com>
F: drivers/net/hns3/
F: doc/guides/nics/hns3.rst
F: doc/guides/nics/features/hns3.ini
Huawei hinic
M: Ziyang Xuan <xuanziyang2@huawei.com>
M: Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>

View file

@ -281,6 +281,11 @@ CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
#
CONFIG_RTE_LIBRTE_HINIC_PMD=n
#
# Compile burst-oriented HNS3 PMD driver
#
CONFIG_RTE_LIBRTE_HNS3_PMD=n
#
# Compile burst-oriented IXGBE PMD driver
#

View file

@ -63,3 +63,8 @@ CONFIG_RTE_LIBRTE_ENETC_PMD=y
# HINIC PMD driver
#
CONFIG_RTE_LIBRTE_HINIC_PMD=y
#
# Hisilicon HNS3 PMD driver
#
CONFIG_RTE_LIBRTE_HNS3_PMD=y

View file

@ -55,4 +55,5 @@ CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
CONFIG_RTE_LIBRTE_AVP_PMD=n
CONFIG_RTE_LIBRTE_NFP_PMD=n
CONFIG_RTE_LIBRTE_HINIC_PMD=n
CONFIG_RTE_LIBRTE_HNS3_PMD=n
CONFIG_RTE_LIBRTE_PMD_IOAT_RAWDEV=n

View file

@ -59,3 +59,8 @@ CONFIG_RTE_MAX_MEM_MB=2048
# HINIC PMD is not supported on 32-bit
#
CONFIG_RTE_LIBRTE_HINIC_PMD=n
#
# HNS3 PMD is not supported on 32-bit
#
CONFIG_RTE_LIBRTE_HNS3_PMD=n

View file

@ -59,3 +59,8 @@ CONFIG_RTE_MAX_MEM_MB=2048
# HINIC PMD is not supported on 32-bit
#
CONFIG_RTE_LIBRTE_HINIC_PMD=n
#
# HNS3 PMD is not supported on 32-bit
#
CONFIG_RTE_LIBRTE_HNS3_PMD=n

View file

@ -30,4 +30,5 @@ CONFIG_RTE_LIBRTE_FM10K_PMD=n
CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
CONFIG_RTE_LIBRTE_AVP_PMD=n
CONFIG_RTE_LIBRTE_HINIC_PMD=n
CONFIG_RTE_LIBRTE_HNS3_PMD=n
CONFIG_RTE_LIBRTE_PMD_IOAT_RAWDEV=n

View file

@ -22,3 +22,8 @@ CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
# HINIC PMD build is not supported using icc toolchain
#
CONFIG_RTE_LIBRTE_HINIC_PMD=n
#
# HNS3 PMD build is not supported using icc toolchain
#
CONFIG_RTE_LIBRTE_HNS3_PMD=n

View file

@ -39,3 +39,8 @@ CONFIG_RTE_MAX_MEM_MB=2048
# HINIC PMD is not supported on 32-bit
#
CONFIG_RTE_LIBRTE_HINIC_PMD=n
#
# HNS3 PMD is not supported on 32-bit
#
CONFIG_RTE_LIBRTE_HNS3_PMD=n

View file

@ -0,0 +1,9 @@
;
; Supported features of the 'hns3' network poll mode driver.
;
; Refer to default.ini for the full list of available PMD features.
;
[Features]
Linux UIO = Y
Linux VFIO = Y
ARMv8 = Y

60
doc/guides/nics/hns3.rst Normal file
View file

@ -0,0 +1,60 @@
.. SPDX-License-Identifier: BSD-3-Clause
Copyright(c) 2018-2019 Hisilicon Limited.
HNS3 Poll Mode Driver
===============================
The hns3 PMD (librte_pmd_hns3) provides poll mode driver support
for the inbuilt Hisilicon Network Subsystem(HNS) network engine
found in the Hisilicon Kunpeng 920 SoC.
Features
--------
Features of the HNS3 PMD are:
- Multiple queues for TX and RX
- Receive Side Scaling (RSS)
- Packet type information
- Checksum offload
- Promiscuous mode
- Multicast mode
- Port hardware statistics
- Jumbo frames
- Link state information
- VLAN stripping
- NUMA support
Prerequisites
-------------
- Get the information about Kunpeng920 chip using
`<http://www.hisilicon.com/en/Products/ProductList/Kunpeng>`_.
- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
Pre-Installation Configuration
------------------------------
Config File Options
~~~~~~~~~~~~~~~~~~~
The following options can be modified in the ``config`` file.
Please note that enabling debugging options may affect system performance.
- ``CONFIG_RTE_LIBRTE_HNS3_PMD`` (default ``y``)
Driver compilation and testing
------------------------------
Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
for details.
Limitations or Known issues
---------------------------
Currently, we only support VF device is bound to vfio_pci or
igb_uio and then driven by DPDK driver when PF is driven by
kernel mode hns3 ethdev driver, VF is not supported when PF
is driven by DPDK driver.
Build with ICC is not supported yet.
X86-32, Power8, ARMv7 and BSD are not supported yet.

View file

@ -28,6 +28,7 @@ Network Interface Controller Drivers
enic
fm10k
hinic
hns3
i40e
ice
ifc

View file

@ -56,6 +56,12 @@ New Features
Also, make sure to start the actual text at the margin.
=========================================================
* **Added Hisilicon hns3 PMD.**
Added the new ``hns3`` net driver for the inbuilt Hisilicon Network
Subsystem 3(HNS3) network engine found in the Hisilicon Kunpeng 920 SoC.
See the :doc:`../nics/hns3` guide for more details on this new driver.
* **Updated the Intel ice driver.**
Updated the Intel ice driver with new features and improvements, including:

View file

@ -30,6 +30,7 @@ DIRS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += enic
DIRS-$(CONFIG_RTE_LIBRTE_PMD_FAILSAFE) += failsafe
DIRS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k
DIRS-$(CONFIG_RTE_LIBRTE_HINIC_PMD) += hinic
DIRS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3
DIRS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += i40e
DIRS-$(CONFIG_RTE_LIBRTE_IAVF_PMD) += iavf
DIRS-$(CONFIG_RTE_LIBRTE_ICE_PMD) += ice

23
drivers/net/hns3/Makefile Normal file
View file

@ -0,0 +1,23 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018-2019 Hisilicon Limited.
include $(RTE_SDK)/mk/rte.vars.mk
#
# library name
#
LIB = librte_pmd_hns3.a
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
EXPORT_MAP := rte_pmd_hns3_version.map
LIBABIVER := 1
#
# all source are stored in SRCS-y
#
SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_ethdev.c
include $(RTE_SDK)/mk/rte.lib.mk

View file

@ -0,0 +1,3 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2018-2019 Hisilicon Limited.
*/

View file

@ -0,0 +1,19 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018-2019 Hisilicon Limited
if not is_linux
build = false
reason = 'only supported on Linux'
subdir_done()
endif
if arch_subdir != 'x86' and arch_subdir != 'arm' or not dpdk_conf.get('RTE_ARCH_64')
build = false
reason = 'only supported on x86_64 and arm64'
subdir_done()
endif
sources = files(
'hns3_ethdev.c',
)
deps += ['hash']

View file

@ -0,0 +1,3 @@
DPDK_19.11 {
local: *;
};

View file

@ -18,6 +18,7 @@ drivers = ['af_packet',
'failsafe',
'fm10k', 'i40e',
'hinic',
'hns3',
'iavf',
'ice',
'ifc',

View file

@ -172,6 +172,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += -lrte_pmd_enic
_LDLIBS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += -lrte_pmd_fm10k
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_FAILSAFE) += -lrte_pmd_failsafe
_LDLIBS-$(CONFIG_RTE_LIBRTE_HINIC_PMD) += -lrte_pmd_hinic
_LDLIBS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += -lrte_pmd_hns3
_LDLIBS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += -lrte_pmd_i40e
_LDLIBS-$(CONFIG_RTE_LIBRTE_IAVF_PMD) += -lrte_pmd_iavf
_LDLIBS-$(CONFIG_RTE_LIBRTE_ICE_PMD) += -lrte_pmd_ice