[v2,00/22] add hns3 ethernet PMD driver
mbox series

Message ID 1568985955-13548-1-git-send-email-xavier.huwei@huawei.com
Headers show
Series
  • add hns3 ethernet PMD driver
Related show

Message

Wei Hu (Xavier) Sept. 20, 2019, 1:25 p.m. UTC
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 series add DPDK rte_ethdev poll mode driver for Hisilicon
Network Subsystem 3(hns3) network engine.

Wei Hu (Xavier) (22):
  net/hns3: add hns3 build and doc infrastructure
  net/hns3: add hardware registers definition
  net/hns3: add some definitions for data structure and macro
  net/hns3: register hns3 PMD driver and add the log interface
    definition
  net/hns3: add support for cmd of hns3 PMD driver
  net/hns3: add the initialization of hns3 PMD driver
  net/hns3: add support for MAC address related operations
  net/hns3: add support for some misc operations
  net/hns3: add support for link_update operation
  net/hns3: add support for flow directory of hns3 PMD driver
  net/hns3: add support for RSS of hns3 PMD driver
  net/hns3: add support for flow control of hns3 PMD driver
  net/hns3: add support for vlan of hns3 PMD driver
  net/hns3: add support for mailbox of hns3 PMD driver
  net/hns3: add support for hns3 VF PMD driver
  net/hns3: add RX/TX package burst and queue related operation
  net/hns3: add start stop configure promiscuous ops
  net/hns3: add dump register ops for hns3 PMD driver
  net/hns3: add abnormal interrupt process for hns3 PMD driver
  net/hns3: add stats related ops for hns3 PMD driver
  net/hns3: add reset related process for hns3 PMD driver
  net/hns3: add multiple process support for hns3 PMD driver

 MAINTAINERS                                  |    8 +
 config/common_base                           |    5 +
 config/common_linux                          |    5 +
 config/defconfig_arm-armv7a-linuxapp-gcc     |    1 +
 config/defconfig_i686-native-linuxapp-gcc    |    5 +
 config/defconfig_i686-native-linuxapp-icc    |    5 +
 config/defconfig_ppc_64-power8-linuxapp-gcc  |    1 +
 config/defconfig_x86_64-native-linuxapp-icc  |    5 +
 config/defconfig_x86_x32-native-linuxapp-gcc |    5 +
 doc/guides/nics/features/hns3.ini            |   34 +
 doc/guides/nics/features/hns3_vf.ini         |   29 +
 doc/guides/nics/hns3.rst                     |   60 +
 doc/guides/nics/index.rst                    |    1 +
 doc/guides/rel_notes/release_19_11.rst       |    5 +
 drivers/net/Makefile                         |    1 +
 drivers/net/hns3/Makefile                    |   45 +
 drivers/net/hns3/hns3_cmd.c                  |  565 +++
 drivers/net/hns3/hns3_cmd.h                  |  761 ++++
 drivers/net/hns3/hns3_dcb.c                  | 1642 +++++++++
 drivers/net/hns3/hns3_dcb.h                  |  166 +
 drivers/net/hns3/hns3_ethdev.c               | 4939 ++++++++++++++++++++++++++
 drivers/net/hns3/hns3_ethdev.h               |  645 ++++
 drivers/net/hns3/hns3_ethdev_vf.c            | 1735 +++++++++
 drivers/net/hns3/hns3_fdir.c                 | 1059 ++++++
 drivers/net/hns3/hns3_fdir.h                 |  205 ++
 drivers/net/hns3/hns3_flow.c                 | 1903 ++++++++++
 drivers/net/hns3/hns3_intr.c                 | 1166 ++++++
 drivers/net/hns3/hns3_intr.h                 |   79 +
 drivers/net/hns3/hns3_logs.h                 |   34 +
 drivers/net/hns3/hns3_mbx.c                  |  353 ++
 drivers/net/hns3/hns3_mbx.h                  |  136 +
 drivers/net/hns3/hns3_mp.c                   |  214 ++
 drivers/net/hns3/hns3_mp.h                   |   14 +
 drivers/net/hns3/hns3_regs.c                 |  368 ++
 drivers/net/hns3/hns3_regs.h                 |   99 +
 drivers/net/hns3/hns3_rss.c                  |  584 +++
 drivers/net/hns3/hns3_rss.h                  |  124 +
 drivers/net/hns3/hns3_rxtx.c                 | 1676 +++++++++
 drivers/net/hns3/hns3_rxtx.h                 |  317 ++
 drivers/net/hns3/hns3_stats.c                |  971 +++++
 drivers/net/hns3/hns3_stats.h                |  152 +
 drivers/net/hns3/meson.build                 |   37 +
 drivers/net/hns3/rte_pmd_hns3_version.map    |    3 +
 drivers/net/meson.build                      |    1 +
 mk/rte.app.mk                                |    1 +
 45 files changed, 20164 insertions(+)
 create mode 100644 doc/guides/nics/features/hns3.ini
 create mode 100644 doc/guides/nics/features/hns3_vf.ini
 create mode 100644 doc/guides/nics/hns3.rst
 create mode 100644 drivers/net/hns3/Makefile
 create mode 100644 drivers/net/hns3/hns3_cmd.c
 create mode 100644 drivers/net/hns3/hns3_cmd.h
 create mode 100644 drivers/net/hns3/hns3_dcb.c
 create mode 100644 drivers/net/hns3/hns3_dcb.h
 create mode 100644 drivers/net/hns3/hns3_ethdev.c
 create mode 100644 drivers/net/hns3/hns3_ethdev.h
 create mode 100644 drivers/net/hns3/hns3_ethdev_vf.c
 create mode 100644 drivers/net/hns3/hns3_fdir.c
 create mode 100644 drivers/net/hns3/hns3_fdir.h
 create mode 100644 drivers/net/hns3/hns3_flow.c
 create mode 100644 drivers/net/hns3/hns3_intr.c
 create mode 100644 drivers/net/hns3/hns3_intr.h
 create mode 100644 drivers/net/hns3/hns3_logs.h
 create mode 100644 drivers/net/hns3/hns3_mbx.c
 create mode 100644 drivers/net/hns3/hns3_mbx.h
 create mode 100644 drivers/net/hns3/hns3_mp.c
 create mode 100644 drivers/net/hns3/hns3_mp.h
 create mode 100644 drivers/net/hns3/hns3_regs.c
 create mode 100644 drivers/net/hns3/hns3_regs.h
 create mode 100644 drivers/net/hns3/hns3_rss.c
 create mode 100644 drivers/net/hns3/hns3_rss.h
 create mode 100644 drivers/net/hns3/hns3_rxtx.c
 create mode 100644 drivers/net/hns3/hns3_rxtx.h
 create mode 100644 drivers/net/hns3/hns3_stats.c
 create mode 100644 drivers/net/hns3/hns3_stats.h
 create mode 100644 drivers/net/hns3/meson.build
 create mode 100644 drivers/net/hns3/rte_pmd_hns3_version.map

Comments

Wei Hu (Xavier) Sept. 21, 2019, 3:08 a.m. UTC | #1
Hi, Ferruh Yigit

I sent out patch V2 yesterday.  And I found that the following page
indicates that there is a compilation error.

    http://mails.dpdk.org/archives/test-report/2019-September/098385.html

The relevant sections in the log:

<...>

*Meson Build Failed #1: OS: FC30-64 Target:build-gcc-static FAILED:
drivers/a715181@@tmp_rte_pmd_hns3 at sta
<https://mails.dpdk.org/listinfo/test-report>/net_hns3_hns3_ethdev_vf.c.o

<...>

../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: error: initialization of
‘void (*)(struct rte_eth_dev *, struct rte_eth_dev_info *)’ from
incompatible pointer type ‘int (*)(struct rte_eth_dev *, struct
rte_eth_dev_info *)’ [-Werror=incompatible-pointer-types] 1552 |
.dev_infos_get = hns3vf_dev_infos_get, | ^~~~~~~~~~~~~~~~~~~~
../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: note: (near initialization
for ‘hns3vf_eth_dev_ops.dev_infos_get’) cc1: all warnings being treated
as errors

