[22/22] net/hns3: add hns3 build files
diff mbox series

Message ID 1566568031-45991-23-git-send-email-xavier.huwei@huawei.com
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers show
Series
  • add hns3 ethernet PMD driver
Related show

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Wei Hu (Xavier) Aug. 23, 2019, 1:47 p.m. UTC
This patch add build related files 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>
---
 MAINTAINERS                                  |  7 ++++
 config/common_armv8a_linux                   |  5 +++
 config/common_base                           |  5 +++
 config/defconfig_arm64-armv8a-linuxapp-clang |  2 +
 doc/guides/nics/features/hns3.ini            | 38 +++++++++++++++++++
 doc/guides/nics/hns3.rst                     | 55 ++++++++++++++++++++++++++++
 drivers/net/Makefile                         |  1 +
 drivers/net/hns3/Makefile                    | 43 ++++++++++++++++++++++
 drivers/net/hns3/meson.build                 | 19 ++++++++++
 drivers/net/hns3/rte_pmd_hns3_version.map    |  3 ++
 drivers/net/meson.build                      |  1 +
 mk/rte.app.mk                                |  1 +
 12 files changed, 180 insertions(+)
 create mode 100644 doc/guides/nics/features/hns3.ini
 create mode 100644 doc/guides/nics/hns3.rst
 create mode 100644 drivers/net/hns3/Makefile
 create mode 100644 drivers/net/hns3/meson.build
 create mode 100644 drivers/net/hns3/rte_pmd_hns3_version.map

Comments

Jerin Jacob Kollanukkaran Aug. 23, 2019, 2:08 p.m. UTC | #1
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Wei Hu (Xavier)
> Sent: Friday, August 23, 2019 7:17 PM
> To: dev@dpdk.org
> Cc: linuxarm@huawei.com; xavier_huwei@163.com;
> liudongdong3@huawei.com; forest.zhouchang@huawei.com
> Subject: [dpdk-dev] [PATCH 22/22] net/hns3: add hns3 build files
> 
> This patch add build related files 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>
> ---
> +# Hisilicon HNS3 PMD driver
> +#
> +CONFIG_RTE_LIBRTE_HNS3_PMD=y

# Please add meson support
# Move build infra to the first patch
# See git log drivers/net/octeontx2 as example


> diff --git a/config/common_base b/config/common_base
> index 8ef75c2..71a2c33 100644
> --- a/config/common_base
> +++ b/config/common_base
> @@ -282,6 +282,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
>  #
>  CONFIG_RTE_LIBRTE_IXGBE_PMD=y
> diff --git a/config/defconfig_arm64-armv8a-linuxapp-clang
> b/config/defconfig_arm64-armv8a-linuxapp-clang
> index d3b4dad..c73f5fb 100644
> --- a/config/defconfig_arm64-armv8a-linuxapp-clang
> +++ b/config/defconfig_arm64-armv8a-linuxapp-clang
> @@ -6,3 +6,5 @@
> 
>  CONFIG_RTE_TOOLCHAIN="clang"
>  CONFIG_RTE_TOOLCHAIN_CLANG=y
> +
> +CONFIG_RTE_LIBRTE_HNS3_PMD=n
> diff --git a/doc/guides/nics/features/hns3.ini
> b/doc/guides/nics/features/hns3.ini
> new file mode 100644
> index 0000000..d38d35e
> --- /dev/null
> +++ b/doc/guides/nics/features/hns3.ini
> @@ -0,0 +1,38 @@
> +;
> +; Supported features of the 'hns3' network poll mode driver.

Add doc changes when driver feature gets added.
# See git log drivers/net/octeontx2 as example

> +;
> +; Refer to default.ini for the full list of available PMD features.
> +;
> +[Features]
> +Link status          = Y
> +MTU update           = Y
> +Jumbo frame          = Y
> +Promiscuous mode     = Y
> +Allmulticast mode    = Y
> diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
> new file mode 100644
> index 0000000..c9d0253
> --- /dev/null
> +++ b/doc/guides/nics/hns3.rst
> @@ -0,0 +1,55 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2018-2019 Hisilicon Limited.
> +
> +HNS3 Poll Mode Driver
> +===============================
> +
> +The Hisilicon Network Subsystem is a long term evolution IP which is
> +supposed to be used in Hisilicon ICT SoCs such as Kunpeng 920.
> +
> +The HNS3 PMD (librte_pmd_hns3) provides poll mode driver support
> +for hns3(Hisilicon Network Subsystem 3) network engine.
> +
> +Features
> +--------
> +
> +Features of the HNS3 PMD are:
> +
> +- Arch support: ARMv8.

Is it an integrated NIC controller? Why it is supported only on ARMv8?
The reason why I asking because, Enabling CONFIG_RTE_LIBRTE_HNS3_PMD=y
only on arm64 will create a case where build fails for arm64 and passes for
x86. I would like to avoid such disparity. If the build is passing on x86 make it
enable in the common code, not in arm64 config.


> +- 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


