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 --