<...>

But I found that perhaps the reason for this compilation error is that
the following patch was not built on CI,

and it had been in the latest branch of the repository:
http://dpdk.org/git/next/dpdk-next-net

The information of the relevant patch as below:

commit 84c4620318b642aea9b5388aa7fbc79a4fe6f29e
Author: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
Date:   Thu Sep 12 17:42:28 2019 +0100

    ethdev: change device info get callback to return int

diff --git a/lib/librte_ethdev/rte_ethdev_core.h
b/lib/librte_ethdev/rte_ethdev_core.h
index 2922d5b..2394b32 100644
--- a/lib/librte_ethdev/rte_ethdev_core.h
+++ b/lib/librte_ethdev/rte_ethdev_core.h
@@ -103,8 +103,8 @@ typedef int (*eth_queue_stats_mapping_set_t)(struct
rte_eth_dev *dev,
                                             uint8_t is_rx);
 /**< @internal Set a queue statistics mapping for a tx/rx queue of an
Ethernet device. */

-typedef void (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
-                               struct rte_eth_dev_info *dev_info);
+typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
+                            struct rte_eth_dev_info *dev_info);
 /**< @internal Get specific information of an Ethernet device. */


    Regards
Xavier

On 2019/9/20 21:25, Wei Hu (Xavier) wrote:
> 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 series add DPDK rte_ethdev poll mode driver for Hisilicon
> Network Subsystem 3(hns3) network engine.
>
> Wei Hu (Xavier) (22):
>   net/hns3: add hns3 build and doc infrastructure
>   net/hns3: add hardware registers definition
>   net/hns3: add some definitions for data structure and macro
>   net/hns3: register hns3 PMD driver and add the log interface
>     definition
>   net/hns3: add support for cmd of hns3 PMD driver
>   net/hns3: add the initialization of hns3 PMD driver
>   net/hns3: add support for MAC address related operations
>   net/hns3: add support for some misc operations
>   net/hns3: add support for link_update operation
>   net/hns3: add support for flow directory of hns3 PMD driver
>   net/hns3: add support for RSS of hns3 PMD driver
>   net/hns3: add support for flow control of hns3 PMD driver
>   net/hns3: add support for vlan of hns3 PMD driver
>   net/hns3: add support for mailbox of hns3 PMD driver
>   net/hns3: add support for hns3 VF PMD driver
>   net/hns3: add RX/TX package burst and queue related operation
>   net/hns3: add start stop configure promiscuous ops
>   net/hns3: add dump register ops for hns3 PMD driver
>   net/hns3: add abnormal interrupt process for hns3 PMD driver
>   net/hns3: add stats related ops for hns3 PMD driver
>   net/hns3: add reset related process for hns3 PMD driver
>   net/hns3: add multiple process support for hns3 PMD driver
>
>  MAINTAINERS                                  |    8 +
>  config/common_base                           |    5 +
>  config/common_linux                          |    5 +
>  config/defconfig_arm-armv7a-linuxapp-gcc     |    1 +
>  config/defconfig_i686-native-linuxapp-gcc    |    5 +
>  config/defconfig_i686-native-linuxapp-icc    |    5 +
>  config/defconfig_ppc_64-power8-linuxapp-gcc  |    1 +
>  config/defconfig_x86_64-native-linuxapp-icc  |    5 +
>  config/defconfig_x86_x32-native-linuxapp-gcc |    5 +
>  doc/guides/nics/features/hns3.ini            |   34 +
>  doc/guides/nics/features/hns3_vf.ini         |   29 +
>  doc/guides/nics/hns3.rst                     |   60 +
>  doc/guides/nics/index.rst                    |    1 +
>  doc/guides/rel_notes/release_19_11.rst       |    5 +
>  drivers/net/Makefile                         |    1 +
>  drivers/net/hns3/Makefile                    |   45 +
>  drivers/net/hns3/hns3_cmd.c                  |  565 +++
>  drivers/net/hns3/hns3_cmd.h                  |  761 ++++
>  drivers/net/hns3/hns3_dcb.c                  | 1642 +++++++++
>  drivers/net/hns3/hns3_dcb.h                  |  166 +
>  drivers/net/hns3/hns3_ethdev.c               | 4939 ++++++++++++++++++++++++++
>  drivers/net/hns3/hns3_ethdev.h               |  645 ++++
>  drivers/net/hns3/hns3_ethdev_vf.c            | 1735 +++++++++
>  drivers/net/hns3/hns3_fdir.c                 | 1059 ++++++
>  drivers/net/hns3/hns3_fdir.h                 |  205 ++
>  drivers/net/hns3/hns3_flow.c                 | 1903 ++++++++++
>  drivers/net/hns3/hns3_intr.c                 | 1166 ++++++
>  drivers/net/hns3/hns3_intr.h                 |   79 +
>  drivers/net/hns3/hns3_logs.h                 |   34 +
>  drivers/net/hns3/hns3_mbx.c                  |  353 ++
>  drivers/net/hns3/hns3_mbx.h                  |  136 +
>  drivers/net/hns3/hns3_mp.c                   |  214 ++
>  drivers/net/hns3/hns3_mp.h                   |   14 +
>  drivers/net/hns3/hns3_regs.c                 |  368 ++
>  drivers/net/hns3/hns3_regs.h                 |   99 +
>  drivers/net/hns3/hns3_rss.c                  |  584 +++
>  drivers/net/hns3/hns3_rss.h                  |  124 +
>  drivers/net/hns3/hns3_rxtx.c                 | 1676 +++++++++
>  drivers/net/hns3/hns3_rxtx.h                 |  317 ++
>  drivers/net/hns3/hns3_stats.c                |  971 +++++
>  drivers/net/hns3/hns3_stats.h                |  152 +
>  drivers/net/hns3/meson.build                 |   37 +
>  drivers/net/hns3/rte_pmd_hns3_version.map    |    3 +
>  drivers/net/meson.build                      |    1 +
>  mk/rte.app.mk                                |    1 +
>  45 files changed, 20164 insertions(+)
>  create mode 100644 doc/guides/nics/features/hns3.ini
>  create mode 100644 doc/guides/nics/features/hns3_vf.ini
>  create mode 100644 doc/guides/nics/hns3.rst
>  create mode 100644 drivers/net/hns3/Makefile
>  create mode 100644 drivers/net/hns3/hns3_cmd.c
>  create mode 100644 drivers/net/hns3/hns3_cmd.h
>  create mode 100644 drivers/net/hns3/hns3_dcb.c
>  create mode 100644 drivers/net/hns3/hns3_dcb.h
>  create mode 100644 drivers/net/hns3/hns3_ethdev.c
>  create mode 100644 drivers/net/hns3/hns3_ethdev.h
>  create mode 100644 drivers/net/hns3/hns3_ethdev_vf.c
>  create mode 100644 drivers/net/hns3/hns3_fdir.c
>  create mode 100644 drivers/net/hns3/hns3_fdir.h
>  create mode 100644 drivers/net/hns3/hns3_flow.c
>  create mode 100644 drivers/net/hns3/hns3_intr.c
>  create mode 100644 drivers/net/hns3/hns3_intr.h
>  create mode 100644 drivers/net/hns3/hns3_logs.h
>  create mode 100644 drivers/net/hns3/hns3_mbx.c
>  create mode 100644 drivers/net/hns3/hns3_mbx.h
>  create mode 100644 drivers/net/hns3/hns3_mp.c
>  create mode 100644 drivers/net/hns3/hns3_mp.h
>  create mode 100644 drivers/net/hns3/hns3_regs.c
>  create mode 100644 drivers/net/hns3/hns3_regs.h
>  create mode 100644 drivers/net/hns3/hns3_rss.c
>  create mode 100644 drivers/net/hns3/hns3_rss.h
>  create mode 100644 drivers/net/hns3/hns3_rxtx.c
>  create mode 100644 drivers/net/hns3/hns3_rxtx.h
>  create mode 100644 drivers/net/hns3/hns3_stats.c
>  create mode 100644 drivers/net/hns3/hns3_stats.h
>  create mode 100644 drivers/net/hns3/meson.build
>  create mode 100644 drivers/net/hns3/rte_pmd_hns3_version.map
>
Aaron Conole Sept. 24, 2019, 8:34 p.m. UTC | #2
"Wei Hu (Xavier)" <xavier.huwei@huawei.com> writes:

