mbox series

[v15,00/18] add support for idpf PMD in DPDK

Message ID 20221029032729.22772-1-beilei.xing@intel.com (mailing list archive)
Headers
Series add support for idpf PMD in DPDK |

Message

Xing, Beilei Oct. 29, 2022, 3:27 a.m. UTC
  From: Beilei Xing <beilei.xing@intel.com>

This patchset introduced the idpf (Infrastructure Data Path Function) PMD in DPDK for Intel® IPU E2000 (Device ID: 0x1452).
The Intel® IPU E2000 targets to deliver high performance under real workloads with security and isolation.
Please refer to
https://www.intel.com/content/www/us/en/products/network-io/infrastructure-processing-units/asic/e2000-asic.html
for more information.

Linux upstream is still ongoing, previous work refers to https://patchwork.ozlabs.org/project/intel-wired-lan/patch/20220128001009.721392-20-alan.brady@intel.com/.

v2-v4:
fixed some coding style issues and did some refactors.

v5:
fixed typo.

v6-v9:
fixed build errors and coding style issues.

v11:
 - move shared code to common/idpf/base
 - Create one vport if there's no vport devargs
 - Refactor if conditions according to coding style
 - Refactor virtual channel return values
 - Refine dev_stop function
 - Refine RSS lut/key
 - Fix build error

v12:
 - Refine dev_configure
 - Fix coding style according to the comments
 - Re-order patch
 - Romove dev_supported_ptypes_get

v13:
 - refine dev_start/stop and queue_start/stop
 - fix timestamp offload

v14:
 - fix wrong position for rte_validate_tx_offload

v15:
 - refine the return value for ethdev ops.
 - removce forward static declarations.
 - refine get caps.
 - fix lock/unlock handling.

