Re: [PATCH net-next v2 0/8] eth: mpnic: initial support for Meta Platforms NIC
From: Daniel Zahka
Date: Mon Sep 28 2026 - 14:40:44 EST
On Thu Sep 24, 2026 at 8:35 PM EDT, Daniel Zahka wrote:
> Meta Platforms NIC is the second-generation NIC from Meta. There are
> quite a few high-level similarities to fbnic, but all of the CSRs and
> descriptors have been reshuffled, and new features have been added.
> Since the device is sufficiently different from fbnic, and the design of
> our FW is minimal, we have decided a separate driver is appropriate.
>
> Major new features compared to fbnic will take a while to land. This
> series includes only the bare-bones Tx/Rx datapath.
>
> Our high-level patch sequence and plan for the upcoming series is:
> 1. Core datapath (this series)
> 2. Basic offloads, RSS, and counters
> 3. Firmware mailbox support
> 4. Base ethtool operations
>
> This patch series was prepared in part with these LLM prompts:
> https://github.com/kuba-moo/ai-prompts/blob/main/driver-upstreaming-prompts.md
>
> The prompts were used to distill our fully-featured OOT driver into this
> minimal Tx/Rx capable upstream driver. We then performed human review on
> the output to create this posting. Jakub has made the prompts public in
> case people would like to take a look.
>
> Signed-off-by: Daniel Zahka <daniel.zahka@xxxxxxxxx>
> ---
> Changes in v2:
> - eth: mpnic: add register init for the device
> - derive the TQS TXB credit limits from the TXB private credit config
> - program the BMC to MAC XOFF threshold (TXB_THRESHOLDS_P0[16])
> instead of the host to BMC one, and drop the now unused
> MPNIC_TXB_BMC_THRESH
> - drop L2_HLEN from the default TWD, it only matters for csum/LSO
> - eth: mpnic: implement Tx queue allocation and cleanup
> - add mpnic_nv_irq_trigger()
> - eth: mpnic: add a netdevice and basic Tx handling
> - trim the real Tx queue count before register_netdev()
> - eth: mpnic: implement Rx queue allocation and cleanup
> - drop an inaccurate comment on mpnic_bdq_desc_unused()
> - drop the unused data_truesize field from struct mpnic_pkt_ctxt
> - trim the real Rx queue count before register_netdev() too
> - eth: mpnic: add basic Rx handling
> - skip Rx cleaning and BDQ refill when polled with a budget of 0
> (netpoll), page pool must not be used in that context
> - keep struct mpnic_pkt_ctxt instead of replacing it with a bare
> xdp_buff, and move add_frag_failed into it
> - give each Rx queue only the NAPI budget left over by the previous
> ones instead of the full budget
> - sync Rx buffers for the CPU with page_pool_dma_sync_for_cpu() instead
> of dma_sync_single_range_for_cpu()
> - Link to v1: https://lore.kernel.org/r/20260922-linux-mpnic-v1-0-236844f53072@xxxxxxxxx
>
Just so it doesn't get lost over all of back and forth with sashiko. My
view on the series is that I don't see any issues requiring a v3. Until
other feedback comes along, I will not post a v3.