> Hi, Ferruh Yigit
>
> I sent out patch V2 yesterday.  And I found that the following page
> indicates that there is a compilation error.
>
>     http://mails.dpdk.org/archives/test-report/2019-September/098385.html
>
> The relevant sections in the log:
>
> <...>
>
> *Meson Build Failed #1: OS: FC30-64 Target:build-gcc-static FAILED:
> drivers/a715181@@tmp_rte_pmd_hns3 at sta
> <https://mails.dpdk.org/listinfo/test-report>/net_hns3_hns3_ethdev_vf.c.o
>
> <...>
>
> ../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: error: initialization of
> ‘void (*)(struct rte_eth_dev *, struct rte_eth_dev_info *)’ from
> incompatible pointer type ‘int (*)(struct rte_eth_dev *, struct
> rte_eth_dev_info *)’ [-Werror=incompatible-pointer-types] 1552 |
> .dev_infos_get = hns3vf_dev_infos_get, | ^~~~~~~~~~~~~~~~~~~~
> ../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: note: (near initialization
> for ‘hns3vf_eth_dev_ops.dev_infos_get’) cc1: all warnings being treated
> as errors
>
> <...>
>
> But I found that perhaps the reason for this compilation error is that
> the following patch was not built on CI,
>
> and it had been in the latest branch of the repository:
> http://dpdk.org/git/next/dpdk-next-net

The patch you reference is still not present.  I guess perhaps it might
have been clobbered in a rebase?

> The information of the relevant patch as below:
>
> commit 84c4620318b642aea9b5388aa7fbc79a4fe6f29e
> Author: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
> Date:   Thu Sep 12 17:42:28 2019 +0100
>
>     ethdev: change device info get callback to return int
>
> diff --git a/lib/librte_ethdev/rte_ethdev_core.h
> b/lib/librte_ethdev/rte_ethdev_core.h
> index 2922d5b..2394b32 100644
> --- a/lib/librte_ethdev/rte_ethdev_core.h
> +++ b/lib/librte_ethdev/rte_ethdev_core.h
> @@ -103,8 +103,8 @@ typedef int (*eth_queue_stats_mapping_set_t)(struct
> rte_eth_dev *dev,
>                                              uint8_t is_rx);
>  /**< @internal Set a queue statistics mapping for a tx/rx queue of an
> Ethernet device. */
>
> -typedef void (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
> -                               struct rte_eth_dev_info *dev_info);
> +typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
> +                            struct rte_eth_dev_info *dev_info);
>  /**< @internal Get specific information of an Ethernet device. */
>
>
>     Regards
> Xavier
>
> On 2019/9/20 21:25, Wei Hu (Xavier) wrote:
>> 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 series add DPDK rte_ethdev poll mode driver for Hisilicon
>> Network Subsystem 3(hns3) network engine.
>>
>> Wei Hu (Xavier) (22):
>>   net/hns3: add hns3 build and doc infrastructure
>>   net/hns3: add hardware registers definition
>>   net/hns3: add some definitions for data structure and macro
>>   net/hns3: register hns3 PMD driver and add the log interface
>>     definition
>>   net/hns3: add support for cmd of hns3 PMD driver
>>   net/hns3: add the initialization of hns3 PMD driver
>>   net/hns3: add support for MAC address related operations
>>   net/hns3: add support for some misc operations
>>   net/hns3: add support for link_update operation
>>   net/hns3: add support for flow directory of hns3 PMD driver
>>   net/hns3: add support for RSS of hns3 PMD driver
>>   net/hns3: add support for flow control of hns3 PMD driver
>>   net/hns3: add support for vlan of hns3 PMD driver
>>   net/hns3: add support for mailbox of hns3 PMD driver
>>   net/hns3: add support for hns3 VF PMD driver
>>   net/hns3: add RX/TX package burst and queue related operation
>>   net/hns3: add start stop configure promiscuous ops
>>   net/hns3: add dump register ops for hns3 PMD driver
>>   net/hns3: add abnormal interrupt process for hns3 PMD driver
>>   net/hns3: add stats related ops for hns3 PMD driver
>>   net/hns3: add reset related process for hns3 PMD driver
>>   net/hns3: add multiple process support for hns3 PMD driver
>>
>>  MAINTAINERS                                  |    8 +
>>  config/common_base                           |    5 +
>>  config/common_linux                          |    5 +
>>  config/defconfig_arm-armv7a-linuxapp-gcc     |    1 +
>>  config/defconfig_i686-native-linuxapp-gcc    |    5 +
>>  config/defconfig_i686-native-linuxapp-icc    |    5 +
>>  config/defconfig_ppc_64-power8-linuxapp-gcc  |    1 +
>>  config/defconfig_x86_64-native-linuxapp-icc  |    5 +
>>  config/defconfig_x86_x32-native-linuxapp-gcc |    5 +
>>  doc/guides/nics/features/hns3.ini            |   34 +
>>  doc/guides/nics/features/hns3_vf.ini         |   29 +
>>  doc/guides/nics/hns3.rst                     |   60 +
>>  doc/guides/nics/index.rst                    |    1 +
>>  doc/guides/rel_notes/release_19_11.rst       |    5 +
>>  drivers/net/Makefile                         |    1 +
>>  drivers/net/hns3/Makefile                    |   45 +
>>  drivers/net/hns3/hns3_cmd.c                  |  565 +++
>>  drivers/net/hns3/hns3_cmd.h                  |  761 ++++
>>  drivers/net/hns3/hns3_dcb.c                  | 1642 +++++++++
>>  drivers/net/hns3/hns3_dcb.h                  |  166 +
>>  drivers/net/hns3/hns3_ethdev.c               | 4939 ++++++++++++++++++++++++++
>>  drivers/net/hns3/hns3_ethdev.h               |  645 ++++
>>  drivers/net/hns3/hns3_ethdev_vf.c            | 1735 +++++++++
>>  drivers/net/hns3/hns3_fdir.c                 | 1059 ++++++
>>  drivers/net/hns3/hns3_fdir.h                 |  205 ++
>>  drivers/net/hns3/hns3_flow.c                 | 1903 ++++++++++
>>  drivers/net/hns3/hns3_intr.c                 | 1166 ++++++
>>  drivers/net/hns3/hns3_intr.h                 |   79 +
>>  drivers/net/hns3/hns3_logs.h                 |   34 +
>>  drivers/net/hns3/hns3_mbx.c                  |  353 ++
>>  drivers/net/hns3/hns3_mbx.h                  |  136 +
>>  drivers/net/hns3/hns3_mp.c                   |  214 ++
>>  drivers/net/hns3/hns3_mp.h                   |   14 +
>>  drivers/net/hns3/hns3_regs.c                 |  368 ++
>>  drivers/net/hns3/hns3_regs.h                 |   99 +
>>  drivers/net/hns3/hns3_rss.c                  |  584 +++
>>  drivers/net/hns3/hns3_rss.h                  |  124 +
>>  drivers/net/hns3/hns3_rxtx.c                 | 1676 +++++++++
>>  drivers/net/hns3/hns3_rxtx.h                 |  317 ++
>>  drivers/net/hns3/hns3_stats.c                |  971 +++++
>>  drivers/net/hns3/hns3_stats.h                |  152 +
>>  drivers/net/hns3/meson.build                 |   37 +
>>  drivers/net/hns3/rte_pmd_hns3_version.map    |    3 +
>>  drivers/net/meson.build                      |    1 +
>>  mk/rte.app.mk                                |    1 +
>>  45 files changed, 20164 insertions(+)
>>  create mode 100644 doc/guides/nics/features/hns3.ini
>>  create mode 100644 doc/guides/nics/features/hns3_vf.ini
>>  create mode 100644 doc/guides/nics/hns3.rst
>>  create mode 100644 drivers/net/hns3/Makefile
>>  create mode 100644 drivers/net/hns3/hns3_cmd.c
>>  create mode 100644 drivers/net/hns3/hns3_cmd.h
>>  create mode 100644 drivers/net/hns3/hns3_dcb.c
>>  create mode 100644 drivers/net/hns3/hns3_dcb.h
>>  create mode 100644 drivers/net/hns3/hns3_ethdev.c
>>  create mode 100644 drivers/net/hns3/hns3_ethdev.h
>>  create mode 100644 drivers/net/hns3/hns3_ethdev_vf.c
>>  create mode 100644 drivers/net/hns3/hns3_fdir.c
>>  create mode 100644 drivers/net/hns3/hns3_fdir.h
>>  create mode 100644 drivers/net/hns3/hns3_flow.c
>>  create mode 100644 drivers/net/hns3/hns3_intr.c
>>  create mode 100644 drivers/net/hns3/hns3_intr.h
>>  create mode 100644 drivers/net/hns3/hns3_logs.h
>>  create mode 100644 drivers/net/hns3/hns3_mbx.c
>>  create mode 100644 drivers/net/hns3/hns3_mbx.h
>>  create mode 100644 drivers/net/hns3/hns3_mp.c
>>  create mode 100644 drivers/net/hns3/hns3_mp.h
>>  create mode 100644 drivers/net/hns3/hns3_regs.c
>>  create mode 100644 drivers/net/hns3/hns3_regs.h
>>  create mode 100644 drivers/net/hns3/hns3_rss.c
>>  create mode 100644 drivers/net/hns3/hns3_rss.h
>>  create mode 100644 drivers/net/hns3/hns3_rxtx.c
>>  create mode 100644 drivers/net/hns3/hns3_rxtx.h
>>  create mode 100644 drivers/net/hns3/hns3_stats.c
>>  create mode 100644 drivers/net/hns3/hns3_stats.h
>>  create mode 100644 drivers/net/hns3/meson.build
>>  create mode 100644 drivers/net/hns3/rte_pmd_hns3_version.map
>>
Wei Hu (Xavier) Sept. 25, 2019, 2:30 a.m. UTC | #3
On 2019/9/25 4:34, Aaron Conole wrote:
> "Wei Hu (Xavier)" <xavier.huwei@huawei.com> writes:
>
>> Hi, Ferruh Yigit
>>
>> I sent out patch V2 yesterday.  And I found that the following page
>> indicates that there is a compilation error.
>>
>>     http://mails.dpdk.org/archives/test-report/2019-September/098385.html
>>
>> The relevant sections in the log:
>>
>> <...>
>>
>> *Meson Build Failed #1: OS: FC30-64 Target:build-gcc-static FAILED:
>> drivers/a715181@@tmp_rte_pmd_hns3 at sta
>> <https://mails.dpdk.org/listinfo/test-report>/net_hns3_hns3_ethdev_vf.c.o
>>
>> <...>
>>
>> ../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: error: initialization of
>> ‘void (*)(struct rte_eth_dev *, struct rte_eth_dev_info *)’ from
>> incompatible pointer type ‘int (*)(struct rte_eth_dev *, struct
>> rte_eth_dev_info *)’ [-Werror=incompatible-pointer-types] 1552 |
>> .dev_infos_get = hns3vf_dev_infos_get, | ^~~~~~~~~~~~~~~~~~~~
>> ../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: note: (near initialization
>> for ‘hns3vf_eth_dev_ops.dev_infos_get’) cc1: all warnings being treated
>> as errors
>>
>> <...>
>>
>> But I found that perhaps the reason for this compilation error is that
>> the following patch was not built on CI,
>>
>> and it had been in the latest branch of the repository:
>> http://dpdk.org/git/next/dpdk-next-net
> The patch you reference is still not present.  I guess perhaps it might
> have been clobbered in a rebase?
Hi, Aaron Conole
   
    The patch is still in the repository now, but the commit id has been
