[v2,00/21] net/atlantic: Aquantia aQtion 10G NIC Family DPDK PMD driver
mbox series

Message ID 1536841371-12431-1-git-send-email-igor.russkikh@aquantia.com
Headers show
Series
  • net/atlantic: Aquantia aQtion 10G NIC Family DPDK PMD driver
Related show

Message

Igor Russkikh Sept. 13, 2018, 12:22 p.m. UTC
Hello DPDK community!

Aquantia would like to contribute PMD for aQtion AQC10X NIC family:
https://www.aquantia.com/products/aqtion/chips/
These are 10G ethernet NICs with various features.

We do base this work on parts of the existing native linux kernel
driver source (atlantic). Shared code is hw_atl hardware and registers access module.

We'd like to target this driver for 18.11 DPDK release timeline,
it'd be good to hear comments from the community on how feasible is this.

This patchset implements basic driver infrastructure,
vlan offloads, checksumm offloads, rss control,
multiring, jumbo frames and other features.

Later on, we plan to share HW MACSEC offloads, rxflows and other features.

version 2 changes:
- fixed build on freebsd (no ETIME const)
- fixed a bunch of checkpatch failures and warnings
- removed extra CFLAGS disabled warning
- making static arrays const

Igor Russkikh (11):
  net/atlantic: documentation and rel notes
  net/atlantic: logging macroes and some typedefs
  net/atlantic: hw_atl register declarations
  net/atlantic: b0 hardware layer main logic
  net/atlantic: firmware operations layer
  net/atlantic: hardware register access routines
  net/atlantic: rte device start, stop, initial configuration
  net/atlantic: RSS and RETA manipulation API
  net/atlantic: LED control DPDK and private APIs
  net/atlantic: device statistics, xstats
  net/atlantic: RX side structures and implementation

Pavel Belous (10):
  net/atlantic: atlantic PMD driver skeleton
  net/atlantic: link status and interrupt management
  net/atlantic: add hw adapter structures and defines
  net/atlantic: flow control configuration
  net/atlantic: MAC address manipulations
  net/atlantic: eeprom and register manipulation routines
  net/atlantic: promisc and allmulti configuration
  net/atlantic: VLAN filters and offloads
  net/atlantic: device MTU and statuses
  net/atlantic: TX side structures and implementation

 config/common_base                                |    9 +
 doc/guides/nics/atlantic.rst                      |   59 +
 doc/guides/nics/features/atlantic.ini             |   37 +
 doc/guides/nics/index.rst                         |    1 +
 doc/guides/rel_notes/release_18_11.rst            |    5 +
 drivers/net/Makefile                              |    2 +
 drivers/net/atlantic/Makefile                     |   46 +
 drivers/net/atlantic/atl_common.h                 |   96 +
 drivers/net/atlantic/atl_ethdev.c                 | 1751 +++++++++++++++
 drivers/net/atlantic/atl_ethdev.h                 |  133 ++
 drivers/net/atlantic/atl_hw_regs.c                |   52 +
 drivers/net/atlantic/atl_hw_regs.h                |   53 +
 drivers/net/atlantic/atl_logs.h                   |   68 +
 drivers/net/atlantic/atl_rxtx.c                   | 1365 ++++++++++++
 drivers/net/atlantic/atl_types.h                  |  235 ++
 drivers/net/atlantic/hw_atl/hw_atl_b0.c           |  510 +++++
 drivers/net/atlantic/hw_atl/hw_atl_b0.h           |   40 +
 drivers/net/atlantic/hw_atl/hw_atl_b0_internal.h  |  145 ++
 drivers/net/atlantic/hw_atl/hw_atl_llh.c          | 1490 +++++++++++++
 drivers/net/atlantic/hw_atl/hw_atl_llh.h          |  714 ++++++
 drivers/net/atlantic/hw_atl/hw_atl_llh_internal.h | 2407 +++++++++++++++++++++
 drivers/net/atlantic/hw_atl/hw_atl_utils.c        |  942 ++++++++
 drivers/net/atlantic/hw_atl/hw_atl_utils.h        |  510 +++++
 drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c   |  618 ++++++
 drivers/net/atlantic/meson.build                  |   28 +
 drivers/net/atlantic/rte_pmd_atlantic.c           |   19 +
 drivers/net/atlantic/rte_pmd_atlantic.h           |   44 +
 drivers/net/atlantic/rte_pmd_atlantic_version.map |    4 +
 drivers/net/meson.build                           |    1 +
 mk/rte.app.mk                                     |    1 +
 30 files changed, 11385 insertions(+)
 create mode 100644 doc/guides/nics/atlantic.rst
 create mode 100644 doc/guides/nics/features/atlantic.ini
 create mode 100644 drivers/net/atlantic/Makefile
 create mode 100644 drivers/net/atlantic/atl_common.h
 create mode 100644 drivers/net/atlantic/atl_ethdev.c
 create mode 100644 drivers/net/atlantic/atl_ethdev.h
 create mode 100644 drivers/net/atlantic/atl_hw_regs.c
 create mode 100644 drivers/net/atlantic/atl_hw_regs.h
 create mode 100644 drivers/net/atlantic/atl_logs.h
 create mode 100644 drivers/net/atlantic/atl_rxtx.c
 create mode 100644 drivers/net/atlantic/atl_types.h
 create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_b0.c
 create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_b0.h
 create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_b0_internal.h
 create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_llh.c
 create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_llh.h
 create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_llh_internal.h
 create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_utils.c
 create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_utils.h
 create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c
 create mode 100644 drivers/net/atlantic/meson.build
 create mode 100644 drivers/net/atlantic/rte_pmd_atlantic.c
 create mode 100644 drivers/net/atlantic/rte_pmd_atlantic.h
 create mode 100644 drivers/net/atlantic/rte_pmd_atlantic_version.map

