mbox series

[v2,00/32] add support for baseband phy

Message ID 20210615110345.11057-1-tduszynski@marvell.com (mailing list archive)
Headers
Series add support for baseband phy |

Message

Tomasz Duszynski June 15, 2021, 11:03 a.m. UTC
  This series adds initial support for baseband PHY available on SOCs
belonging to Fusion family. BPHY is a hardware block comprising
accelerators and DSPs specifically tailored for 5G/LTE inline usecases.

This series introduces two rawdev PMDs along with low level common code.

CGX/RPM PMD allows one to configure Ethernet I/O interfaces attached to
BPHY via standard enqueue/dequeue operations.

BPHY PMD provides an out-of-band access to PCI device BARs and a set of
experimental APIs allowing one to setup custom IRQs handlers. This
functionality is backed by kernel module using ioctl() mechanism. Series
has nothing to do with 5G/LTE baseband protocol processing.

v2:
- change some errors to more relevant ones (-EINVAL/-ENODEV)
- fix MAINTAINERS styling issues
- fix dpdk-devbind.py
- fix meson.build styling issues
- fix warning related to possibly uninitialized scr0 variable
- fix warning releated to unused function
- improve documentation
- improve enums items naming
- spread documentation across relevant patches

Tomasz Duszynski (28):
  common/cnxk: add bphy cgx/rpm initialization and cleanup
  common/cnxk: support for communication with atf
  common/cnxk: support for getting link information
  common/cnxk: support for changing internal loopback
  common/cnxk: support for changing ptp mode
  common/cnxk: support for setting link mode
  common/cnxk: support for changing link state
  common/cnxk: support for lmac start/stop
  raw/cnxk_bphy: add bphy cgx/rpm skeleton driver
  raw/cnxk_bphy: support for reading queue configuration
  raw/cnxk_bphy: support for reading queue count
  raw/cnxk_bphy: support for enqueue operation
  raw/cnxk_bphy: support for dequeue operation
  raw/cnxk_bphy: support for performing selftest
  common/cnxk: support for device init and fini
  common/cnxk: support for baseband PHY irq setup
  common/cnxk: support for checking irq availability
  common/cnxk: support for retrieving irq stack
  common/cnxk: support for removing irq stack
  common/cnxk: support for setting bphy irq handler
  common/cnxk: support for clearing bphy irq handler
  common/cnxk: support for registering bphy irq
  raw/cnxk_bphy: add baseband PHY skeleton driver
  raw/cnxk_bphy: support for reading bphy queue configuration
  raw/cnxk_bphy: support for reading bphy queue count
  raw/cnxk_bphy: support for bphy enqueue operation
  raw/cnxk_bphy: support for bphy dequeue operation
  raw/cnxk_bphy: support for interrupt init and cleanup
  raw/cnxk_bphy: support for reading number of bphy irqs
  raw/cnxk_bphy: support for retrieving bphy device memory
  raw/cnxk_bphy: support for registering bphy irq handlers
  raw/cnxk_bphy: support for bphy selftest

 MAINTAINERS                                |   7 +-
 doc/guides/rawdevs/cnxk_bphy.rst           | 154 ++++++++
 doc/guides/rawdevs/index.rst               |   1 +
 doc/guides/rel_notes/release_21_08.rst     |  13 +
 drivers/common/cnxk/meson.build            |   3 +
 drivers/common/cnxk/roc_api.h              |   7 +
 drivers/common/cnxk/roc_bphy.c             |  40 ++
 drivers/common/cnxk/roc_bphy.h             |  17 +
 drivers/common/cnxk/roc_bphy_cgx.c         | 396 +++++++++++++++++++
 drivers/common/cnxk/roc_bphy_cgx.h         | 120 ++++++
 drivers/common/cnxk/roc_bphy_cgx_priv.h    | 131 +++++++
 drivers/common/cnxk/roc_bphy_irq.c         | 422 +++++++++++++++++++++
 drivers/common/cnxk/roc_bphy_irq.h         |  49 +++
 drivers/common/cnxk/roc_idev.c             |   1 +
 drivers/common/cnxk/roc_idev_priv.h        |   2 +
 drivers/common/cnxk/roc_io.h               |   9 +
 drivers/common/cnxk/roc_io_generic.h       |   5 +
 drivers/common/cnxk/roc_priv.h             |   3 +
 drivers/common/cnxk/version.map            |  22 ++
 drivers/raw/cnxk_bphy/cnxk_bphy.c          | 329 ++++++++++++++++
 drivers/raw/cnxk_bphy/cnxk_bphy_cgx.c      | 321 ++++++++++++++++
 drivers/raw/cnxk_bphy/cnxk_bphy_cgx.h      |  10 +
 drivers/raw/cnxk_bphy/cnxk_bphy_cgx_test.c | 206 ++++++++++
 drivers/raw/cnxk_bphy/cnxk_bphy_irq.c      | 100 +++++
 drivers/raw/cnxk_bphy/cnxk_bphy_irq.h      |  41 ++
 drivers/raw/cnxk_bphy/meson.build          |  12 +
 drivers/raw/cnxk_bphy/rte_pmd_bphy.h       | 233 ++++++++++++
 drivers/raw/cnxk_bphy/version.map          |   3 +
 drivers/raw/meson.build                    |   1 +
 usertools/dpdk-devbind.py                  |   6 +-
 30 files changed, 2662 insertions(+), 2 deletions(-)
 create mode 100644 doc/guides/rawdevs/cnxk_bphy.rst
 create mode 100644 drivers/common/cnxk/roc_bphy.c
 create mode 100644 drivers/common/cnxk/roc_bphy.h
 create mode 100644 drivers/common/cnxk/roc_bphy_cgx.c
 create mode 100644 drivers/common/cnxk/roc_bphy_cgx.h
 create mode 100644 drivers/common/cnxk/roc_bphy_cgx_priv.h
 create mode 100644 drivers/common/cnxk/roc_bphy_irq.c
 create mode 100644 drivers/common/cnxk/roc_bphy_irq.h
 create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy.c
 create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_cgx.c
 create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_cgx.h
 create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_cgx_test.c
 create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_irq.c
 create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_irq.h
 create mode 100644 drivers/raw/cnxk_bphy/meson.build
 create mode 100644 drivers/raw/cnxk_bphy/rte_pmd_bphy.h
 create mode 100644 drivers/raw/cnxk_bphy/version.map