> +cflags += '-DALLOW_EXPERIMENTAL_API'
> diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map
> b/drivers/net/hns3/rte_pmd_hns3_version.map
> new file mode 100644
> index 0000000..3aef967
> --- /dev/null
> +++ b/drivers/net/hns3/rte_pmd_hns3_version.map
> @@ -0,0 +1,3 @@
> +DPDK_19.08 {

Change to 19.11
Wei Hu (Xavier) Aug. 30, 2019, 3:22 a.m. UTC | #2
Hi,  Jerin


On 2019/8/23 22:08, Jerin Jacob Kollanukkaran wrote:
>> -----Original Message-----
>> From: dev <dev-bounces@dpdk.org> On Behalf Of Wei Hu (Xavier)
>> Sent: Friday, August 23, 2019 7:17 PM
>> To: dev@dpdk.org
>> Cc: linuxarm@huawei.com; xavier_huwei@163.com;
>> liudongdong3@huawei.com; forest.zhouchang@huawei.com
>> Subject: [dpdk-dev] [PATCH 22/22] net/hns3: add hns3 build files
>>
>> This patch add build related files 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>
>> ---
>> +# Hisilicon HNS3 PMD driver
>> +#
>> +CONFIG_RTE_LIBRTE_HNS3_PMD=y
> # Please add meson support
This patch already contains meson support,  thanks
> # Move build infra to the first patch
> # See git log drivers/net/octeontx2 as example
OK, I will  adjust the order of the patches in this series and send V2.
>
>
>> diff --git a/config/common_base b/config/common_base
>> index 8ef75c2..71a2c33 100644
>> --- a/config/common_base
>> +++ b/config/common_base
>> @@ -282,6 +282,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
>>  #
>>  CONFIG_RTE_LIBRTE_IXGBE_PMD=y
>> diff --git a/config/defconfig_arm64-armv8a-linuxapp-clang
>> b/config/defconfig_arm64-armv8a-linuxapp-clang
>> index d3b4dad..c73f5fb 100644
>> --- a/config/defconfig_arm64-armv8a-linuxapp-clang
>> +++ b/config/defconfig_arm64-armv8a-linuxapp-clang
>> @@ -6,3 +6,5 @@
>>
>>  CONFIG_RTE_TOOLCHAIN="clang"
>>  CONFIG_RTE_TOOLCHAIN_CLANG=y
>> +
>> +CONFIG_RTE_LIBRTE_HNS3_PMD=n
>> diff --git a/doc/guides/nics/features/hns3.ini
>> b/doc/guides/nics/features/hns3.ini
>> new file mode 100644
>> index 0000000..d38d35e
>> --- /dev/null
>> +++ b/doc/guides/nics/features/hns3.ini
>> @@ -0,0 +1,38 @@
>> +;
>> +; Supported features of the 'hns3' network poll mode driver.
> Add doc changes when driver feature gets added.
> # See git log drivers/net/octeontx2 as example
OK, I will modify the patches and send V2.
Thanks
>
>> +;
>> +; Refer to default.ini for the full list of available PMD features.
>> +;
>> +[Features]
>> +Link status          = Y
>> +MTU update           = Y
>> +Jumbo frame          = Y
>> +Promiscuous mode     = Y
>> +Allmulticast mode    = Y
>> diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
>> new file mode 100644
>> index 0000000..c9d0253
>> --- /dev/null
>> +++ b/doc/guides/nics/hns3.rst
>> @@ -0,0 +1,55 @@
>> +..  SPDX-License-Identifier: BSD-3-Clause
>> +    Copyright(c) 2018-2019 Hisilicon Limited.
>> +
>> +HNS3 Poll Mode Driver
>> +===============================
>> +
>> +The Hisilicon Network Subsystem is a long term evolution IP which is
>> +supposed to be used in Hisilicon ICT SoCs such as Kunpeng 920.
>> +
>> +The HNS3 PMD (librte_pmd_hns3) provides poll mode driver support
>> +for hns3(Hisilicon Network Subsystem 3) network engine.
>> +
>> +Features
>> +--------
>> +
>> +Features of the HNS3 PMD are:
>> +
>> +- Arch support: ARMv8.
> Is it an integrated NIC controller? Why it is supported only on ARMv8?
> The reason why I asking because, Enabling CONFIG_RTE_LIBRTE_HNS3_PMD=y
> only on arm64 will create a case where build fails for arm64 and passes for
> x86. I would like to avoid such disparity. If the build is passing on x86 make it
> enable in the common code, not in arm64 config.
Currently this network engine is integrated in the SoCs, the SoCs can be
used
as a PCIe EP integrated NIC controllers or be used as universal cpus on
the device,
such as servers. The network engine is accessed by ARM cores in the SoCs.
We will enabling CONFIG_RTE_LIBRTE_HNS3_PMD=y in common_linux config in V2.
Thanks.
>
>> +- 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
>
>> +cflags += '-DALLOW_EXPERIMENTAL_API'
>> diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map
>> b/drivers/net/hns3/rte_pmd_hns3_version.map
>> new file mode 100644
>> index 0000000..3aef967
>> --- /dev/null
>> +++ b/drivers/net/hns3/rte_pmd_hns3_version.map
>> @@ -0,0 +1,3 @@
>> +DPDK_19.08 {
> Change to 19.11
OK, I will modify the patches and send V2. Thanks.

Regards
Xavier
>
>
>
Stephen Hemminger Aug. 30, 2019, 6:16 a.m. UTC | #3
On Fri, 23 Aug 2019 21:47:11 +0800
"Wei Hu (Xavier)" <xavier.huwei@huawei.com> wrote:

Thanks for doing documentation on this driver.

> +The Hisilicon Network Subsystem is a long term evolution IP which is
> +supposed to be used in Hisilicon ICT SoCs such as Kunpeng 920.

This sentence needs some editing to remove marketing speak.
It is not clear what "long term evolution IP" means when read
by a DPDK user.  Why not just say that "Hisilcon Network Subsystem
(HNS) is used in System On Chip (SOC) devices such as the Kunpeng 920".

It is standard practice in technical documents to spell out
the meaning of acronyms on first use; then use the acronym
there after.
Stephen Hemminger Aug. 30, 2019, 6:17 a.m. UTC | #4
On Fri, 23 Aug 2019 21:47:11 +0800
"Wei Hu (Xavier)" <xavier.huwei@huawei.com> wrote:

> +Limitations or Known issues
> +---------------------------
> +Build with clang is not supported yet.
> +Currently, only ARMv8 architecture is supported.
> \ No newline at end of file

Pleas fix this. You need to add new line at end of
file. Vi does this by default, and Emacs has an option
to do this.
Ferruh Yigit Aug. 30, 2019, 2:57 p.m. UTC | #5
On 8/23/2019 3:08 PM, Jerin Jacob Kollanukkaran wrote:
>> -----Original Message-----
>> From: dev <dev-bounces@dpdk.org> On Behalf Of Wei Hu (Xavier)
>> Sent: Friday, August 23, 2019 7:17 PM
>> To: dev@dpdk.org
>> Cc: linuxarm@huawei.com; xavier_huwei@163.com;
>> liudongdong3@huawei.com; forest.zhouchang@huawei.com
>> Subject: [dpdk-dev] [PATCH 22/22] net/hns3: add hns3 build files
>>
>> This patch add build related files 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>
>> ---
>> +# Hisilicon HNS3 PMD driver
>> +#
>> +CONFIG_RTE_LIBRTE_HNS3_PMD=y
> 
> # Please add meson support
> # Move build infra to the first patch

+1 to move this to be beginning of the patchset

> # See git log drivers/net/octeontx2 as example
> 
> 
>> diff --git a/config/common_base b/config/common_base
>> index 8ef75c2..71a2c33 100644
>> --- a/config/common_base
>> +++ b/config/common_base
>> @@ -282,6 +282,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
>>  #
>>  CONFIG_RTE_LIBRTE_IXGBE_PMD=y
>> diff --git a/config/defconfig_arm64-armv8a-linuxapp-clang
>> b/config/defconfig_arm64-armv8a-linuxapp-clang
>> index d3b4dad..c73f5fb 100644
>> --- a/config/defconfig_arm64-armv8a-linuxapp-clang
>> +++ b/config/defconfig_arm64-armv8a-linuxapp-clang
>> @@ -6,3 +6,5 @@
>>
>>  CONFIG_RTE_TOOLCHAIN="clang"
>>  CONFIG_RTE_TOOLCHAIN_CLANG=y
>> +
>> +CONFIG_RTE_LIBRTE_HNS3_PMD=n
>> diff --git a/doc/guides/nics/features/hns3.ini
>> b/doc/guides/nics/features/hns3.ini
>> new file mode 100644
>> index 0000000..d38d35e
>> --- /dev/null
>> +++ b/doc/guides/nics/features/hns3.ini
>> @@ -0,0 +1,38 @@
>> +;
>> +; Supported features of the 'hns3' network poll mode driver.
> 
> Add doc changes when driver feature gets added.
> # See git log drivers/net/octeontx2 as example

+1, I put comments on the patches for same thing

> 
>> +;
>> +; Refer to default.ini for the full list of available PMD features.
>> +;
>> +[Features]
>> +Link status          = Y
>> +MTU update           = Y
>> +Jumbo frame          = Y
>> +Promiscuous mode     = Y
>> +Allmulticast mode    = Y
>> diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
>> new file mode 100644
>> index 0000000..c9d0253
>> --- /dev/null
>> +++ b/doc/guides/nics/hns3.rst
>> @@ -0,0 +1,55 @@
>> +..  SPDX-License-Identifier: BSD-3-Clause
>> +    Copyright(c) 2018-2019 Hisilicon Limited.
>> +
>> +HNS3 Poll Mode Driver
>> +===============================
>> +
>> +The Hisilicon Network Subsystem is a long term evolution IP which is
>> +supposed to be used in Hisilicon ICT SoCs such as Kunpeng 920.
>> +
>> +The HNS3 PMD (librte_pmd_hns3) provides poll mode driver support
>> +for hns3(Hisilicon Network Subsystem 3) network engine.
>> +
>> +Features
>> +--------
>> +
>> +Features of the HNS3 PMD are:
>> +
>> +- Arch support: ARMv8.
> 
> Is it an integrated NIC controller? Why it is supported only on ARMv8?
> The reason why I asking because, Enabling CONFIG_RTE_LIBRTE_HNS3_PMD=y
> only on arm64 will create a case where build fails for arm64 and passes for
> x86. I would like to avoid such disparity. If the build is passing on x86 make it
> enable in the common code, not in arm64 config.
> 
> 
>> +- 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
> 
> 
>> +cflags += '-DALLOW_EXPERIMENTAL_API'
>> diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map
>> b/drivers/net/hns3/rte_pmd_hns3_version.map
>> new file mode 100644
>> index 0000000..3aef967
>> --- /dev/null
>> +++ b/drivers/net/hns3/rte_pmd_hns3_version.map
>> @@ -0,0 +1,3 @@
>> +DPDK_19.08 {
> 
> Change to 19.11
>
Ferruh Yigit Aug. 30, 2019, 2:58 p.m. UTC | #6
On 8/23/2019 2:47 PM, Wei Hu (Xavier) wrote:
> This patch add build related files 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>
> ---
>  MAINTAINERS                                  |  7 ++++
>  config/common_armv8a_linux                   |  5 +++
>  config/common_base                           |  5 +++
>  config/defconfig_arm64-armv8a-linuxapp-clang |  2 +
>  doc/guides/nics/features/hns3.ini            | 38 +++++++++++++++++++
>  doc/guides/nics/hns3.rst                     | 55 ++++++++++++++++++++++++++++

This file needs to be added to the index file: 'doc/guides/nics/index.rst'

<...>

> diff --git a/config/defconfig_arm64-armv8a-linuxapp-clang b/config/defconfig_arm64-armv8a-linuxapp-clang
> index d3b4dad..c73f5fb 100644
> --- a/config/defconfig_arm64-armv8a-linuxapp-clang
> +++ b/config/defconfig_arm64-armv8a-linuxapp-clang
> @@ -6,3 +6,5 @@
>  
>  CONFIG_RTE_TOOLCHAIN="clang"
>  CONFIG_RTE_TOOLCHAIN_CLANG=y
> +
> +CONFIG_RTE_LIBRTE_HNS3_PMD=n

I can understand the architecture ones, but why clang is not supported? Can you
please add this support?
<...>

> diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
> new file mode 100644
> index 0000000..c9d0253
> --- /dev/null
> +++ b/doc/guides/nics/hns3.rst
> @@ -0,0 +1,55 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2018-2019 Hisilicon Limited.
> +
> +HNS3 Poll Mode Driver
> +===============================
> +
> +The Hisilicon Network Subsystem is a long term evolution IP which is
> +supposed to be used in Hisilicon ICT SoCs such as Kunpeng 920.

Can you please add a official link/reference to the product?


<...>

> @@ -0,0 +1,43 @@
> +# 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)
> +CFLAGS += -DALLOW_EXPERIMENTAL_API -fsigned-char

Why '-DALLOW_EXPERIMENTAL_API' is required? Can we remove it?

> +
> +LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
> +LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_hash
> +LDLIBS += -lrte_bus_pci

Are all these libraries really required, like kvargs? Can you please clean the
unused ones?

> +
> +EXPORT_MAP := rte_pmd_hns3_version.map
> +
> +LIBABIVER := 2

It should be 1.

<...>

> +# install this header file
> +SYMLINK-$(CONFIG_RTE_LIBRTE_HNS3_PMD)-include := hns3_ethdev.h

No need to expose the header file, it is not public header.

<...>

> @@ -0,0 +1,19 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2018-2019 Hisilicon Limited
> +
> +sources = files('hns3_cmd.c',
> +	'hns3_dcb.c',
> +	'hns3_intr.c',
> +	'hns3_ethdev.c',
> +	'hns3_ethdev_vf.c',
> +	'hns3_fdir.c',
> +	'hns3_flow.c',
> +	'hns3_mbx.c',
> +	'hns3_regs.c',
> +	'hns3_rss.c',
> +	'hns3_rxtx.c',
> +	'hns3_stats.c',
> +	'hns3_mp.c')
> +deps += ['hash']
> +
> +cflags += '-DALLOW_EXPERIMENTAL_API'

There is better way to do this in meson, please check other samples. But as the
makefile comment, does it really needed, if so can you please add the
experimental APIs used as a comment, to both meson and Makefile?

> diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
> new file mode 100644
> index 0000000..3aef967
> --- /dev/null
> +++ b/drivers/net/hns3/rte_pmd_hns3_version.map
> @@ -0,0 +1,3 @@
> +DPDK_19.08 {

DPDK_19.11
Ferruh Yigit Aug. 30, 2019, 3 p.m. UTC | #7
On 8/23/2019 2:47 PM, Wei Hu (Xavier) wrote:
> This patch add build related files 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>
> ---
>  MAINTAINERS                                  |  7 ++++
>  config/common_armv8a_linux                   |  5 +++
>  config/common_base                           |  5 +++
>  config/defconfig_arm64-armv8a-linuxapp-clang |  2 +
>  doc/guides/nics/features/hns3.ini            | 38 +++++++++++++++++++

There are separate PF and VF drivers in the patchset, this is mostly represent
by to different .ini files, hns3.ini and hns3_vf.ini, and can you please reflect
the feature differences into these files?
Ferruh Yigit Aug. 30, 2019, 3:12 p.m. UTC | #8
On 8/23/2019 2:47 PM, Wei Hu (Xavier) wrote:
> This patch add build related files 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>
> ---
>  MAINTAINERS                                  |  7 ++++
>  config/common_armv8a_linux                   |  5 +++
>  config/common_base                           |  5 +++
>  config/defconfig_arm64-armv8a-linuxapp-clang |  2 +
>  doc/guides/nics/features/hns3.ini            | 38 +++++++++++++++++++
>  doc/guides/nics/hns3.rst                     | 55 ++++++++++++++++++++++++++++
>  drivers/net/Makefile                         |  1 +
>  drivers/net/hns3/Makefile                    | 43 ++++++++++++++++++++++
>  drivers/net/hns3/meson.build                 | 19 ++++++++++
>  drivers/net/hns3/rte_pmd_hns3_version.map    |  3 ++
>  drivers/net/meson.build                      |  1 +
>  mk/rte.app.mk                                |  1 +

Can you also update the release notes to announce the new PMD:
'doc/guides/rel_notes/release_19_11.rst'
Wei Hu (Xavier) Aug. 31, 2019, 2:10 a.m. UTC | #9
On 2019/8/30 11:22, Wei Hu (Xavier) wrote:
> Hi,  Jerin
>
>
> On 2019/8/23 22:08, Jerin Jacob Kollanukkaran wrote:
>>> -----Original Message-----
>>> From: dev <dev-bounces@dpdk.org> On Behalf Of Wei Hu (Xavier)
>>> Sent: Friday, August 23, 2019 7:17 PM
>>> To: dev@dpdk.org
>>> Cc: linuxarm@huawei.com; xavier_huwei@163.com;
>>> liudongdong3@huawei.com; forest.zhouchang@huawei.com
>>> Subject: [dpdk-dev] [PATCH 22/22] net/hns3: add hns3 build files
>>>
>>> This patch add build related files 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>
>>> ---
>>> +# Hisilicon HNS3 PMD driver
>>> +#
>>> +CONFIG_RTE_LIBRTE_HNS3_PMD=y
>> # Please add meson support
> This patch already contains meson support,  thanks
>> # Move build infra to the first patch
>> # See git log drivers/net/octeontx2 as example
> OK, I will  adjust the order of the patches in this series and send V2.
>>
>>> diff --git a/config/common_base b/config/common_base
>>> index 8ef75c2..71a2c33 100644
>>> --- a/config/common_base
>>> +++ b/config/common_base
>>> @@ -282,6 +282,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
>>>  #
>>>  CONFIG_RTE_LIBRTE_IXGBE_PMD=y
>>> diff --git a/config/defconfig_arm64-armv8a-linuxapp-clang
>>> b/config/defconfig_arm64-armv8a-linuxapp-clang
>>> index d3b4dad..c73f5fb 100644
>>> --- a/config/defconfig_arm64-armv8a-linuxapp-clang
>>> +++ b/config/defconfig_arm64-armv8a-linuxapp-clang
>>> @@ -6,3 +6,5 @@
>>>
>>>  CONFIG_RTE_TOOLCHAIN="clang"
>>>  CONFIG_RTE_TOOLCHAIN_CLANG=y
>>> +
>>> +CONFIG_RTE_LIBRTE_HNS3_PMD=n
>>> diff --git a/doc/guides/nics/features/hns3.ini
>>> b/doc/guides/nics/features/hns3.ini
>>> new file mode 100644
>>> index 0000000..d38d35e
>>> --- /dev/null
>>> +++ b/doc/guides/nics/features/hns3.ini
>>> @@ -0,0 +1,38 @@
>>> +;
>>> +; Supported features of the 'hns3' network poll mode driver.
>> Add doc changes when driver feature gets added.
>> # See git log drivers/net/octeontx2 as example
> OK, I will modify the patches and send V2.
> Thanks
>>> +;
>>> +; Refer to default.ini for the full list of available PMD features.
>>> +;
>>> +[Features]
>>> +Link status          = Y
>>> +MTU update           = Y
>>> +Jumbo frame          = Y
>>> +Promiscuous mode     = Y
>>> +Allmulticast mode    = Y
>>> diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
>>> new file mode 100644
>>> index 0000000..c9d0253
>>> --- /dev/null
>>> +++ b/doc/guides/nics/hns3.rst
>>> @@ -0,0 +1,55 @@
>>> +..  SPDX-License-Identifier: BSD-3-Clause
>>> +    Copyright(c) 2018-2019 Hisilicon Limited.
>>> +
>>> +HNS3 Poll Mode Driver
>>> +===============================
>>> +
>>> +The Hisilicon Network Subsystem is a long term evolution IP which is
>>> +supposed to be used in Hisilicon ICT SoCs such as Kunpeng 920.
>>> +
>>> +The HNS3 PMD (librte_pmd_hns3) provides poll mode driver support
>>> +for hns3(Hisilicon Network Subsystem 3) network engine.
>>> +
>>> +Features
>>> +--------
>>> +
>>> +Features of the HNS3 PMD are:
>>> +
>>> +- Arch support: ARMv8.
>> Is it an integrated NIC controller? Why it is supported only on ARMv8?
>> The reason why I asking because, Enabling CONFIG_RTE_LIBRTE_HNS3_PMD=y
>> only on arm64 will create a case where build fails for arm64 and passes for
>> x86. I would like to avoid such disparity. If the build is passing on x86 make it
>> enable in the common code, not in arm64 config.
> Currently this network engine is integrated in the SoCs, the SoCs can be
> used
> as a PCIe EP integrated NIC controllers or be used as universal cpus on
> the device,
> such as servers. The network engine is accessed by ARM cores in the SoCs.
> We will enabling CONFIG_RTE_LIBRTE_HNS3_PMD=y in common_linux config in V2.
> Thanks.
Hi,  Jerin

    as a PCIe EP integrated NIC controllers -> as a PCIe EP Intelligent
NIC controllers

    Since it is currently only accessed by ARM cores on SoCs,
    maybe it is also reasonable to compile only on ARMv8, right?

    Regards

Xaiver
>>> +- 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
>>> +cflags += '-DALLOW_EXPERIMENTAL_API'
>>> diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map
>>> b/drivers/net/hns3/rte_pmd_hns3_version.map
>>> new file mode 100644
>>> index 0000000..3aef967
>>> --- /dev/null
>>> +++ b/drivers/net/hns3/rte_pmd_hns3_version.map
>>> @@ -0,0 +1,3 @@
>>> +DPDK_19.08 {
>> Change to 19.11
> OK, I will modify the patches and send V2. Thanks.
>
> Regards
> Xavier
>>
>>
>
> _______________________________________________
> Linuxarm mailing list
> Linuxarm@huawei.com
> http://hulk.huawei.com/mailman/listinfo/linuxarm
>
> .
>
Wei Hu (Xavier) Aug. 31, 2019, 8:07 a.m. UTC | #10
On 2019/8/30 23:12, Ferruh Yigit wrote:
> On 8/23/2019 2:47 PM, Wei Hu (Xavier) wrote:
>> This patch add build related files 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>
>> ---
>>  MAINTAINERS                                  |  7 ++++
>>  config/common_armv8a_linux                   |  5 +++
>>  config/common_base                           |  5 +++
>>  config/defconfig_arm64-armv8a-linuxapp-clang |  2 +
>>  doc/guides/nics/features/hns3.ini            | 38 +++++++++++++++++++
>>  doc/guides/nics/hns3.rst                     | 55 ++++++++++++++++++++++++++++
>>  drivers/net/Makefile                         |  1 +
>>  drivers/net/hns3/Makefile                    | 43 ++++++++++++++++++++++
>>  drivers/net/hns3/meson.build                 | 19 ++++++++++
>>  drivers/net/hns3/rte_pmd_hns3_version.map    |  3 ++
>>  drivers/net/meson.build                      |  1 +
>>  mk/rte.app.mk                                |  1 +
> Can you also update the release notes to announce the new PMD:
> 'doc/guides/rel_notes/release_19_11.rst'
Hi, Ferruh Yigit

    Thanks for your suggestion.
    We will update this file in patch V2.

    Regards
Xavier
>
>
Wei Hu (Xavier) Aug. 31, 2019, 8:07 a.m. UTC | #11
On 2019/8/30 23:00, Ferruh Yigit wrote:
> On 8/23/2019 2:47 PM, Wei Hu (Xavier) wrote:
>> This patch add build related files 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>
>> ---
>>  MAINTAINERS                                  |  7 ++++
>>  config/common_armv8a_linux                   |  5 +++
>>  config/common_base                           |  5 +++
>>  config/defconfig_arm64-armv8a-linuxapp-clang |  2 +
>>  doc/guides/nics/features/hns3.ini            | 38 +++++++++++++++++++
> There are separate PF and VF drivers in the patchset, this is mostly represent
> by to different .ini files, hns3.ini and hns3_vf.ini, and can you please reflect
> the feature differences into these files?
>
Hi, Ferruh Yigit

    Thanks for your suggestion.
    We will fix it in patch V2.

    Regards
Xavier
Wei Hu (Xavier) Aug. 31, 2019, 8:44 a.m. UTC | #12
On 2019/8/30 14:17, Stephen Hemminger wrote:
> On Fri, 23 Aug 2019 21:47:11 +0800
> "Wei Hu (Xavier)" <xavier.huwei@huawei.com> wrote:
>
>> +Limitations or Known issues
>> +---------------------------
>> +Build with clang is not supported yet.
>> +Currently, only ARMv8 architecture is supported.
>> \ No newline at end of file
> Pleas fix this. You need to add new line at end of
> file. Vi does this by default, and Emacs has an option
> to do this.
>
Hi, Stephen Hemminger
    Thanks for your comment.
    We will fix it in patch V2.

    Regards
Xavier
Wei Hu (Xavier) Aug. 31, 2019, 8:46 a.m. UTC | #13
On 2019/8/30 14:16, Stephen Hemminger wrote:
> On Fri, 23 Aug 2019 21:47:11 +0800
> "Wei Hu (Xavier)" <xavier.huwei@huawei.com> wrote:
>
> Thanks for doing documentation on this driver.
>
>> +The Hisilicon Network Subsystem is a long term evolution IP which is
>> +supposed to be used in Hisilicon ICT SoCs such as Kunpeng 920.
> This sentence needs some editing to remove marketing speak.
> It is not clear what "long term evolution IP" means when read
> by a DPDK user.  Why not just say that "Hisilcon Network Subsystem
> (HNS) is used in System On Chip (SOC) devices such as the Kunpeng 920".
>
> It is standard practice in technical documents to spell out
> the meaning of acronyms on first use; then use the acronym
> there after.
>
Hi, Stephen Hemminger
    Thanks for your comments,
    We will fix it in patch V2.

    Regards
Xavier
Xiaolong Ye Sept. 3, 2019, 3:27 p.m. UTC | #14
On 08/29, Stephen Hemminger wrote:
>On Fri, 23 Aug 2019 21:47:11 +0800
>"Wei Hu (Xavier)" <xavier.huwei@huawei.com> wrote:
>
>> +Limitations or Known issues
>> +---------------------------
>> +Build with clang is not supported yet.
>> +Currently, only ARMv8 architecture is supported.
>> \ No newline at end of file
>
>Pleas fix this. You need to add new line at end of
>file. Vi does this by default, and Emacs has an option
>to do this.

Just set below line in .emacs would work, Stephen told me last time :). 
(setq require-final-newline t)

Thanks,
Xiaolong
Wei Hu (Xavier) Sept. 10, 2019, 11:43 a.m. UTC | #15
Hi, Ferruh Yigit


On 2019/8/30 22:58, Ferruh Yigit wrote:
> On 8/23/2019 2:47 PM, Wei Hu (Xavier) wrote:
>> This patch add build related files 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>
>> ---
>>  MAINTAINERS                                  |  7 ++++
>>  config/common_armv8a_linux                   |  5 +++
>>  config/common_base                           |  5 +++
>>  config/defconfig_arm64-armv8a-linuxapp-clang |  2 +
>>  doc/guides/nics/features/hns3.ini            | 38 +++++++++++++++++++
>>  doc/guides/nics/hns3.rst                     | 55 ++++++++++++++++++++++++++++
> This file needs to be added to the index file: 'doc/guides/nics/index.rst'
Thanks for your suggestion.
We will fix it in patch V2.
>
> <...>
>
>> diff --git a/config/defconfig_arm64-armv8a-linuxapp-clang b/config/defconfig_arm64-armv8a-linuxapp-clang
>> index d3b4dad..c73f5fb 100644
>> --- a/config/defconfig_arm64-armv8a-linuxapp-clang
>> +++ b/config/defconfig_arm64-armv8a-linuxapp-clang
>> @@ -6,3 +6,5 @@
>>  
>>  CONFIG_RTE_TOOLCHAIN="clang"
>>  CONFIG_RTE_TOOLCHAIN_CLANG=y
>> +
>> +CONFIG_RTE_LIBRTE_HNS3_PMD=n
> I can understand the architecture ones, but why clang is not supported? Can you
> please add this support?
We will fix it in patch V2.
> <...>
>
>> diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
>> new file mode 100644
>> index 0000000..c9d0253
>> --- /dev/null
>> +++ b/doc/guides/nics/hns3.rst
>> @@ -0,0 +1,55 @@
>> +..  SPDX-License-Identifier: BSD-3-Clause
>> +    Copyright(c) 2018-2019 Hisilicon Limited.
>> +
>> +HNS3 Poll Mode Driver
>> +===============================
>> +
>> +The Hisilicon Network Subsystem is a long term evolution IP which is
>> +supposed to be used in Hisilicon ICT SoCs such as Kunpeng 920.
> Can you please add a official link/reference to the product?
>

The official website link of kunpeng920 chip is not available yet,
And we will paste the link to the servers product using kunpeng920 in
patch V2.
Thanks for your suggestion.

> <...>
>
>> @@ -0,0 +1,43 @@
>> +# 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)
>> +CFLAGS += -DALLOW_EXPERIMENTAL_API -fsigned-char
> Why '-DALLOW_EXPERIMENTAL_API' is required? Can we remove it?
There are some APIs as follows in hns3 PMD driver, 
'-DALLOW_EXPERIMENTAL_API'  can clear warning during compiling.
# Experimantal APIs:
# - rte_mp_action_register
# - rte_mp_action_unregister
# - rte_mp_reply
# - rte_mp_request_sync
>> +
>> +LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
>> +LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_hash
>> +LDLIBS += -lrte_bus_pci
> Are all these libraries really required, like kvargs? Can you please clean the
> unused ones?
We will fix it in patch V2.
>> +
>> +EXPORT_MAP := rte_pmd_hns3_version.map
>> +
>> +LIBABIVER := 2
> It should be 1.
We will fix it in patch V2.
>
> <...>
>
>> +# install this header file
>> +SYMLINK-$(CONFIG_RTE_LIBRTE_HNS3_PMD)-include := hns3_ethdev.h
> No need to expose the header file, it is not public header.
We will fix it in patch V2.
>
> <...>
>
>> @@ -0,0 +1,19 @@
>> +# SPDX-License-Identifier: BSD-3-Clause
>> +# Copyright(c) 2018-2019 Hisilicon Limited
>> +
>> +sources = files('hns3_cmd.c',
>> +	'hns3_dcb.c',
>> +	'hns3_intr.c',
>> +	'hns3_ethdev.c',
>> +	'hns3_ethdev_vf.c',
>> +	'hns3_fdir.c',
>> +	'hns3_flow.c',
>> +	'hns3_mbx.c',
>> +	'hns3_regs.c',
>> +	'hns3_rss.c',
>> +	'hns3_rxtx.c',
>> +	'hns3_stats.c',
>> +	'hns3_mp.c')
>> +deps += ['hash']
>> +
>> +cflags += '-DALLOW_EXPERIMENTAL_API'
> There is better way to do this in meson, please check other samples. But as the
> makefile comment, does it really needed, if so can you please add the
> experimental APIs used as a comment, to both meson and Makefile?
I will update it as follows:

allow_experimental_apis = true
# Experimantal APIs:
# - rte_mp_action_register
# - rte_mp_action_unregister
# - rte_mp_reply
# - rte_mp_request_sync

Thanks for your suggestion.

>> diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
>> new file mode 100644
>> index 0000000..3aef967
>> --- /dev/null
>> +++ b/drivers/net/hns3/rte_pmd_hns3_version.map
>> @@ -0,0 +1,3 @@
>> +DPDK_19.08 {
> DPDK_19.11
We will fix it in patch V2.



   Thanks for your suggestion.

   Regards
Xavier
>
> .
>
Wei Hu (Xavier) Sept. 11, 2019, 11:36 a.m. UTC | #16
On 2019/9/3 23:27, Ye Xiaolong wrote:
> On 08/29, Stephen Hemminger wrote:
>> On Fri, 23 Aug 2019 21:47:11 +0800
>> "Wei Hu (Xavier)" <xavier.huwei@huawei.com> wrote:
>>
>>> +Limitations or Known issues
>>> +---------------------------
>>> +Build with clang is not supported yet.
>>> +Currently, only ARMv8 architecture is supported.
>>> \ No newline at end of file
>> Pleas fix this. You need to add new line at end of
>> file. Vi does this by default, and Emacs has an option
>> to do this.
> Just set below line in .emacs would work, Stephen told me last time :). 
> (setq require-final-newline t)
>
> Thanks,
> Xiaolong
>
> .
Thanks for your suggestion.
Xavier
>

Patch
diff mbox series

diff --git a/MAINTAINERS b/MAINTAINERS
index 4100260..1794923 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -616,6 +616,13 @@  F: drivers/net/hinic/
 F: doc/guides/nics/hinic.rst
 F: doc/guides/nics/features/hinic.ini
 
+Hisilicon hns3
+M: Wei Hu (Xavier) <xavier.huwei@huawei.com>
+M: Min Hu (Connor) <humin29@huawei.com>
+F: drivers/net/hns3/
+F: doc/guides/nics/hns3.rst
+F: doc/guides/nics/features/hns3.ini
+
 Intel e1000
 M: Wenzhuo Lu <wenzhuo.lu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net-intel
diff --git a/config/common_armv8a_linux b/config/common_armv8a_linux
index 481712e..bf455c5 100644
--- a/config/common_armv8a_linux
+++ b/config/common_armv8a_linux
@@ -37,3 +37,8 @@  CONFIG_RTE_LIBRTE_AVP_PMD=n
 CONFIG_RTE_LIBRTE_PMD_IOAT_RAWDEV=n
 
 CONFIG_RTE_SCHED_VECTOR=n
+
+#
+# Hisilicon HNS3 PMD driver
+#
+CONFIG_RTE_LIBRTE_HNS3_PMD=y
diff --git a/config/common_base b/config/common_base
index 8ef75c2..71a2c33 100644
--- a/config/common_base
+++ b/config/common_base
@@ -282,6 +282,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
 #
 CONFIG_RTE_LIBRTE_IXGBE_PMD=y
diff --git a/config/defconfig_arm64-armv8a-linuxapp-clang b/config/defconfig_arm64-armv8a-linuxapp-clang
index d3b4dad..c73f5fb 100644
--- a/config/defconfig_arm64-armv8a-linuxapp-clang
+++ b/config/defconfig_arm64-armv8a-linuxapp-clang
@@ -6,3 +6,5 @@ 
 
 CONFIG_RTE_TOOLCHAIN="clang"
 CONFIG_RTE_TOOLCHAIN_CLANG=y
+
+CONFIG_RTE_LIBRTE_HNS3_PMD=n
diff --git a/doc/guides/nics/features/hns3.ini b/doc/guides/nics/features/hns3.ini
new file mode 100644
index 0000000..d38d35e
--- /dev/null
+++ b/doc/guides/nics/features/hns3.ini
@@ -0,0 +1,38 @@ 
+;
+; Supported features of the 'hns3' network poll mode driver.
+;
+; Refer to default.ini for the full list of available PMD features.
+;
+[Features]
+Link status          = Y
+MTU update           = Y
+Jumbo frame          = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+DCB                  = Y
+VLAN filter          = Y
+Flow director        = Y
+Flow control         = Y
+Flow API             = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+BSD nic_uio          = N
+x86-64               = N
+ARMv8                = Y
+ARMv7                = N
+x86-32               = N
+Power8               = N
diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
new file mode 100644
index 0000000..c9d0253
--- /dev/null
+++ b/doc/guides/nics/hns3.rst
@@ -0,0 +1,55 @@ 
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2018-2019 Hisilicon Limited.
+
+HNS3 Poll Mode Driver
+===============================
+
+The Hisilicon Network Subsystem is a long term evolution IP which is
+supposed to be used in Hisilicon ICT SoCs such as Kunpeng 920.
+
+The HNS3 PMD (librte_pmd_hns3) provides poll mode driver support
+for hns3(Hisilicon Network Subsystem 3) network engine.
+
+Features
+--------
+
+Features of the HNS3 PMD are:
+
+- Arch support: ARMv8.
+- 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
+-------------
+- 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
+---------------------------
+Build with clang is not supported yet.
+Currently, only ARMv8 architecture is supported.
\ No newline at end of file
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index 5767fdf..1770d8b 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -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
diff --git a/drivers/net/hns3/Makefile b/drivers/net/hns3/Makefile
new file mode 100644
index 0000000..a2e6502
--- /dev/null
+++ b/drivers/net/hns3/Makefile
@@ -0,0 +1,43 @@ 
+# 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)
+CFLAGS += -DALLOW_EXPERIMENTAL_API -fsigned-char
+
+LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
+LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_hash
+LDLIBS += -lrte_bus_pci
+
+EXPORT_MAP := rte_pmd_hns3_version.map
+
+LIBABIVER := 2
+
+#
+# all source are stored in SRCS-y
+#
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_ethdev.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_ethdev_vf.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_cmd.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_mbx.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_rxtx.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_rss.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_flow.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_fdir.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_intr.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_stats.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_regs.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_dcb.c
+SRCS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += hns3_mp.c
+
+# install this header file
+SYMLINK-$(CONFIG_RTE_LIBRTE_HNS3_PMD)-include := hns3_ethdev.h
+
+include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/drivers/net/hns3/meson.build b/drivers/net/hns3/meson.build
new file mode 100644
index 0000000..ad301a5
--- /dev/null
+++ b/drivers/net/hns3/meson.build
@@ -0,0 +1,19 @@ 
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018-2019 Hisilicon Limited
+
+sources = files('hns3_cmd.c',
+	'hns3_dcb.c',
+	'hns3_intr.c',
+	'hns3_ethdev.c',
+	'hns3_ethdev_vf.c',
+	'hns3_fdir.c',
+	'hns3_flow.c',
+	'hns3_mbx.c',
+	'hns3_regs.c',
+	'hns3_rss.c',
+	'hns3_rxtx.c',
+	'hns3_stats.c',
+	'hns3_mp.c')
+deps += ['hash']
+
+cflags += '-DALLOW_EXPERIMENTAL_API'
diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
new file mode 100644
index 0000000..3aef967
--- /dev/null
+++ b/drivers/net/hns3/rte_pmd_hns3_version.map
@@ -0,0 +1,3 @@ 
+DPDK_19.08 {
+	 local: *;
+};
diff --git a/drivers/net/meson.build b/drivers/net/meson.build
index 513f19b..eb1c6b6 100644
--- a/drivers/net/meson.build
+++ b/drivers/net/meson.build
@@ -18,6 +18,7 @@  drivers = ['af_packet',
 	'failsafe',
 	'fm10k', 'i40e',
 	'hinic',
+	'hns3',
 	'iavf',
 	'ice',
 	'ifc',
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index ba5c39e..17b9916 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -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