Comments

Ferruh Yigit Sept. 21, 2018, 2:20 p.m. UTC | #1
On 9/13/2018 1:22 PM, Igor Russkikh wrote:
> Hello DPDK community!
> 
> Aquantia would like to contribute PMD for aQtion AQC10X NIC family:
> https://www.aquantia.com/products/aqtion/chips/
> These are 10G ethernet NICs with various features.
> 
> We do base this work on parts of the existing native linux kernel
> driver source (atlantic). Shared code is hw_atl hardware and registers access module.
> 
> We'd like to target this driver for 18.11 DPDK release timeline,
> it'd be good to hear comments from the community on how feasible is this.
> 
> This patchset implements basic driver infrastructure,
> vlan offloads, checksumm offloads, rss control,
> multiring, jumbo frames and other features.
> 
> Later on, we plan to share HW MACSEC offloads, rxflows and other features.

Hello!

Welcome to DPDK, thanks for contributing.

I have checked first patch, there are some fundamental build issues related to
how patch split. I will stop reviewing for now until next version which can be
built.

Please check comments on first patch.

Thanks,
ferruh
Kevin Traynor Sept. 21, 2018, 2:43 p.m. UTC | #2
On 09/13/2018 01:22 PM, Igor Russkikh wrote:
> Hello DPDK community!
> 
> Aquantia would like to contribute PMD for aQtion AQC10X NIC family:
> https://www.aquantia.com/products/aqtion/chips/
> These are 10G ethernet NICs with various features.
> 
> We do base this work on parts of the existing native linux kernel
> driver source (atlantic). Shared code is hw_atl hardware and registers access module.
> 

Hi Igor,

The link in the contributing guide [1] says "The DPDK uses the Open
Source BSD-3-Clause license for the core libraries and drivers." There
seems to be some GPL only licensed files in the patchset. There are
other examples where dual licensing is used, so perhaps that's an option
for you.

[1] http://doc.dpdk.org/guides/contributing/patches.html#source-license
http://git.dpdk.org/dpdk/tree/license/README

+cc Hemant

Kevin.


