[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1538114872-10820-1-git-send-email-sunil.kovvuri@gmail.com>
Date: Fri, 28 Sep 2018 11:37:37 +0530
From: sunil.kovvuri@...il.com
To: netdev@...r.kernel.org, davem@...emloft.net
Cc: arnd@...db.de, linux-soc@...r.kernel.org,
Sunil Goutham <sgoutham@...vell.com>
Subject: [PATCH 00/15] octeontx2-af: Add RVU Admin Function driver
From: Sunil Goutham <sgoutham@...vell.com>
Resource virtualization unit (RVU) on Marvell's OcteonTX2 SOC maps HW
resources from the network, crypto and other functional blocks into
PCI-compatible physical and virtual functions. Each functional block
again has multiple local functions (LFs) for provisioning to PCI devices.
RVU supports multiple PCIe SRIOV physical functions (PFs) and virtual
functions (VFs). PF0 is called the administrative / admin function (AF)
and has privileges to provision RVU functional block's LFs to each of the
PF/VF.
RVU managed networking functional blocks
- Network pool allocator (NPA)
- Network interface controller (NIX)
- Network parser CAM (NPC)
- Schedule/Synchronize/Order unit (SSO)
RVU managed non-networking functional blocks
- Crypto accelerator (CPT)
- Scheduled timers unit (TIM)
- Schedule/Synchronize/Order unit (SSO)
Used for both networking and non networking usecases
- Compression (upcoming in future variants of the silicons)
Resource provisioning examples
- A PF/VF with NIX-LF & NPA-LF resources works as a pure network device
- A PF/VF with CPT-LF resource works as a pure cyrpto offload device.
This admin function driver neither receives any data nor processes it i.e
no I/O, a configuration only driver.
PF/VFs communicates with AF via a shared memory region (mailbox). Upon
receiving requests from PF/VF, AF does resource provisioning and other
HW configuration. AF is always attached to host, but PF/VFs may be used
by host kernel itself, or attached to VMs or to userspace applications
like DPDK etc. So AF has to handle provisioning/configuration requests
sent by any device from any domain.
This patch series adds logic for the following
- RVU AF driver with functional blocks provisioning support.
- Mailbox infrastructure for communication between AF and PFs.
- CGX (MAC controller) driver which communicates with firmware for
managing physical ethernet interfaces. AF collects info from this
driver and forwards the same to the PF/VFs uaing these interfaces.
This is the first set of patches out of 80+ patches.
Aleksey Makarov (1):
octeontx2-af: Convert mbox msg id check to a macro
Geetha sowjanya (1):
octeontx2-af: Reconfig MSIX base with IOVA
Linu Cherian (3):
octeontx2-af: Set RVU PFs to CGX LMACs mapping
octeontx2-af: Add support for CGX link management
octeontx2-af: Register for CGX lmac events
Sunil Goutham (10):
octeontx2-af: Add Marvell OcteonTX2 RVU AF driver
octeontx2-af: Reset all RVU blocks
octeontx2-af: Gather RVU blocks HW info
octeontx2-af: Add mailbox support infra
octeontx2-af: Add mailbox IRQ and msg handlers
octeontx2-af: Scan blocks for LFs provisioned to PF/VF
octeontx2-af: Add RVU block LF provisioning support
octeontx2-af: Configure block LF's MSIX vector offset
octeontx2-af: Add Marvell OcteonTX2 CGX driver
MAINTAINERS: Add entry for Marvell OcteonTX2 Admin Function driver
MAINTAINERS | 9 +
drivers/net/ethernet/marvell/Kconfig | 3 +
drivers/net/ethernet/marvell/Makefile | 1 +
drivers/net/ethernet/marvell/octeontx2/Kconfig | 16 +
drivers/net/ethernet/marvell/octeontx2/Makefile | 6 +
drivers/net/ethernet/marvell/octeontx2/af/Makefile | 10 +
drivers/net/ethernet/marvell/octeontx2/af/cgx.c | 515 ++++++
drivers/net/ethernet/marvell/octeontx2/af/cgx.h | 65 +
.../net/ethernet/marvell/octeontx2/af/cgx_fw_if.h | 225 +++
drivers/net/ethernet/marvell/octeontx2/af/mbox.c | 303 ++++
drivers/net/ethernet/marvell/octeontx2/af/mbox.h | 211 +++
drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 1637 ++++++++++++++++++++
drivers/net/ethernet/marvell/octeontx2/af/rvu.h | 158 ++
.../net/ethernet/marvell/octeontx2/af/rvu_cgx.c | 194 +++
.../net/ethernet/marvell/octeontx2/af/rvu_reg.h | 441 ++++++
.../net/ethernet/marvell/octeontx2/af/rvu_struct.h | 74 +
16 files changed, 3868 insertions(+)
create mode 100644 drivers/net/ethernet/marvell/octeontx2/Kconfig
create mode 100644 drivers/net/ethernet/marvell/octeontx2/Makefile
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/Makefile
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/cgx.c
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/cgx.h
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/cgx_fw_if.h
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/mbox.c
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/mbox.h
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/rvu.c
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/rvu.h
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.h
create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h
--
2.7.4
Powered by blists - more mailing lists