netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net-next PATCH v2 00/15] eth: fbnic: Add network driver for Meta Platforms Host Network Interface
@ 2024-06-25 14:35 Alexander Duyck
  2024-06-25 14:35 ` [net-next PATCH v2 01/15] PCI: Add Meta Platforms vendor ID Alexander Duyck
                   ` (14 more replies)
  0 siblings, 15 replies; 28+ messages in thread
From: Alexander Duyck @ 2024-06-25 14:35 UTC (permalink / raw)
  To: netdev
  Cc: Andrew Lunn, Alexander Duyck, Bjorn Helgaas, linux-pci, kuba,
	davem, pabeni

This patchset 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 general plan to submit a minimal driver for
now almost equivalent to a UEFI driver in functionality, and then follow up
over the coming months enabling additional offloads and 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 reimplement 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

---

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   |   86 +
 .../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   |  226 ++
 drivers/net/ethernet/meta/fbnic/fbnic_mac.c   |  694 ++++++
 drivers/net/ethernet/meta/fbnic/fbnic_mac.h   |   86 +
 .../net/ethernet/meta/fbnic/fbnic_netdev.c    |  484 +++++
 .../net/ethernet/meta/fbnic/fbnic_netdev.h    |   65 +
 drivers/net/ethernet/meta/fbnic/fbnic_pci.c   |  563 +++++
 .../net/ethernet/meta/fbnic/fbnic_phylink.c   |  159 ++
 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  | 1879 +++++++++++++++++
 drivers/net/ethernet/meta/fbnic/fbnic_txrx.h  |  127 ++
 include/linux/pci_ids.h                       |    2 +
 26 files changed, 7952 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

--


^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2024-06-28 15:36 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-25 14:35 [net-next PATCH v2 00/15] eth: fbnic: Add network driver for Meta Platforms Host Network Interface Alexander Duyck
2024-06-25 14:35 ` [net-next PATCH v2 01/15] PCI: Add Meta Platforms vendor ID Alexander Duyck
2024-06-25 14:35 ` [net-next PATCH v2 02/15] eth: fbnic: Add scaffolding for Meta's NIC driver Alexander Duyck
2024-06-26 14:16   ` Jakub Kicinski
2024-06-26 15:20     ` Alexander Duyck
2024-06-25 14:35 ` [net-next PATCH v2 03/15] eth: fbnic: Allocate core device specific structures and devlink interface Alexander Duyck
2024-06-25 14:35 ` [net-next PATCH v2 04/15] eth: fbnic: Add register init to set PCIe/Ethernet device config Alexander Duyck
2024-06-25 15:01   ` Andrew Lunn
2024-06-25 16:07     ` Alexander Duyck
2024-06-25 14:35 ` [net-next PATCH v2 05/15] eth: fbnic: Add message parsing for FW messages Alexander Duyck
2024-06-25 14:35 ` [net-next PATCH v2 06/15] eth: fbnic: Add FW communication mechanism Alexander Duyck
2024-06-25 14:36 ` [net-next PATCH v2 07/15] eth: fbnic: Allocate a netdevice and napi vectors with queues Alexander Duyck
2024-06-25 21:18   ` Joe Damato
2024-06-25 23:13     ` Alexander Duyck
2024-06-25 14:36 ` [net-next PATCH v2 08/15] eth: fbnic: Implement Tx queue alloc/start/stop/free Alexander Duyck
2024-06-25 14:36 ` [net-next PATCH v2 09/15] eth: fbnic: Implement Rx " Alexander Duyck
2024-06-28 15:14   ` Simon Horman
2024-06-28 15:36     ` Alexander Duyck
2024-06-25 14:36 ` [net-next PATCH v2 10/15] eth: fbnic: Add initial messaging to notify FW of our presence Alexander Duyck
2024-06-25 14:36 ` [net-next PATCH v2 11/15] eth: fbnic: Add link detection Alexander Duyck
2024-06-25 15:25   ` Andrew Lunn
2024-06-25 16:29     ` Alexander Duyck
2024-06-25 17:05       ` Andrew Lunn
2024-06-25 14:36 ` [net-next PATCH v2 12/15] eth: fbnic: Add basic Tx handling Alexander Duyck
2024-06-26 14:18   ` Jakub Kicinski
2024-06-25 14:36 ` [net-next PATCH v2 13/15] eth: fbnic: Add basic Rx handling Alexander Duyck
2024-06-25 14:36 ` [net-next PATCH v2 14/15] eth: fbnic: Add L2 address programming Alexander Duyck
2024-06-25 14:36 ` [net-next PATCH v2 15/15] eth: fbnic: Write the TCAM tables used for RSS control and Rx to host Alexander Duyck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).