[net-next PATCH 00/15] eth: fbnic: Add network driver for Meta Platforms Host Network Interface

Alexander Duyck
2024-04-03T20:08:26Z

This patch set 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 and directories in the form of
"drivers/net/ethernet/meta/fbnic".

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 weeks enabling additional offloads and more features for
the device.

The general plan is to look at adding support for ethtool, statistics, and
start work on offloads in the next set of patches.

---

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: Enable Ethernet link setup
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 | 29 +
drivers/net/ethernet/meta/Makefile | 6 +
drivers/net/ethernet/meta/fbnic/Makefile | 18 +
drivers/net/ethernet/meta/fbnic/fbnic.h | 148 ++
drivers/net/ethernet/meta/fbnic/fbnic_csr.h | 912 ++++++++
.../net/ethernet/meta/fbnic/fbnic_devlink.c | 86 +
.../net/ethernet/meta/fbnic/fbnic_drvinfo.h | 5 +
drivers/net/ethernet/meta/fbnic/fbnic_fw.c | 823 ++++++++
drivers/net/ethernet/meta/fbnic/fbnic_fw.h | 133 ++
drivers/net/ethernet/meta/fbnic/fbnic_irq.c | 251 +++
drivers/net/ethernet/meta/fbnic/fbnic_mac.c | 1025 +++++++++
drivers/net/ethernet/meta/fbnic/fbnic_mac.h | 83 +
.../net/ethernet/meta/fbnic/fbnic_netdev.c | 470 +++++
.../net/ethernet/meta/fbnic/fbnic_netdev.h | 59 +
drivers/net/ethernet/meta/fbnic/fbnic_pci.c | 633 ++++++
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 | 1873 +++++++++++++++++
drivers/net/ethernet/meta/fbnic/fbnic_txrx.h | 125 ++
include/linux/pci_ids.h | 2 +
25 files changed, 8292 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_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

--