changed. The detail information as below:

repo: http://dpdk.org/git/next/dpdk-next-net
branch: master

commit b90f5e9b44c088d0bfa77d0458f5b28045935835
Author: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
Date:   Thu Sep 12 17:42:28 2019 +0100

    ethdev: change device info get callback to return int

    Change eth_dev_infos_get_t return value from void to int.
    Make eth_dev_infos_get_t implementations across all drivers to return
    negative errno values if case of error conditions.

    Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
    Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
    Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

<...>

diff --git a/lib/librte_ethdev/rte_ethdev_core.h
b/lib/librte_ethdev/rte_ethdev_core.h
index 2922d5b..2394b32 100644
--- a/lib/librte_ethdev/rte_ethdev_core.h
+++ b/lib/librte_ethdev/rte_ethdev_core.h
@@ -103,8 +103,8 @@ typedef int (*eth_queue_stats_mapping_set_t)(struct
rte_eth_dev *dev,
                                             uint8_t is_rx);
 /**< @internal Set a queue statistics mapping for a tx/rx queue of an
Ethernet device. */

-typedef void (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
-                                   struct rte_eth_dev_info *dev_info);
+typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
+                                  struct rte_eth_dev_info *dev_info);

    Thanks for your comment.

    Regards
Xavier

>> The information of the relevant patch as below:
>>
>> commit 84c4620318b642aea9b5388aa7fbc79a4fe6f29e
>> Author: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
>> Date:   Thu Sep 12 17:42:28 2019 +0100
>>
>>     ethdev: change device info get callback to return int
>>
>> diff --git a/lib/librte_ethdev/rte_ethdev_core.h
>> b/lib/librte_ethdev/rte_ethdev_core.h
>> index 2922d5b..2394b32 100644
>> --- a/lib/librte_ethdev/rte_ethdev_core.h
>> +++ b/lib/librte_ethdev/rte_ethdev_core.h
>> @@ -103,8 +103,8 @@ typedef int (*eth_queue_stats_mapping_set_t)(struct
>> rte_eth_dev *dev,
>>                                              uint8_t is_rx);
>>  /**< @internal Set a queue statistics mapping for a tx/rx queue of an
>> Ethernet device. */
>>
>> -typedef void (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
>> -                               struct rte_eth_dev_info *dev_info);
>> +typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
>> +                            struct rte_eth_dev_info *dev_info);
>>  /**< @internal Get specific information of an Ethernet device. */
>>
>>
>>     Regards
>> Xavier
>>
>> On 2019/9/20 21:25, Wei Hu (Xavier) wrote:
>>> 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 series add DPDK rte_ethdev poll mode driver for Hisilicon
>>> Network Subsystem 3(hns3) network engine.
>>>
>>> Wei Hu (Xavier) (22):
>>>   net/hns3: add hns3 build and doc infrastructure
>>>   net/hns3: add hardware registers definition
>>>   net/hns3: add some definitions for data structure and macro
>>>   net/hns3: register hns3 PMD driver and add the log interface
>>>     definition
>>>   net/hns3: add support for cmd of hns3 PMD driver
>>>   net/hns3: add the initialization of hns3 PMD driver
>>>   net/hns3: add support for MAC address related operations
>>>   net/hns3: add support for some misc operations
>>>   net/hns3: add support for link_update operation
>>>   net/hns3: add support for flow directory of hns3 PMD driver
>>>   net/hns3: add support for RSS of hns3 PMD driver
>>>   net/hns3: add support for flow control of hns3 PMD driver
>>>   net/hns3: add support for vlan of hns3 PMD driver
>>>   net/hns3: add support for mailbox of hns3 PMD driver
>>>   net/hns3: add support for hns3 VF PMD driver
>>>   net/hns3: add RX/TX package burst and queue related operation
>>>   net/hns3: add start stop configure promiscuous ops
>>>   net/hns3: add dump register ops for hns3 PMD driver
>>>   net/hns3: add abnormal interrupt process for hns3 PMD driver
>>>   net/hns3: add stats related ops for hns3 PMD driver
>>>   net/hns3: add reset related process for hns3 PMD driver
>>>   net/hns3: add multiple process support for hns3 PMD driver
>>>
>>>  MAINTAINERS                                  |    8 +
>>>  config/common_base                           |    5 +
>>>  config/common_linux                          |    5 +
>>>  config/defconfig_arm-armv7a-linuxapp-gcc     |    1 +
>>>  config/defconfig_i686-native-linuxapp-gcc    |    5 +
>>>  config/defconfig_i686-native-linuxapp-icc    |    5 +
>>>  config/defconfig_ppc_64-power8-linuxapp-gcc  |    1 +
>>>  config/defconfig_x86_64-native-linuxapp-icc  |    5 +
>>>  config/defconfig_x86_x32-native-linuxapp-gcc |    5 +
>>>  doc/guides/nics/features/hns3.ini            |   34 +
>>>  doc/guides/nics/features/hns3_vf.ini         |   29 +
>>>  doc/guides/nics/hns3.rst                     |   60 +
>>>  doc/guides/nics/index.rst                    |    1 +
>>>  doc/guides/rel_notes/release_19_11.rst       |    5 +
>>>  drivers/net/Makefile                         |    1 +
>>>  drivers/net/hns3/Makefile                    |   45 +
>>>  drivers/net/hns3/hns3_cmd.c                  |  565 +++
>>>  drivers/net/hns3/hns3_cmd.h                  |  761 ++++
>>>  drivers/net/hns3/hns3_dcb.c                  | 1642 +++++++++
>>>  drivers/net/hns3/hns3_dcb.h                  |  166 +
>>>  drivers/net/hns3/hns3_ethdev.c               | 4939 ++++++++++++++++++++++++++
>>>  drivers/net/hns3/hns3_ethdev.h               |  645 ++++
>>>  drivers/net/hns3/hns3_ethdev_vf.c            | 1735 +++++++++
>>>  drivers/net/hns3/hns3_fdir.c                 | 1059 ++++++
>>>  drivers/net/hns3/hns3_fdir.h                 |  205 ++
>>>  drivers/net/hns3/hns3_flow.c                 | 1903 ++++++++++
>>>  drivers/net/hns3/hns3_intr.c                 | 1166 ++++++
>>>  drivers/net/hns3/hns3_intr.h                 |   79 +
>>>  drivers/net/hns3/hns3_logs.h                 |   34 +
>>>  drivers/net/hns3/hns3_mbx.c                  |  353 ++
>>>  drivers/net/hns3/hns3_mbx.h                  |  136 +
>>>  drivers/net/hns3/hns3_mp.c                   |  214 ++
>>>  drivers/net/hns3/hns3_mp.h                   |   14 +
>>>  drivers/net/hns3/hns3_regs.c                 |  368 ++
>>>  drivers/net/hns3/hns3_regs.h                 |   99 +
>>>  drivers/net/hns3/hns3_rss.c                  |  584 +++
>>>  drivers/net/hns3/hns3_rss.h                  |  124 +
>>>  drivers/net/hns3/hns3_rxtx.c                 | 1676 +++++++++
>>>  drivers/net/hns3/hns3_rxtx.h                 |  317 ++
>>>  drivers/net/hns3/hns3_stats.c                |  971 +++++
>>>  drivers/net/hns3/hns3_stats.h                |  152 +
>>>  drivers/net/hns3/meson.build                 |   37 +
>>>  drivers/net/hns3/rte_pmd_hns3_version.map    |    3 +
>>>  drivers/net/meson.build                      |    1 +
>>>  mk/rte.app.mk                                |    1 +
>>>  45 files changed, 20164 insertions(+)
>>>  create mode 100644 doc/guides/nics/features/hns3.ini
>>>  create mode 100644 doc/guides/nics/features/hns3_vf.ini
>>>  create mode 100644 doc/guides/nics/hns3.rst
>>>  create mode 100644 drivers/net/hns3/Makefile
>>>  create mode 100644 drivers/net/hns3/hns3_cmd.c
>>>  create mode 100644 drivers/net/hns3/hns3_cmd.h
>>>  create mode 100644 drivers/net/hns3/hns3_dcb.c
>>>  create mode 100644 drivers/net/hns3/hns3_dcb.h
>>>  create mode 100644 drivers/net/hns3/hns3_ethdev.c
>>>  create mode 100644 drivers/net/hns3/hns3_ethdev.h
>>>  create mode 100644 drivers/net/hns3/hns3_ethdev_vf.c
>>>  create mode 100644 drivers/net/hns3/hns3_fdir.c
>>>  create mode 100644 drivers/net/hns3/hns3_fdir.h
>>>  create mode 100644 drivers/net/hns3/hns3_flow.c
>>>  create mode 100644 drivers/net/hns3/hns3_intr.c
>>>  create mode 100644 drivers/net/hns3/hns3_intr.h
>>>  create mode 100644 drivers/net/hns3/hns3_logs.h
>>>  create mode 100644 drivers/net/hns3/hns3_mbx.c
>>>  create mode 100644 drivers/net/hns3/hns3_mbx.h
>>>  create mode 100644 drivers/net/hns3/hns3_mp.c
>>>  create mode 100644 drivers/net/hns3/hns3_mp.h
>>>  create mode 100644 drivers/net/hns3/hns3_regs.c
>>>  create mode 100644 drivers/net/hns3/hns3_regs.h
>>>  create mode 100644 drivers/net/hns3/hns3_rss.c
>>>  create mode 100644 drivers/net/hns3/hns3_rss.h
>>>  create mode 100644 drivers/net/hns3/hns3_rxtx.c
>>>  create mode 100644 drivers/net/hns3/hns3_rxtx.h
>>>  create mode 100644 drivers/net/hns3/hns3_stats.c
>>>  create mode 100644 drivers/net/hns3/hns3_stats.h
>>>  create mode 100644 drivers/net/hns3/meson.build
>>>  create mode 100644 drivers/net/hns3/rte_pmd_hns3_version.map
>>>
> .
>
Ferruh Yigit Sept. 26, 2019, 7:55 a.m. UTC | #4
On 9/25/2019 3:30 AM, Wei Hu (Xavier) wrote:
> 
> 
> On 2019/9/25 4:34, Aaron Conole wrote:
>> "Wei Hu (Xavier)" <xavier.huwei@huawei.com> writes:
>>
>>> Hi, Ferruh Yigit
>>>
>>> I sent out patch V2 yesterday.  And I found that the following page
>>> indicates that there is a compilation error.
>>>
>>>     http://mails.dpdk.org/archives/test-report/2019-September/098385.html
>>>
>>> The relevant sections in the log:
>>>
>>> <...>
>>>
>>> *Meson Build Failed #1: OS: FC30-64 Target:build-gcc-static FAILED:
>>> drivers/a715181@@tmp_rte_pmd_hns3 at sta
>>> <https://mails.dpdk.org/listinfo/test-report>/net_hns3_hns3_ethdev_vf.c.o
>>>
>>> <...>
>>>
>>> ../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: error: initialization of
>>> ‘void (*)(struct rte_eth_dev *, struct rte_eth_dev_info *)’ from
>>> incompatible pointer type ‘int (*)(struct rte_eth_dev *, struct
>>> rte_eth_dev_info *)’ [-Werror=incompatible-pointer-types] 1552 |
>>> .dev_infos_get = hns3vf_dev_infos_get, | ^~~~~~~~~~~~~~~~~~~~
>>> ../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: note: (near initialization
>>> for ‘hns3vf_eth_dev_ops.dev_infos_get’) cc1: all warnings being treated
>>> as errors
>>>
>>> <...>
>>>
>>> But I found that perhaps the reason for this compilation error is that
>>> the following patch was not built on CI,
>>>
>>> and it had been in the latest branch of the repository:
>>> http://dpdk.org/git/next/dpdk-next-net
>> The patch you reference is still not present.  I guess perhaps it might
>> have been clobbered in a rebase?
> Hi, Aaron Conole
>    
>     The patch is still in the repository now, but the commit id has been
> changed. The detail information as below:
> 
> repo: http://dpdk.org/git/next/dpdk-next-net
> branch: master
> 
> commit b90f5e9b44c088d0bfa77d0458f5b28045935835
> Author: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
> Date:   Thu Sep 12 17:42:28 2019 +0100
> 
>     ethdev: change device info get callback to return int
> 
>     Change eth_dev_infos_get_t return value from void to int.
>     Make eth_dev_infos_get_t implementations across all drivers to return
>     negative errno values if case of error conditions.
> 
>     Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
>     Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
>     Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
> 
> <...>