--
2.25.1
  

Comments

Jerin Jacob June 21, 2021, 8:43 a.m. UTC | #1
On Tue, Jun 15, 2021 at 4:33 PM Tomasz Duszynski <tduszynski@marvell.com> wrote:
>
> This series adds initial support for baseband PHY available on SOCs
> belonging to Fusion family. BPHY is a hardware block comprising
> accelerators and DSPs specifically tailored for 5G/LTE inline usecases.
>
> This series introduces two rawdev PMDs along with low level common code.
>
> CGX/RPM PMD allows one to configure Ethernet I/O interfaces attached to
> BPHY via standard enqueue/dequeue operations.
>
> BPHY PMD provides an out-of-band access to PCI device BARs and a set of
> experimental APIs allowing one to setup custom IRQs handlers. This
> functionality is backed by kernel module using ioctl() mechanism. Series
> has nothing to do with 5G/LTE baseband protocol processing.


This series looks good to me.
Feel free to add my reviewed by for the series after fix the following

1) Typo
diff --git a/doc/guides/rawdevs/cnxk_bphy.rst b/doc/guides/rawdevs/cnxk_bphy.rst
-``CNXK_BPHY_CGX_MSG_TYPE_INTLBK_DISABLE``. Former will activate
internal loobback while the latter
+``CNXK_BPHY_CGX_MSG_TYPE_INTLBK_DISABLE``. Former will activate
internal loopback while the latter

2) checkpatch
WARNING:LONG_LINE: line length of 85 exceeds 80 columns
#88: FILE: drivers/common/cnxk/roc_bphy_cgx.c:77:
+               if (FIELD_GET(SCR0_ETH_EVT_STS_S_EVT_TYPE, *scr0) ==
ETH_EVT_ASYNC &&

3) In the release notes, the following items can be removed.

+  Added new Baseband phy PMD which provides means for configuring
baseband hardware via
+  standard rawdev enq/deq operations. Baseband phy is a hardware
subsystem accelerating
+  5G/LTE related tasks.
+
+  Both BPHY and BPHY CGX/RPM drivers are related hence kept together
to ease maintenance.

