[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID:
<171993231020.3697648.2741754761742678186.stgit@ahduyck-xeon-server.home.arpa>
Date: Tue, 02 Jul 2024 07:59:39 -0700
From: Alexander Duyck <alexander.duyck@...il.com>
To: netdev@...r.kernel.org
Cc: Andrew Lunn <andrew@...n.ch>, Russell King <linux@...linux.org.uk>,
linux-pci@...r.kernel.org, Alexander Duyck <alexanderduyck@...com>,
Bjorn Helgaas <bhelgaas@...gle.com>, kuba@...nel.org, davem@...emloft.net,
pabeni@...hat.com, edumazet@...gle.com, kernel-team@...a.com
Subject: [net-next PATCH v3 00/15] eth: fbnic: Add network driver for Meta
Platforms Host Network Interface
This patchest includes the necessary patches to enable basic Tx and Rx over
the Meta Platforms Host Network Interface. To do this we introduce a new
driver and driver directories in the form of
"drivers/net/ethernet/meta/fbnic".
The NIC itself is fairly simplistic. As far as speeds we support 25Gb,
50Gb, and 100Gb and we are mostly focused on speeds and feeds. As far as
future patch sets we will be supporting the basic Rx/Tx offloads such as
header/payload data split, TSO, checksum, and timestamp offloads. We have
access to the MAC and PCS from the NIC, however the PHY and QSFP are hidden
behind a FW layer as it is shared between 4 slices and the BMC.
Due to submission limits the the general plan to submit a minimal driver
for now almost equivilent to a UEFI driver in functionality, and then
follow up over the coming months enabling additional offloads and enabling
more features for the device.
v2:
- Pulled out most of the link logic leaving minimal phylink link interface
- Added support for up to 64K pages by spanning multiple descriptors
- Limited driver load message to only display on successful loading
- Removed LED configuration, will add back in follow-on patch
- Replaced pci_enable_msix_range with pci_alloc_irq_vectors
- Updated comments to start with a capital letter
- Limited architectures to x86_64 for now
- Updated to "Return:" tag for kernel-doc
- Added fbd to read/write CSR macros
v3:
- Fixed resource issues due to not calling pci_disable_device
- Addressed sparse errors for !x | y
- CCed Eric Dumazet and Kernel Team at meta to submission
- Cleaned up kdoc to include missing Return: and formatting issues
- Removed unneeded inlines from fbnic_txrx.c
- Added support for setting queue to NAPI mapping
- Added support for setting NAPI to IRQ mapping
- Updated phylink to make use of rx_pause, tx_pause in mac_link_up function
---
Alexander Duyck (15):
PCI: Add Meta Platforms vendor ID
eth: fbnic: Add scaffolding for Meta's NIC driver
eth: fbnic: Allocate core device specific structures and devlink interface
eth: fbnic: Add register init to set PCIe/Ethernet device config
eth: fbnic: Add message parsing for FW messages
eth: fbnic: Add FW communication mechanism
eth: fbnic: Allocate a netdevice and napi vectors with queues
eth: fbnic: Implement Tx queue alloc/start/stop/free
eth: fbnic: Implement Rx queue alloc/start/stop/free
eth: fbnic: Add initial messaging to notify FW of our presence
eth: fbnic: Add link detection
eth: fbnic: Add basic Tx handling
eth: fbnic: Add basic Rx handling
eth: fbnic: Add L2 address programming
eth: fbnic: Write the TCAM tables used for RSS control and Rx to host
MAINTAINERS | 7 +
drivers/net/ethernet/Kconfig | 1 +
drivers/net/ethernet/Makefile | 1 +
drivers/net/ethernet/meta/Kconfig | 31 +
drivers/net/ethernet/meta/Makefile | 6 +
drivers/net/ethernet/meta/fbnic/Makefile | 19 +
drivers/net/ethernet/meta/fbnic/fbnic.h | 156 ++
drivers/net/ethernet/meta/fbnic/fbnic_csr.h | 838 ++++++++
.../net/ethernet/meta/fbnic/fbnic_devlink.c | 88 +
.../net/ethernet/meta/fbnic/fbnic_drvinfo.h | 5 +
drivers/net/ethernet/meta/fbnic/fbnic_fw.c | 791 +++++++
drivers/net/ethernet/meta/fbnic/fbnic_fw.h | 124 ++
drivers/net/ethernet/meta/fbnic/fbnic_irq.c | 229 ++
drivers/net/ethernet/meta/fbnic/fbnic_mac.c | 698 ++++++
drivers/net/ethernet/meta/fbnic/fbnic_mac.h | 87 +
.../net/ethernet/meta/fbnic/fbnic_netdev.c | 483 +++++
.../net/ethernet/meta/fbnic/fbnic_netdev.h | 64 +
drivers/net/ethernet/meta/fbnic/fbnic_pci.c | 564 +++++
.../net/ethernet/meta/fbnic/fbnic_phylink.c | 166 ++
drivers/net/ethernet/meta/fbnic/fbnic_rpc.c | 709 ++++++
drivers/net/ethernet/meta/fbnic/fbnic_rpc.h | 189 ++
drivers/net/ethernet/meta/fbnic/fbnic_tlv.c | 529 +++++
drivers/net/ethernet/meta/fbnic/fbnic_tlv.h | 175 ++
drivers/net/ethernet/meta/fbnic/fbnic_txrx.c | 1913 +++++++++++++++++
drivers/net/ethernet/meta/fbnic/fbnic_txrx.h | 127 ++
include/linux/pci_ids.h | 2 +
26 files changed, 8002 insertions(+)
create mode 100644 drivers/net/ethernet/meta/Kconfig
create mode 100644 drivers/net/ethernet/meta/Makefile
create mode 100644 drivers/net/ethernet/meta/fbnic/Makefile
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic.h
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_csr.h
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_devlink.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_drvinfo.h
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_fw.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_fw.h
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_irq.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_mac.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_mac.h
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_netdev.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_netdev.h
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_pci.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_phylink.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_rpc.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_rpc.h
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_tlv.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_tlv.h
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_txrx.c
create mode 100644 drivers/net/ethernet/meta/fbnic/fbnic_txrx.h
--
Powered by blists - more mailing lists