Patches + build scripts + firmware sources to make the Broadcom BCM43224
(PCI 0x14e4:0x4353, subvendor 0x106b:0x00d1) work on FreeBSD 15.1.
Fixes:
- Fix 1: compile GPL N-PHY code (BWN_GPL_PHY build wiring)
- Fix 2: NULL-guard bwn_dma_ringfree on partial attach
- Fix 3: wire bwn_update_mcast to ic->ic_update_mcast
- Fix 5: load bwn_v4_n firmware at loader stage (loader.conf)
- Fix 6: reclaim pending TX frames at bwn_dma_stop (detach double-free)
- Fix 7: driver-owned node ref + remove dr_usedslot early-return +
bhndb_pci BHNDB_PCI_QUIRK_NO_MSI for BCM43224 (legacy INTx)
- Fix 8: restrict reclaim to TX rings only (RX reclaim caused heap
corruption / TCP panic)
README.md = rebuild guide (apply.sh + build.sh, manual steps)
RESEARCH.md = root-cause investigation log (Fixes 5-8)
20 lines
693 B
C
20 lines
693 B
C
diff --git a/sys/dev/bhnd/bhndb/bhndb_pcivar.h b/sys/dev/bhnd/bhndb/bhndb_pcivar.h
|
|
index ed749518..7b473fa6 100644
|
|
--- a/sys/dev/bhnd/bhndb/bhndb_pcivar.h
|
|
+++ b/sys/dev/bhnd/bhndb/bhndb_pcivar.h
|
|
@@ -70,6 +70,14 @@ enum {
|
|
* interrupt flags via the SIBA_CFG0_INTVEC register.
|
|
*/
|
|
BHNDB_PCI_QUIRK_SIBA_INTVEC = (1<<1),
|
|
+
|
|
+ /**
|
|
+ * The PCI/PCIe bridge must not use MSI; instead, fall back to legacy
|
|
+ * INTx line interrupts. Required on some systems (e.g. NVIDIA MCP89
|
|
+ * based Apple MacBook Air) where MSI messages from the Broadcom
|
|
+ * PCIe-G1 endpoint are never delivered, causing device timeouts.
|
|
+ */
|
|
+ BHNDB_PCI_QUIRK_NO_MSI = (1<<2),
|
|
};
|
|
|
|
/** bhndb_pci quirk table entry */
|