[PATCH net-next v4 0/8] add octeon_ep_vf driver

From: Shinas Rasheed
Date: Mon Jan 08 2024 - 07:46:51 EST


This driver implements networking functionality of Marvell's Octeon
PCI Endpoint NIC VF.

This driver support following devices:
* Network controller: Cavium, Inc. Device b203
* Network controller: Cavium, Inc. Device b403
* Network controller: Cavium, Inc. Device b103
* Network controller: Cavium, Inc. Device b903
* Network controller: Cavium, Inc. Device ba03
* Network controller: Cavium, Inc. Device bc03
* Network controller: Cavium, Inc. Device bd03

Changes:
V4:
- Moved some stats from ethtool and added more to ndo_get_stats64
- Replaced code in IQ full check function to use helper from
net/netdev_queues.h
- Refactored code so that NETDEV_TX_BUSY is avoided

V3: https://lore.kernel.org/all/20240105203823.2953604-1-srasheed@xxxxxxxxxxx/
- Removed UINT64_MAX, which is unused
- Replaced masks and ULL declarations with GENMASK_ULL(), ULL() and
other linux/bits.h macros, corrected declarations to conform to xmas tree format in patch [2/8]
- Moved vfree and vzalloc null pointer casting corrections to patch
[3/8], and corrected return values to follow standard kernel error codes in same
- Set static budget of 64 for tx completion processing in NAPI
- Replaces napi_complete and build_skb APIs to napi_complete_done and
napi_build_skb APIs respectively
- Replaced code with helper from net/netdev_queues.h to wake queues in TX completion
processing
- Removed duplicate reporting of TX/RX packets/bytes, which is already
done during ndo_get_stats64

V2: https://lore.kernel.org/all/20231223134000.2906144-1-srasheed@xxxxxxxxxxx/
- Removed linux/version.h header file from inclusion in
octep_vf_main.c
- Corrected Makefile entry to include building octep_vf_mbox.c in
[6/8] patch.
- Removed redundant vzalloc pointer cast and vfree pointer check in
[6/8] patch.

V1: https://lore.kernel.org/all/20231221092844.2885872-1-srasheed@xxxxxxxxxxx/

Shinas Rasheed (8):
octeon_ep_vf: Add driver framework and device initialization
octeon_ep_vf: add hardware configuration APIs
octeon_ep_vf: add VF-PF mailbox communication.
octeon_ep_vf: add Tx/Rx ring resource setup and cleanup
octeon_ep_vf: add support for ndo ops
octeon_ep_vf: add Tx/Rx processing and interrupt support
octeon_ep_vf: add ethtool support
octeon_ep_vf: update MAINTAINERS

.../device_drivers/ethernet/index.rst | 1 +
.../ethernet/marvell/octeon_ep_vf.rst | 24 +
MAINTAINERS | 9 +
drivers/net/ethernet/marvell/Kconfig | 1 +
drivers/net/ethernet/marvell/Makefile | 1 +
.../net/ethernet/marvell/octeon_ep_vf/Kconfig | 19 +
.../ethernet/marvell/octeon_ep_vf/Makefile | 10 +
.../marvell/octeon_ep_vf/octep_vf_cn9k.c | 491 +++++++
.../marvell/octeon_ep_vf/octep_vf_cnxk.c | 502 +++++++
.../marvell/octeon_ep_vf/octep_vf_config.h | 160 +++
.../marvell/octeon_ep_vf/octep_vf_ethtool.c | 273 ++++
.../marvell/octeon_ep_vf/octep_vf_main.c | 1240 +++++++++++++++++
.../marvell/octeon_ep_vf/octep_vf_main.h | 334 +++++
.../marvell/octeon_ep_vf/octep_vf_mbox.c | 430 ++++++
.../marvell/octeon_ep_vf/octep_vf_mbox.h | 166 +++
.../marvell/octeon_ep_vf/octep_vf_regs_cn9k.h | 154 ++
.../marvell/octeon_ep_vf/octep_vf_regs_cnxk.h | 162 +++
.../marvell/octeon_ep_vf/octep_vf_rx.c | 510 +++++++
.../marvell/octeon_ep_vf/octep_vf_rx.h | 224 +++
.../marvell/octeon_ep_vf/octep_vf_tx.c | 330 +++++
.../marvell/octeon_ep_vf/octep_vf_tx.h | 276 ++++
21 files changed, 5317 insertions(+)
create mode 100644 Documentation/networking/device_drivers/ethernet/marvell/octeon_ep_vf.rst
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/Kconfig
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/Makefile
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_cn9k.c
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_cnxk.c
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_config.h
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_ethtool.c
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.h
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_mbox.c
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_mbox.h
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_regs_cn9k.h
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_regs_cnxk.h
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.c
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.h
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_tx.c
create mode 100644 drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_tx.h

--
2.25.1