> We'd like to target this driver for 18.11 DPDK release timeline,
> it'd be good to hear comments from the community on how feasible is this.
> 
> This patchset implements basic driver infrastructure,
> vlan offloads, checksumm offloads, rss control,
> multiring, jumbo frames and other features.
> 
> Later on, we plan to share HW MACSEC offloads, rxflows and other features.
> 
> version 2 changes:
> - fixed build on freebsd (no ETIME const)
> - fixed a bunch of checkpatch failures and warnings
> - removed extra CFLAGS disabled warning
> - making static arrays const
> 
> Igor Russkikh (11):
>   net/atlantic: documentation and rel notes
>   net/atlantic: logging macroes and some typedefs
>   net/atlantic: hw_atl register declarations
>   net/atlantic: b0 hardware layer main logic
>   net/atlantic: firmware operations layer
>   net/atlantic: hardware register access routines
>   net/atlantic: rte device start, stop, initial configuration
>   net/atlantic: RSS and RETA manipulation API
>   net/atlantic: LED control DPDK and private APIs
>   net/atlantic: device statistics, xstats
>   net/atlantic: RX side structures and implementation
> 
> Pavel Belous (10):
>   net/atlantic: atlantic PMD driver skeleton
>   net/atlantic: link status and interrupt management
>   net/atlantic: add hw adapter structures and defines
>   net/atlantic: flow control configuration
>   net/atlantic: MAC address manipulations
>   net/atlantic: eeprom and register manipulation routines
>   net/atlantic: promisc and allmulti configuration
>   net/atlantic: VLAN filters and offloads
>   net/atlantic: device MTU and statuses
>   net/atlantic: TX side structures and implementation
> 
>  config/common_base                                |    9 +
>  doc/guides/nics/atlantic.rst                      |   59 +
>  doc/guides/nics/features/atlantic.ini             |   37 +
>  doc/guides/nics/index.rst                         |    1 +
>  doc/guides/rel_notes/release_18_11.rst            |    5 +
>  drivers/net/Makefile                              |    2 +
>  drivers/net/atlantic/Makefile                     |   46 +
>  drivers/net/atlantic/atl_common.h                 |   96 +
>  drivers/net/atlantic/atl_ethdev.c                 | 1751 +++++++++++++++
>  drivers/net/atlantic/atl_ethdev.h                 |  133 ++
>  drivers/net/atlantic/atl_hw_regs.c                |   52 +
>  drivers/net/atlantic/atl_hw_regs.h                |   53 +
>  drivers/net/atlantic/atl_logs.h                   |   68 +
>  drivers/net/atlantic/atl_rxtx.c                   | 1365 ++++++++++++
>  drivers/net/atlantic/atl_types.h                  |  235 ++
>  drivers/net/atlantic/hw_atl/hw_atl_b0.c           |  510 +++++
>  drivers/net/atlantic/hw_atl/hw_atl_b0.h           |   40 +
>  drivers/net/atlantic/hw_atl/hw_atl_b0_internal.h  |  145 ++
>  drivers/net/atlantic/hw_atl/hw_atl_llh.c          | 1490 +++++++++++++
>  drivers/net/atlantic/hw_atl/hw_atl_llh.h          |  714 ++++++
>  drivers/net/atlantic/hw_atl/hw_atl_llh_internal.h | 2407 +++++++++++++++++++++
>  drivers/net/atlantic/hw_atl/hw_atl_utils.c        |  942 ++++++++
>  drivers/net/atlantic/hw_atl/hw_atl_utils.h        |  510 +++++
>  drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c   |  618 ++++++
>  drivers/net/atlantic/meson.build                  |   28 +
>  drivers/net/atlantic/rte_pmd_atlantic.c           |   19 +
>  drivers/net/atlantic/rte_pmd_atlantic.h           |   44 +
>  drivers/net/atlantic/rte_pmd_atlantic_version.map |    4 +
>  drivers/net/meson.build                           |    1 +
>  mk/rte.app.mk                                     |    1 +
>  30 files changed, 11385 insertions(+)
>  create mode 100644 doc/guides/nics/atlantic.rst
>  create mode 100644 doc/guides/nics/features/atlantic.ini
>  create mode 100644 drivers/net/atlantic/Makefile
>  create mode 100644 drivers/net/atlantic/atl_common.h
>  create mode 100644 drivers/net/atlantic/atl_ethdev.c
>  create mode 100644 drivers/net/atlantic/atl_ethdev.h
>  create mode 100644 drivers/net/atlantic/atl_hw_regs.c
>  create mode 100644 drivers/net/atlantic/atl_hw_regs.h
>  create mode 100644 drivers/net/atlantic/atl_logs.h
>  create mode 100644 drivers/net/atlantic/atl_rxtx.c
>  create mode 100644 drivers/net/atlantic/atl_types.h
>  create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_b0.c
>  create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_b0.h
>  create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_b0_internal.h
>  create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_llh.c
>  create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_llh.h
>  create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_llh_internal.h
>  create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_utils.c
>  create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_utils.h
>  create mode 100644 drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c
>  create mode 100644 drivers/net/atlantic/meson.build
>  create mode 100644 drivers/net/atlantic/rte_pmd_atlantic.c
>  create mode 100644 drivers/net/atlantic/rte_pmd_atlantic.h
>  create mode 100644 drivers/net/atlantic/rte_pmd_atlantic_version.map
>