Hi Xavier,

The recent ethdev patches affects the drivers, please double check if you driver
is based on latest next-net? If it is, you can ignore the related build warnings
for now, it will settle down.

> 
> diff --git a/lib/librte_ethdev/rte_ethdev_core.h
> b/lib/librte_ethdev/rte_ethdev_core.h
> index 2922d5b..2394b32 100644
> --- a/lib/librte_ethdev/rte_ethdev_core.h
> +++ b/lib/librte_ethdev/rte_ethdev_core.h
> @@ -103,8 +103,8 @@ typedef int (*eth_queue_stats_mapping_set_t)(struct
> rte_eth_dev *dev,
>                                              uint8_t is_rx);
>  /**< @internal Set a queue statistics mapping for a tx/rx queue of an
> Ethernet device. */
> 
> -typedef void (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
> -                                   struct rte_eth_dev_info *dev_info);
> +typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
> +                                  struct rte_eth_dev_info *dev_info);
> 
>     Thanks for your comment.
> 
>     Regards
> Xavier
> 
>>> The information of the relevant patch as below:
>>>
>>> commit 84c4620318b642aea9b5388aa7fbc79a4fe6f29e
>>> Author: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
>>> Date:   Thu Sep 12 17:42:28 2019 +0100
>>>
>>>     ethdev: change device info get callback to return int
>>>
>>> diff --git a/lib/librte_ethdev/rte_ethdev_core.h
>>> b/lib/librte_ethdev/rte_ethdev_core.h
>>> index 2922d5b..2394b32 100644
>>> --- a/lib/librte_ethdev/rte_ethdev_core.h
>>> +++ b/lib/librte_ethdev/rte_ethdev_core.h
>>> @@ -103,8 +103,8 @@ typedef int (*eth_queue_stats_mapping_set_t)(struct
>>> rte_eth_dev *dev,
>>>                                              uint8_t is_rx);
>>>  /**< @internal Set a queue statistics mapping for a tx/rx queue of an
>>> Ethernet device. */
>>>
>>> -typedef void (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
>>> -                               struct rte_eth_dev_info *dev_info);
>>> +typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
>>> +                            struct rte_eth_dev_info *dev_info);
>>>  /**< @internal Get specific information of an Ethernet device. */
>>>
>>>
>>>     Regards
>>> Xavier
>>>
>>> On 2019/9/20 21:25, Wei Hu (Xavier) wrote:
>>>> 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 series add DPDK rte_ethdev poll mode driver for Hisilicon
>>>> Network Subsystem 3(hns3) network engine.
>>>>
>>>> Wei Hu (Xavier) (22):
>>>>   net/hns3: add hns3 build and doc infrastructure
>>>>   net/hns3: add hardware registers definition
>>>>   net/hns3: add some definitions for data structure and macro
>>>>   net/hns3: register hns3 PMD driver and add the log interface
>>>>     definition
>>>>   net/hns3: add support for cmd of hns3 PMD driver
>>>>   net/hns3: add the initialization of hns3 PMD driver
>>>>   net/hns3: add support for MAC address related operations
>>>>   net/hns3: add support for some misc operations
>>>>   net/hns3: add support for link_update operation
>>>>   net/hns3: add support for flow directory of hns3 PMD driver
>>>>   net/hns3: add support for RSS of hns3 PMD driver
>>>>   net/hns3: add support for flow control of hns3 PMD driver
>>>>   net/hns3: add support for vlan of hns3 PMD driver
>>>>   net/hns3: add support for mailbox of hns3 PMD driver
>>>>   net/hns3: add support for hns3 VF PMD driver
>>>>   net/hns3: add RX/TX package burst and queue related operation
>>>>   net/hns3: add start stop configure promiscuous ops
>>>>   net/hns3: add dump register ops for hns3 PMD driver
>>>>   net/hns3: add abnormal interrupt process for hns3 PMD driver
>>>>   net/hns3: add stats related ops for hns3 PMD driver
>>>>   net/hns3: add reset related process for hns3 PMD driver
>>>>   net/hns3: add multiple process support for hns3 PMD driver
>>>>
>>>>  MAINTAINERS                                  |    8 +
>>>>  config/common_base                           |    5 +
>>>>  config/common_linux                          |    5 +
>>>>  config/defconfig_arm-armv7a-linuxapp-gcc     |    1 +
>>>>  config/defconfig_i686-native-linuxapp-gcc    |    5 +
>>>>  config/defconfig_i686-native-linuxapp-icc    |    5 +
>>>>  config/defconfig_ppc_64-power8-linuxapp-gcc  |    1 +
>>>>  config/defconfig_x86_64-native-linuxapp-icc  |    5 +
>>>>  config/defconfig_x86_x32-native-linuxapp-gcc |    5 +
>>>>  doc/guides/nics/features/hns3.ini            |   34 +
>>>>  doc/guides/nics/features/hns3_vf.ini         |   29 +
>>>>  doc/guides/nics/hns3.rst                     |   60 +
>>>>  doc/guides/nics/index.rst                    |    1 +
>>>>  doc/guides/rel_notes/release_19_11.rst       |    5 +
>>>>  drivers/net/Makefile                         |    1 +
>>>>  drivers/net/hns3/Makefile                    |   45 +
>>>>  drivers/net/hns3/hns3_cmd.c                  |  565 +++
>>>>  drivers/net/hns3/hns3_cmd.h                  |  761 ++++
>>>>  drivers/net/hns3/hns3_dcb.c                  | 1642 +++++++++
>>>>  drivers/net/hns3/hns3_dcb.h                  |  166 +
>>>>  drivers/net/hns3/hns3_ethdev.c               | 4939 ++++++++++++++++++++++++++
>>>>  drivers/net/hns3/hns3_ethdev.h               |  645 ++++
>>>>  drivers/net/hns3/hns3_ethdev_vf.c            | 1735 +++++++++
>>>>  drivers/net/hns3/hns3_fdir.c                 | 1059 ++++++
>>>>  drivers/net/hns3/hns3_fdir.h                 |  205 ++
>>>>  drivers/net/hns3/hns3_flow.c                 | 1903 ++++++++++
>>>>  drivers/net/hns3/hns3_intr.c                 | 1166 ++++++
>>>>  drivers/net/hns3/hns3_intr.h                 |   79 +
>>>>  drivers/net/hns3/hns3_logs.h                 |   34 +
>>>>  drivers/net/hns3/hns3_mbx.c                  |  353 ++
>>>>  drivers/net/hns3/hns3_mbx.h                  |  136 +
>>>>  drivers/net/hns3/hns3_mp.c                   |  214 ++
>>>>  drivers/net/hns3/hns3_mp.h                   |   14 +
>>>>  drivers/net/hns3/hns3_regs.c                 |  368 ++
>>>>  drivers/net/hns3/hns3_regs.h                 |   99 +
>>>>  drivers/net/hns3/hns3_rss.c                  |  584 +++
>>>>  drivers/net/hns3/hns3_rss.h                  |  124 +
>>>>  drivers/net/hns3/hns3_rxtx.c                 | 1676 +++++++++
>>>>  drivers/net/hns3/hns3_rxtx.h                 |  317 ++
>>>>  drivers/net/hns3/hns3_stats.c                |  971 +++++
>>>>  drivers/net/hns3/hns3_stats.h                |  152 +
>>>>  drivers/net/hns3/meson.build                 |   37 +
>>>>  drivers/net/hns3/rte_pmd_hns3_version.map    |    3 +
>>>>  drivers/net/meson.build                      |    1 +
>>>>  mk/rte.app.mk                                |    1 +
>>>>  45 files changed, 20164 insertions(+)
>>>>  create mode 100644 doc/guides/nics/features/hns3.ini
>>>>  create mode 100644 doc/guides/nics/features/hns3_vf.ini
>>>>  create mode 100644 doc/guides/nics/hns3.rst
>>>>  create mode 100644 drivers/net/hns3/Makefile
>>>>  create mode 100644 drivers/net/hns3/hns3_cmd.c
>>>>  create mode 100644 drivers/net/hns3/hns3_cmd.h
>>>>  create mode 100644 drivers/net/hns3/hns3_dcb.c
>>>>  create mode 100644 drivers/net/hns3/hns3_dcb.h
>>>>  create mode 100644 drivers/net/hns3/hns3_ethdev.c
>>>>  create mode 100644 drivers/net/hns3/hns3_ethdev.h
>>>>  create mode 100644 drivers/net/hns3/hns3_ethdev_vf.c
>>>>  create mode 100644 drivers/net/hns3/hns3_fdir.c
>>>>  create mode 100644 drivers/net/hns3/hns3_fdir.h
>>>>  create mode 100644 drivers/net/hns3/hns3_flow.c
>>>>  create mode 100644 drivers/net/hns3/hns3_intr.c
>>>>  create mode 100644 drivers/net/hns3/hns3_intr.h
>>>>  create mode 100644 drivers/net/hns3/hns3_logs.h
>>>>  create mode 100644 drivers/net/hns3/hns3_mbx.c
>>>>  create mode 100644 drivers/net/hns3/hns3_mbx.h
>>>>  create mode 100644 drivers/net/hns3/hns3_mp.c
>>>>  create mode 100644 drivers/net/hns3/hns3_mp.h
>>>>  create mode 100644 drivers/net/hns3/hns3_regs.c
>>>>  create mode 100644 drivers/net/hns3/hns3_regs.h
>>>>  create mode 100644 drivers/net/hns3/hns3_rss.c
>>>>  create mode 100644 drivers/net/hns3/hns3_rss.h
>>>>  create mode 100644 drivers/net/hns3/hns3_rxtx.c
>>>>  create mode 100644 drivers/net/hns3/hns3_rxtx.h
>>>>  create mode 100644 drivers/net/hns3/hns3_stats.c
>>>>  create mode 100644 drivers/net/hns3/hns3_stats.h
>>>>  create mode 100644 drivers/net/hns3/meson.build
>>>>  create mode 100644 drivers/net/hns3/rte_pmd_hns3_version.map
>>>>
>> .
>>
> 
>
Wei Hu (Xavier) Sept. 26, 2019, 2:03 p.m. UTC | #5
On 2019/9/26 15:55, Ferruh Yigit wrote:
> On 9/25/2019 3:30 AM, Wei Hu (Xavier) wrote:
>>
>> On 2019/9/25 4:34, Aaron Conole wrote:
>>> "Wei Hu (Xavier)" <xavier.huwei@huawei.com> writes:
>>>
>>>> Hi, Ferruh Yigit
>>>>
>>>> I sent out patch V2 yesterday.  And I found that the following page
>>>> indicates that there is a compilation error.
>>>>
>>>>     http://mails.dpdk.org/archives/test-report/2019-September/098385.html
>>>>
>>>> The relevant sections in the log:
>>>>
>>>> <...>
>>>>
>>>> *Meson Build Failed #1: OS: FC30-64 Target:build-gcc-static FAILED:
>>>> drivers/a715181@@tmp_rte_pmd_hns3 at sta
>>>> <https://mails.dpdk.org/listinfo/test-report>/net_hns3_hns3_ethdev_vf.c.o
>>>>
>>>> <...>
>>>>
>>>> ../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: error: initialization of
>>>> ‘void (*)(struct rte_eth_dev *, struct rte_eth_dev_info *)’ from
>>>> incompatible pointer type ‘int (*)(struct rte_eth_dev *, struct
>>>> rte_eth_dev_info *)’ [-Werror=incompatible-pointer-types] 1552 |
>>>> .dev_infos_get = hns3vf_dev_infos_get, | ^~~~~~~~~~~~~~~~~~~~
>>>> ../drivers/net/hns3/hns3_ethdev_vf.c:1552:24: note: (near initialization
>>>> for ‘hns3vf_eth_dev_ops.dev_infos_get’) cc1: all warnings being treated
>>>> as errors
>>>>
>>>> <...>
>>>>
>>>> But I found that perhaps the reason for this compilation error is that
>>>> the following patch was not built on CI,
>>>>
>>>> and it had been in the latest branch of the repository:
>>>> http://dpdk.org/git/next/dpdk-next-net
>>> The patch you reference is still not present.  I guess perhaps it might
>>> have been clobbered in a rebase?
>> Hi, Aaron Conole
>>    
>>     The patch is still in the repository now, but the commit id has been
>> changed. The detail information as below:
>>
>> repo: http://dpdk.org/git/next/dpdk-next-net
>> branch: master
>>
>> commit b90f5e9b44c088d0bfa77d0458f5b28045935835
>> Author: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
>> Date:   Thu Sep 12 17:42:28 2019 +0100
>>
>>     ethdev: change device info get callback to return int
>>
>>     Change eth_dev_infos_get_t return value from void to int.
>>     Make eth_dev_infos_get_t implementations across all drivers to return
>>     negative errno values if case of error conditions.
>>
>>     Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
>>     Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
>>     Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
>>
>> <...>
> Hi Xavier,
>
> The recent ethdev patches affects the drivers, please double check if you driver
> is based on latest next-net? If it is, you can ignore the related build warnings
> for now, it will settle down.
Hi, Aaron Conole
   I found there was one conflict when performing git operation based on
