[net PATCH 0/4] eth: fbnic: a collection of fixes
From: Alexander Duyck <hidden>
Date: 2026-09-02 22:31:49
This series collects a handful of independent fbnic fixes for issues on
released kernels, plus one core ethtool fix needed by the fbnic offline
self test.
The first patch fixes a NULL pointer dereference on unbind after a failed
PCIe error recovery: fbnic_pm_suspend() frees the napi vectors via a
direct ndo_stop() while leaving netif_running() true, and when slot_reset
-> resume fails the data path is never re-allocated. To prevent the panic
we reset num_napi to 0 before we free the IRQs which prevents walking the
unallocated napi vectors when we unbind the interface later.
The next two patches address the FW mailbox. One sets AW_FLUSH_MODE
alongside AW_FLUSH when tearing down the Rx ring, so the write pipeline
actually drains the staged requests instead of hanging on the BME halt.
The other handles completions flagged with FW_ERR on both mailboxes,
which the driver previously ignored. This resulted in us parsing a stale Rx
page, and spinning the capabilities poll to a timeout on a healthy ring.
The last patch keeps rtnl_lock held on the ethtool ioctl path for the
self test. Since the ioctl path became rtnl-optional for ops-locked
drivers, fbnic's offline self test (which brings the interface down and
up via netif_close()/netif_open()) runs holding only the instance lock,
tripping a lockdep splat / ASSERT_RTNL and reconfiguring the device
without the lock it requires. An opt-in flag restores rtnl_lock for
drivers that need it.
---
Alexander Duyck (4):
fbnic: reset num_napi when the IRQ vectors are freed
fbnic: Set AW_FLUSH_MODE alongside AW_FLUSH when flushing the mailbox
fbnic: Handle FW mailbox completions flagged with an error
net: ethtool: keep rtnl_lock for the ioctl self test
drivers/net/ethernet/meta/fbnic/fbnic_csr.h | 5 +++
.../net/ethernet/meta/fbnic/fbnic_debugfs.c | 4 +--
.../net/ethernet/meta/fbnic/fbnic_ethtool.c | 3 +-
drivers/net/ethernet/meta/fbnic/fbnic_fw.c | 35 +++++++++++++++++--
drivers/net/ethernet/meta/fbnic/fbnic_fw.h | 1 +
drivers/net/ethernet/meta/fbnic/fbnic_pci.c | 18 +++++++---
include/linux/ethtool.h | 2 ++
net/ethtool/common.h | 2 ++
8 files changed, 61 insertions(+), 9 deletions(-)
--