Junfeng Guo (18):
  common/idpf: introduce common library
  net/idpf: add support for device initialization
  net/idpf: add Tx queue setup
  net/idpf: add Rx queue setup
  net/idpf: add support for device start and stop
  net/idpf: add support for queue start
  net/idpf: add support for queue stop
  net/idpf: add queue release
  net/idpf: add support for MTU configuration
  net/idpf: add support for basic Rx datapath
  net/idpf: add support for basic Tx datapath
  net/idpf: support parsing packet type
  net/idpf: add support for write back based on ITR expire
  net/idpf: add support for RSS
  net/idpf: add support for Rx offloading
  net/idpf: add support for Tx offloading
  net/idpf: add AVX512 data path for single queue model
  net/idpf: add support for timestamp offload

 MAINTAINERS                                   |    9 +
 doc/guides/nics/features/idpf.ini             |   17 +
 doc/guides/nics/idpf.rst                      |   85 +
 doc/guides/nics/index.rst                     |    1 +
 doc/guides/rel_notes/release_22_11.rst        |    6 +
 drivers/common/idpf/base/idpf_alloc.h         |   22 +
 drivers/common/idpf/base/idpf_common.c        |  364 +++
 drivers/common/idpf/base/idpf_controlq.c      |  691 ++++
 drivers/common/idpf/base/idpf_controlq.h      |  224 ++
 drivers/common/idpf/base/idpf_controlq_api.h  |  234 ++
 .../common/idpf/base/idpf_controlq_setup.c    |  179 +
 drivers/common/idpf/base/idpf_devids.h        |   18 +
 drivers/common/idpf/base/idpf_lan_pf_regs.h   |  134 +
 drivers/common/idpf/base/idpf_lan_txrx.h      |  428 +++
 drivers/common/idpf/base/idpf_lan_vf_regs.h   |  114 +
 drivers/common/idpf/base/idpf_osdep.h         |  364 +++
 drivers/common/idpf/base/idpf_prototype.h     |   45 +
 drivers/common/idpf/base/idpf_type.h          |  106 +
 drivers/common/idpf/base/meson.build          |   14 +
 drivers/common/idpf/base/siov_regs.h          |   47 +
 drivers/common/idpf/base/virtchnl.h           | 2866 +++++++++++++++++
 drivers/common/idpf/base/virtchnl2.h          | 1462 +++++++++
 drivers/common/idpf/base/virtchnl2_lan_desc.h |  606 ++++
 .../common/idpf/base/virtchnl_inline_ipsec.h  |  567 ++++
 drivers/common/idpf/meson.build               |    4 +
 drivers/common/idpf/version.map               |   12 +
 drivers/common/meson.build                    |    1 +
 drivers/net/idpf/idpf_ethdev.c                | 1293 ++++++++
 drivers/net/idpf/idpf_ethdev.h                |  252 ++
 drivers/net/idpf/idpf_logs.h                  |   56 +
 drivers/net/idpf/idpf_rxtx.c                  | 2308 +++++++++++++
 drivers/net/idpf/idpf_rxtx.h                  |  291 ++
 drivers/net/idpf/idpf_rxtx_vec_avx512.c       |  871 +++++
 drivers/net/idpf/idpf_rxtx_vec_common.h       |  100 +
 drivers/net/idpf/idpf_vchnl.c                 | 1416 ++++++++
 drivers/net/idpf/meson.build                  |   44 +
 drivers/net/idpf/version.map                  |    3 +
 drivers/net/meson.build                       |    1 +
 38 files changed, 15255 insertions(+)
 create mode 100644 doc/guides/nics/features/idpf.ini
 create mode 100644 doc/guides/nics/idpf.rst
 create mode 100644 drivers/common/idpf/base/idpf_alloc.h
 create mode 100644 drivers/common/idpf/base/idpf_common.c
 create mode 100644 drivers/common/idpf/base/idpf_controlq.c
 create mode 100644 drivers/common/idpf/base/idpf_controlq.h
 create mode 100644 drivers/common/idpf/base/idpf_controlq_api.h
 create mode 100644 drivers/common/idpf/base/idpf_controlq_setup.c
 create mode 100644 drivers/common/idpf/base/idpf_devids.h
 create mode 100644 drivers/common/idpf/base/idpf_lan_pf_regs.h
 create mode 100644 drivers/common/idpf/base/idpf_lan_txrx.h
 create mode 100644 drivers/common/idpf/base/idpf_lan_vf_regs.h
 create mode 100644 drivers/common/idpf/base/idpf_osdep.h
 create mode 100644 drivers/common/idpf/base/idpf_prototype.h
 create mode 100644 drivers/common/idpf/base/idpf_type.h
 create mode 100644 drivers/common/idpf/base/meson.build
 create mode 100644 drivers/common/idpf/base/siov_regs.h
 create mode 100644 drivers/common/idpf/base/virtchnl.h
 create mode 100644 drivers/common/idpf/base/virtchnl2.h
 create mode 100644 drivers/common/idpf/base/virtchnl2_lan_desc.h
 create mode 100644 drivers/common/idpf/base/virtchnl_inline_ipsec.h
 create mode 100644 drivers/common/idpf/meson.build
 create mode 100644 drivers/common/idpf/version.map
 create mode 100644 drivers/net/idpf/idpf_ethdev.c
 create mode 100644 drivers/net/idpf/idpf_ethdev.h
 create mode 100644 drivers/net/idpf/idpf_logs.h
 create mode 100644 drivers/net/idpf/idpf_rxtx.c
 create mode 100644 drivers/net/idpf/idpf_rxtx.h
 create mode 100644 drivers/net/idpf/idpf_rxtx_vec_avx512.c
 create mode 100644 drivers/net/idpf/idpf_rxtx_vec_common.h
 create mode 100644 drivers/net/idpf/idpf_vchnl.c
 create mode 100644 drivers/net/idpf/meson.build
 create mode 100644 drivers/net/idpf/version.map
  

Comments

Andrew Rybchenko Oct. 29, 2022, 2:48 p.m. UTC | #1
On 10/29/22 06:27, beilei.xing@intel.com wrote:
> From: Beilei Xing <beilei.xing@intel.com>
> 
> This patchset introduced the idpf (Infrastructure Data Path Function) PMD in DPDK for Intel® IPU E2000 (Device ID: 0x1452).
> The Intel® IPU E2000 targets to deliver high performance under real workloads with security and isolation.
> Please refer to
> https://www.intel.com/content/www/us/en/products/network-io/infrastructure-processing-units/asic/e2000-asic.html
> for more information.
> 
> Linux upstream is still ongoing, previous work refers to https://patchwork.ozlabs.org/project/intel-wired-lan/patch/20220128001009.721392-20-alan.brady@intel.com/.
> 
> v2-v4:
> fixed some coding style issues and did some refactors.
> 
> v5:
> fixed typo.
> 
> v6-v9:
> fixed build errors and coding style issues.
> 
> v11:
>   - move shared code to common/idpf/base
>   - Create one vport if there's no vport devargs
>   - Refactor if conditions according to coding style
>   - Refactor virtual channel return values
>   - Refine dev_stop function
>   - Refine RSS lut/key
>   - Fix build error
> 
> v12:
>   - Refine dev_configure
>   - Fix coding style according to the comments
>   - Re-order patch
>   - Romove dev_supported_ptypes_get
> 
> v13:
>   - refine dev_start/stop and queue_start/stop
>   - fix timestamp offload
> 
> v14:
>   - fix wrong position for rte_validate_tx_offload
> 
> v15:
>   - refine the return value for ethdev ops.
>   - removce forward static declarations.
>   - refine get caps.
>   - fix lock/unlock handling.