the latest
next-net because of the recent change in the repository. I will send
PATCH v3 to
fix the conflict, Thanks.

   Regards
Xavier
>> diff --git a/lib/librte_ethdev/rte_ethdev_core.h
>> b/lib/librte_ethdev/rte_ethdev_core.h
>> index 2922d5b..2394b32 100644
>> --- a/lib/librte_ethdev/rte_ethdev_core.h
>> +++ b/lib/librte_ethdev/rte_ethdev_core.h
>> @@ -103,8 +103,8 @@ typedef int (*eth_queue_stats_mapping_set_t)(struct
>> rte_eth_dev *dev,
>>                                              uint8_t is_rx);
>>  /**< @internal Set a queue statistics mapping for a tx/rx queue of an
>> Ethernet device. */
>>
>> -typedef void (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
>> -                                   struct rte_eth_dev_info *dev_info);
>> +typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
>> +                                  struct rte_eth_dev_info *dev_info);
>>
>>     Thanks for your comment.
>>
>>     Regards
>> Xavier
>>
>>>> The information of the relevant patch as below:
>>>>
>>>> commit 84c4620318b642aea9b5388aa7fbc79a4fe6f29e
>>>> Author: Ivan Ilchenko <ivan.ilchenko@oktetlabs.com>
>>>> Date:   Thu Sep 12 17:42:28 2019 +0100
>>>>
>>>>     ethdev: change device info get callback to return int
>>>>
>>>> diff --git a/lib/librte_ethdev/rte_ethdev_core.h
>>>> b/lib/librte_ethdev/rte_ethdev_core.h
>>>> index 2922d5b..2394b32 100644
>>>> --- a/lib/librte_ethdev/rte_ethdev_core.h
>>>> +++ b/lib/librte_ethdev/rte_ethdev_core.h
>>>> @@ -103,8 +103,8 @@ typedef int (*eth_queue_stats_mapping_set_t)(struct
>>>> rte_eth_dev *dev,
>>>>                                              uint8_t is_rx);
>>>>  /**< @internal Set a queue statistics mapping for a tx/rx queue of an
>>>> Ethernet device. */
>>>>
>>>> -typedef void (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
>>>> -                               struct rte_eth_dev_info *dev_info);
>>>> +typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
>>>> +                            struct rte_eth_dev_info *dev_info);
>>>>  /**< @internal Get specific information of an Ethernet device. */
>>>>
>>>>
>>>>     Regards
>>>> Xavier
>>>>
>>>> On 2019/9/20 21:25, Wei Hu (Xavier) wrote:
>>>>> 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 series add DPDK rte_ethdev poll mode driver for Hisilicon
>>>>> Network Subsystem 3(hns3) network engine.
>>>>>
>>>>> Wei Hu (Xavier) (22):
>>>>>   net/hns3: add hns3 build and doc infrastructure
>>>>>   net/hns3: add hardware registers definition
>>>>>   net/hns3: add some definitions for data structure and macro
>>>>>   net/hns3: register hns3 PMD driver and add the log interface
>>>>>     definition
>>>>>   net/hns3: add support for cmd of hns3 PMD driver
>>>>>   net/hns3: add the initialization of hns3 PMD driver
>>>>>   net/hns3: add support for MAC address related operations
>>>>>   net/hns3: add support for some misc operations
>>>>>   net/hns3: add support for link_update operation
>>>>>   net/hns3: add support for flow directory of hns3 PMD driver
>>>>>   net/hns3: add support for RSS of hns3 PMD driver
>>>>>   net/hns3: add support for flow control of hns3 PMD driver
>>>>>   net/hns3: add support for vlan of hns3 PMD driver
>>>>>   net/hns3: add support for mailbox of hns3 PMD driver
>>>>>   net/hns3: add support for hns3 VF PMD driver
>>>>>   net/hns3: add RX/TX package burst and queue related operation
>>>>>   net/hns3: add start stop configure promiscuous ops
>>>>>   net/hns3: add dump register ops for hns3 PMD driver
>>>>>   net/hns3: add abnormal interrupt process for hns3 PMD driver
>>>>>   net/hns3: add stats related ops for hns3 PMD driver
>>>>>   net/hns3: add reset related process for hns3 PMD driver
>>>>>   net/hns3: add multiple process support for hns3 PMD driver
>>>>>
>>>>>  MAINTAINERS                                  |    8 +
>>>>>  config/common_base                           |    5 +
>>>>>  config/common_linux                          |    5 +
>>>>>  config/defconfig_arm-armv7a-linuxapp-gcc     |    1 +
>>>>>  config/defconfig_i686-native-linuxapp-gcc    |    5 +
>>>>>  config/defconfig_i686-native-linuxapp-icc    |    5 +
>>>>>  config/defconfig_ppc_64-power8-linuxapp-gcc  |    1 +
>>>>>  config/defconfig_x86_64-native-linuxapp-icc  |    5 +
>>>>>  config/defconfig_x86_x32-native-linuxapp-gcc |    5 +
>>>>>  doc/guides/nics/features/hns3.ini            |   34 +
>>>>>  doc/guides/nics/features/hns3_vf.ini         |   29 +
>>>>>  doc/guides/nics/hns3.rst                     |   60 +
>>>>>  doc/guides/nics/index.rst                    |    1 +
>>>>>  doc/guides/rel_notes/release_19_11.rst       |    5 +
>>>>>  drivers/net/Makefile                         |    1 +
>>>>>  drivers/net/hns3/Makefile                    |   45 +
>>>>>  drivers/net/hns3/hns3_cmd.c                  |  565 +++
>>>>>  drivers/net/hns3/hns3_cmd.h                  |  761 ++++
>>>>>  drivers/net/hns3/hns3_dcb.c                  | 1642 +++++++++
>>>>>  drivers/net/hns3/hns3_dcb.h                  |  166 +
>>>>>  drivers/net/hns3/hns3_ethdev.c               | 4939 ++++++++++++++++++++++++++
>>>>>  drivers/net/hns3/hns3_ethdev.h               |  645 ++++
>>>>>  drivers/net/hns3/hns3_ethdev_vf.c            | 1735 +++++++++
>>>>>  drivers/net/hns3/hns3_fdir.c                 | 1059 ++++++
>>>>>  drivers/net/hns3/hns3_fdir.h                 |  205 ++
>>>>>  drivers/net/hns3/hns3_flow.c                 | 1903 ++++++++++
>>>>>  drivers/net/hns3/hns3_intr.c                 | 1166 ++++++
>>>>>  drivers/net/hns3/hns3_intr.h                 |   79 +
>>>>>  drivers/net/hns3/hns3_logs.h                 |   34 +
>>>>>  drivers/net/hns3/hns3_mbx.c                  |  353 ++
>>>>>  drivers/net/hns3/hns3_mbx.h                  |  136 +
>>>>>  drivers/net/hns3/hns3_mp.c                   |  214 ++
>>>>>  drivers/net/hns3/hns3_mp.h                   |   14 +
>>>>>  drivers/net/hns3/hns3_regs.c                 |  368 ++
>>>>>  drivers/net/hns3/hns3_regs.h                 |   99 +
>>>>>  drivers/net/hns3/hns3_rss.c                  |  584 +++
>>>>>  drivers/net/hns3/hns3_rss.h                  |  124 +
>>>>>  drivers/net/hns3/hns3_rxtx.c                 | 1676 +++++++++
>>>>>  drivers/net/hns3/hns3_rxtx.h                 |  317 ++
>>>>>  drivers/net/hns3/hns3_stats.c                |  971 +++++
>>>>>  drivers/net/hns3/hns3_stats.h                |  152 +
>>>>>  drivers/net/hns3/meson.build                 |   37 +
>>>>>  drivers/net/hns3/rte_pmd_hns3_version.map    |    3 +
>>>>>  drivers/net/meson.build                      |    1 +
>>>>>  mk/rte.app.mk                                |    1 +
>>>>>  45 files changed, 20164 insertions(+)
>>>>>  create mode 100644 doc/guides/nics/features/hns3.ini
>>>>>  create mode 100644 doc/guides/nics/features/hns3_vf.ini
>>>>>  create mode 100644 doc/guides/nics/hns3.rst
>>>>>  create mode 100644 drivers/net/hns3/Makefile
>>>>>  create mode 100644 drivers/net/hns3/hns3_cmd.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_cmd.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_dcb.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_dcb.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_ethdev.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_ethdev.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_ethdev_vf.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_fdir.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_fdir.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_flow.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_intr.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_intr.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_logs.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_mbx.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_mbx.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_mp.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_mp.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_regs.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_regs.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_rss.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_rss.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_rxtx.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_rxtx.h
>>>>>  create mode 100644 drivers/net/hns3/hns3_stats.c
>>>>>  create mode 100644 drivers/net/hns3/hns3_stats.h
>>>>>  create mode 100644 drivers/net/hns3/meson.build
>>>>>  create mode 100644 drivers/net/hns3/rte_pmd_hns3_version.map
>>>>>
>>> .
>>>
>>
>
> .
>