>
> v2:
> - change some errors to more relevant ones (-EINVAL/-ENODEV)
> - fix MAINTAINERS styling issues
> - fix dpdk-devbind.py
> - fix meson.build styling issues
> - fix warning related to possibly uninitialized scr0 variable
> - fix warning releated to unused function
> - improve documentation
> - improve enums items naming
> - spread documentation across relevant patches
>
> Tomasz Duszynski (28):
>   common/cnxk: add bphy cgx/rpm initialization and cleanup
>   common/cnxk: support for communication with atf
>   common/cnxk: support for getting link information
>   common/cnxk: support for changing internal loopback
>   common/cnxk: support for changing ptp mode
>   common/cnxk: support for setting link mode
>   common/cnxk: support for changing link state
>   common/cnxk: support for lmac start/stop
>   raw/cnxk_bphy: add bphy cgx/rpm skeleton driver
>   raw/cnxk_bphy: support for reading queue configuration
>   raw/cnxk_bphy: support for reading queue count
>   raw/cnxk_bphy: support for enqueue operation
>   raw/cnxk_bphy: support for dequeue operation
>   raw/cnxk_bphy: support for performing selftest
>   common/cnxk: support for device init and fini
>   common/cnxk: support for baseband PHY irq setup
>   common/cnxk: support for checking irq availability
>   common/cnxk: support for retrieving irq stack
>   common/cnxk: support for removing irq stack
>   common/cnxk: support for setting bphy irq handler
>   common/cnxk: support for clearing bphy irq handler
>   common/cnxk: support for registering bphy irq
>   raw/cnxk_bphy: add baseband PHY skeleton driver
>   raw/cnxk_bphy: support for reading bphy queue configuration
>   raw/cnxk_bphy: support for reading bphy queue count
>   raw/cnxk_bphy: support for bphy enqueue operation
>   raw/cnxk_bphy: support for bphy dequeue operation
>   raw/cnxk_bphy: support for interrupt init and cleanup
>   raw/cnxk_bphy: support for reading number of bphy irqs
>   raw/cnxk_bphy: support for retrieving bphy device memory
>   raw/cnxk_bphy: support for registering bphy irq handlers
>   raw/cnxk_bphy: support for bphy selftest
>
>  MAINTAINERS                                |   7 +-
>  doc/guides/rawdevs/cnxk_bphy.rst           | 154 ++++++++
>  doc/guides/rawdevs/index.rst               |   1 +
>  doc/guides/rel_notes/release_21_08.rst     |  13 +
>  drivers/common/cnxk/meson.build            |   3 +
>  drivers/common/cnxk/roc_api.h              |   7 +
>  drivers/common/cnxk/roc_bphy.c             |  40 ++
>  drivers/common/cnxk/roc_bphy.h             |  17 +
>  drivers/common/cnxk/roc_bphy_cgx.c         | 396 +++++++++++++++++++
>  drivers/common/cnxk/roc_bphy_cgx.h         | 120 ++++++
>  drivers/common/cnxk/roc_bphy_cgx_priv.h    | 131 +++++++
>  drivers/common/cnxk/roc_bphy_irq.c         | 422 +++++++++++++++++++++
>  drivers/common/cnxk/roc_bphy_irq.h         |  49 +++
>  drivers/common/cnxk/roc_idev.c             |   1 +
>  drivers/common/cnxk/roc_idev_priv.h        |   2 +
>  drivers/common/cnxk/roc_io.h               |   9 +
>  drivers/common/cnxk/roc_io_generic.h       |   5 +
>  drivers/common/cnxk/roc_priv.h             |   3 +
>  drivers/common/cnxk/version.map            |  22 ++
>  drivers/raw/cnxk_bphy/cnxk_bphy.c          | 329 ++++++++++++++++
>  drivers/raw/cnxk_bphy/cnxk_bphy_cgx.c      | 321 ++++++++++++++++
>  drivers/raw/cnxk_bphy/cnxk_bphy_cgx.h      |  10 +
>  drivers/raw/cnxk_bphy/cnxk_bphy_cgx_test.c | 206 ++++++++++
>  drivers/raw/cnxk_bphy/cnxk_bphy_irq.c      | 100 +++++
>  drivers/raw/cnxk_bphy/cnxk_bphy_irq.h      |  41 ++
>  drivers/raw/cnxk_bphy/meson.build          |  12 +
>  drivers/raw/cnxk_bphy/rte_pmd_bphy.h       | 233 ++++++++++++
>  drivers/raw/cnxk_bphy/version.map          |   3 +
>  drivers/raw/meson.build                    |   1 +
>  usertools/dpdk-devbind.py                  |   6 +-
>  30 files changed, 2662 insertions(+), 2 deletions(-)
>  create mode 100644 doc/guides/rawdevs/cnxk_bphy.rst
>  create mode 100644 drivers/common/cnxk/roc_bphy.c
>  create mode 100644 drivers/common/cnxk/roc_bphy.h
>  create mode 100644 drivers/common/cnxk/roc_bphy_cgx.c
>  create mode 100644 drivers/common/cnxk/roc_bphy_cgx.h
>  create mode 100644 drivers/common/cnxk/roc_bphy_cgx_priv.h
>  create mode 100644 drivers/common/cnxk/roc_bphy_irq.c
>  create mode 100644 drivers/common/cnxk/roc_bphy_irq.h
>  create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy.c
>  create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_cgx.c
>  create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_cgx.h
>  create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_cgx_test.c
>  create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_irq.c
>  create mode 100644 drivers/raw/cnxk_bphy/cnxk_bphy_irq.h
>  create mode 100644 drivers/raw/cnxk_bphy/meson.build
>  create mode 100644 drivers/raw/cnxk_bphy/rte_pmd_bphy.h
>  create mode 100644 drivers/raw/cnxk_bphy/version.map
>
> --
> 2.25.1
>