Applied to dpdk-next-net/main, thanks.

I've a number of concerns:
  * conditional compilation IDPF_RX_PTYPE_OFFLOAD in [PATCH v15 17/18] 
net/idpf: add AVX512 data path for single queue model
  * the same prefix used for functions in common/idpf/base and net/idpf 
drivers
  * common/idpf/base uses own defines for negative errno (defined as a 
number with corresponding errno in a comment). Strictly speaking it is 
not the same, but work fine in a majority of cases

So, final decision will be done by Thomas on pulling to main tree.
  
Xing, Beilei Oct. 31, 2022, 2:26 a.m. UTC | #2
> -----Original Message-----
> From: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> Sent: Saturday, October 29, 2022 10:48 PM
> To: Xing, Beilei <beilei.xing@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>
> Cc: dev@dpdk.org; Thomas Monjalon <thomas@monjalon.net>
> Subject: Re: [PATCH v15 00/18] add support for idpf PMD in DPDK
> 
> On 10/29/22 06:27, beilei.xing@intel.com wrote:
> > From: Beilei Xing <beilei.xing@intel.com>
> >
> > This patchset introduced the idpf (Infrastructure Data Path Function) PMD
> in DPDK for Intel® IPU E2000 (Device ID: 0x1452).
> > The Intel® IPU E2000 targets to deliver high performance under real
> workloads with security and isolation.
> > Please refer to
> > https://www.intel.com/content/www/us/en/products/network-
> io/infrastruc
> > ture-processing-units/asic/e2000-asic.html
> > for more information.
> >
> > Linux upstream is still ongoing, previous work refers to
> https://patchwork.ozlabs.org/project/intel-wired-
> lan/patch/20220128001009.721392-20-alan.brady@intel.com/.
> >
> > v2-v4:
> > fixed some coding style issues and did some refactors.
> >
> > v5:
> > fixed typo.
> >
> > v6-v9:
> > fixed build errors and coding style issues.
> >
> > v11:
> >   - move shared code to common/idpf/base
> >   - Create one vport if there's no vport devargs
> >   - Refactor if conditions according to coding style
> >   - Refactor virtual channel return values
> >   - Refine dev_stop function
> >   - Refine RSS lut/key
> >   - Fix build error
> >
> > v12:
> >   - Refine dev_configure
> >   - Fix coding style according to the comments
> >   - Re-order patch
> >   - Romove dev_supported_ptypes_get
> >
> > v13:
> >   - refine dev_start/stop and queue_start/stop
> >   - fix timestamp offload
> >
> > v14:
> >   - fix wrong position for rte_validate_tx_offload
> >
> > v15:
> >   - refine the return value for ethdev ops.
> >   - removce forward static declarations.
> >   - refine get caps.
> >   - fix lock/unlock handling.
> 
> Applied to dpdk-next-net/main, thanks.
> 
> I've a number of concerns:
>   * conditional compilation IDPF_RX_PTYPE_OFFLOAD in [PATCH v15 17/18]

Will remove the conditional compilation

> net/idpf: add AVX512 data path for single queue model
>   * the same prefix used for functions in common/idpf/base and net/idpf
> drivers

I think the name of PMD and common library can be the same, right?

>   * common/idpf/base uses own defines for negative errno (defined as a
> number with corresponding errno in a comment). Strictly speaking it is not
> the same, but work fine in a majority of cases

Make sense, will remove the own defines.
Thanks for your review, I saw the status in patchwork has been accepted, but didn't see idpf in dpdk-next-net, will send v16 to address the comments first.

> 
> So, final decision will be done by Thomas on pulling to main tree.