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

Jiri Pirko
2024-04-04T11:37:29Z

Wed, Apr 03, 2024 at 10:08:24PM CEST, alexander.duyck@gmail.com wrote:
>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.

Could you please shed some light for the motivation to introduce this
driver in the community kernel? Is this device something people can
obtain in a shop, or is it rather something to be seen in Meta
datacenter only? If the second is the case, why exactly would we need
this driver?

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