AI Trajectory


Trajectory: (Expand/Collapse All)
Seq Timestamp Type Name Duration
0/0 2026/08/27 17:02 flow patch-triage
3m Args:
null

Results:
{
  "EnableConfigs": null,
  "FocusSymbols": [],
  "KMSANReasoning": "",
  "NeedsKMSAN": false,
  "Reasoning": "The patch modifies the `bnge` driver, which is for Broadcom ThorUltra 50/100/200/400/800 gigabit Ethernet cards. This is a vendor-specific physical PCIe hardware card that is not emulated in standard QEMU or virtualized environments. Therefore, the code paths are impossible to reach during fuzzing.",
  "WorthFuzzing": false
}

1/1 2026/08/27 17:02 action read-patch-diff
0m Args:
null

Results:
{
  "PatchDiff": "commit c083ddaf7322c510ec97da204f14f5ccc6a79acc\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate:   Thu Aug 27 17:02:50 2026 +0000\n\n    syz-cluster: applied patch under review\n\ndiff --git a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c\nindex a4288f0258f87..13573a2b78ef2 100644\n--- a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c\n+++ b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c\n@@ -3155,6 +3155,9 @@ static void bnge_close_core(struct bnge_net *bn)\n {\n \tstruct bnge_dev *bd = bn-\u003ebd;\n \n+\tif (!bn-\u003ebnapi)\n+\t\treturn;\n+\n \tbnge_tx_disable(bn);\n \n \tclear_bit(BNGE_STATE_OPEN, \u0026bd-\u003estate);\n@@ -3267,6 +3270,44 @@ static const struct netdev_stat_ops bnge_stat_ops = {\n \t.get_base_stats\t\t= bnge_get_base_stats,\n };\n \n+static int bnge_set_features(struct net_device *dev, netdev_features_t features)\n+{\n+\tstruct bnge_net *bn = netdev_priv(dev);\n+\tstruct bnge_dev *bd = bn-\u003ebd;\n+\tu32 old_flags = bn-\u003epriv_flags;\n+\tu32 flags = old_flags;\n+\tint rc;\n+\n+\tflags \u0026= ~BNGE_NET_EN_TPA;\n+\tif (features \u0026 NETIF_F_GRO_HW)\n+\t\tflags |= BNGE_NET_EN_GRO;\n+\telse if (features \u0026 NETIF_F_LRO)\n+\t\tflags |= BNGE_NET_EN_LRO;\n+\n+\tif (flags == old_flags)\n+\t\treturn 0;\n+\n+\tif (!netif_running(dev)) {\n+\t\tbn-\u003epriv_flags = flags;\n+\t\tbnge_set_ring_params(bd);\n+\t\treturn 0;\n+\t}\n+\n+\tbnge_close_core(bn);\n+\tbn-\u003epriv_flags = flags;\n+\tbnge_set_ring_params(bd);\n+\n+\trc = bnge_open_core(bn);\n+\tif (rc) {\n+\t\tnetdev_err(dev, \"bnge_open_core err: %d\\n\", rc);\n+\t\tbn-\u003epriv_flags = old_flags;\n+\t\tbnge_set_ring_params(bd);\n+\t\tnetif_close(dev);\n+\t}\n+\n+\treturn rc;\n+}\n+\n static const struct net_device_ops bnge_netdev_ops = {\n \t.ndo_open\t\t= bnge_open,\n \t.ndo_stop\t\t= bnge_close,\n@@ -3274,6 +3315,7 @@ static const struct net_device_ops bnge_netdev_ops = {\n \t.ndo_get_stats64\t= bnge_get_stats64,\n \t.ndo_set_rx_mode_async\t= bnge_set_rx_mode,\n \t.ndo_features_check\t= bnge_features_check,\n+\t.ndo_set_features\t= bnge_set_features,\n };\n \n static void bnge_init_mac_addr(struct bnge_dev *bd)\n"
}

2/1 2026/08/27 17:02 agent patch-evaluator
3m Model:
best-expensive

Args:
null

Results:
{
  "EnableConfigs": null,
  "FocusSymbols": [],
  "Reasoning": "The patch modifies the `bnge` driver, which is for Broadcom ThorUltra 50/100/200/400/800 gigabit Ethernet cards. This is a vendor-specific physical PCIe hardware card that is not emulated in standard QEMU or virtualized environments. Therefore, the code paths are impossible to reach during fuzzing.",
  "WorthFuzzing": false
}

Instruction:
You are an expert Linux kernel maintainer.
Your job is to review a provided patch series and determine
if it makes functional changes to the kernel that should be fuzzed.

IMPORTANT: The changes have ALREADY been applied and committed as the HEAD commit in
your workspace. Do NOT rely on your internal knowledge of the kernel. You must actively
use your code access tools to examine the actual source code and confirm any assumptions.

Return WorthFuzzing=false if the patch only contains:
- Modifications to Documentation/, Kconfig files, or code comments.
- Purely decorative changes, such as logging (e.g., pr_err, printk) or tracepoints.
- Changes to numeric constants or macros that do not functionally alter execution flow.
- Code paths that are impossible to reach in virtualized environments like GCE or QEMU,
  even when utilizing software-emulated hardware (e.g., usb gadget, mac80211_hwsim).
- Code in vendor-specific PCIe switch, SmartNIC, or GPU drivers (e.g., mlxsw, pds_core, qed,
  ionic, amdgpu) that require physical PCIe hardware cards not emulated in standard QEMU.
- Driver .remove, .shutdown, or pci_unregister_driver teardown callbacks (e.g., igb_remove)
  that are executed only during PCI hot-unplug or sysfs driver unbind operations.

If it modifies reachable core kernel logic, drivers, or architectures, use your code search
tools to verify the code can be executed, then return WorthFuzzing=true.

When returning WorthFuzzing=true, you MUST ALSO:
1. Extract any specific kernel functions that should be heavily fuzzed into FocusSymbols.
   Avoid listing generic hot-path functions to prevent skewed test distributions.
   Prefer non-static, non-inlined API entrypoint functions over internal static helper functions
   (which are inlined by the compiler and do not have distinct symbol addresses).
2. Identify any specific CONFIG_ options required to properly test this new/modified feature.
   Go and look into the Kconfig files and check for ifdefs around the code, do not make assumptions.
   Also check "depends on" lines in Kconfig to include any non-standard parent subsystem configs
   needed for Kbuild to compile the code statically into vmlinux. List them in the EnableConfigs
   output array, and DO NOT add a 'CONFIG_' prefix (e.g., return "NET_IPV4" instead of "CONFIG_NET_IPV4").
Prefer calling several tools at the same time to save round-trips.


Use set-results tool to provide results of the analysis.
It must be called exactly once before the final reply.
Ignore results of this tool.

Prompt:
For your convenience, here is the diff of the changes:
commit c083ddaf7322c510ec97da204f14f5ccc6a79acc
Author: syz-cluster <triage@syzkaller.com>
Date:   Thu Aug 27 17:02:50 2026 +0000

    syz-cluster: applied patch under review

diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
index a4288f0258f87..13573a2b78ef2 100644
--- a/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
+++ b/drivers/net/ethernet/broadcom/bnge/bnge_netdev.c
@@ -3155,6 +3155,9 @@ static void bnge_close_core(struct bnge_net *bn)
 {
 	struct bnge_dev *bd = bn->bd;
 
+	if (!bn->bnapi)
+		return;
+
 	bnge_tx_disable(bn);
 
 	clear_bit(BNGE_STATE_OPEN, &bd->state);
@@ -3267,6 +3270,44 @@ static const struct netdev_stat_ops bnge_stat_ops = {
 	.get_base_stats		= bnge_get_base_stats,
 };
 
+static int bnge_set_features(struct net_device *dev, netdev_features_t features)
+{
+	struct bnge_net *bn = netdev_priv(dev);
+	struct bnge_dev *bd = bn->bd;
+	u32 old_flags = bn->priv_flags;
+	u32 flags = old_flags;
+	int rc;
+
+	flags &= ~BNGE_NET_EN_TPA;
+	if (features & NETIF_F_GRO_HW)
+		flags |= BNGE_NET_EN_GRO;
+	else if (features & NETIF_F_LRO)
+		flags |= BNGE_NET_EN_LRO;
+
+	if (flags == old_flags)
+		return 0;
+
+	if (!netif_running(dev)) {
+		bn->priv_flags = flags;
+		bnge_set_ring_params(bd);
+		return 0;
+	}
+
+	bnge_close_core(bn);
+	bn->priv_flags = flags;
+	bnge_set_ring_params(bd);
+
+	rc = bnge_open_core(bn);
+	if (rc) {
+		netdev_err(dev, "bnge_open_core err: %d\n", rc);
+		bn->priv_flags = old_flags;
+		bnge_set_ring_params(bd);
+		netif_close(dev);
+	}
+
+	return rc;
+}
+
 static const struct net_device_ops bnge_netdev_ops = {
 	.ndo_open		= bnge_open,
 	.ndo_stop		= bnge_close,
@@ -3274,6 +3315,7 @@ static const struct net_device_ops bnge_netdev_ops = {
 	.ndo_get_stats64	= bnge_get_stats64,
 	.ndo_set_rx_mode_async	= bnge_set_rx_mode,
 	.ndo_features_check	= bnge_features_check,
+	.ndo_set_features	= bnge_set_features,
 };
 
 static void bnge_init_mac_addr(struct bnge_dev *bd)

3/2 2026/08/27 17:02 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 2641
							output: 32
							thoughts: 208
						

Thoughts:
**Analyzing a Broadcom Ethernet Driver Patch**

Okay, so I'm looking at this patch that tweaks `drivers/net/ethernet/broadcom/bnge/bnge_netdev.c`. Right off the bat, I see a null check being added within `bnge_close_core` for `bn->bnapi`. Standard defensive programming, always good to see. Plus, a new function, `bnge_set_features`, is being introduced and linked to `ndo_set_features` in `bnge_netdev_ops`.

Hmm, `bnge`… that's a Broadcom Ethernet driver. My immediate thought is, is this for physical hardware or something emulated? I need to clarify that. Considering this seems to be a real, live Ethernet driver, is it targeting a physical PCIe card that *isn't* part of the standard QEMU setup? I have to be sure. I'm thinking of those vendor-specific drivers, like `mlxsw`, `pds_core`, `qed`, `ionic`, and `amdgpu`. Those often demand actual PCIe hardware.

Right, so to make sure, let's just make sure this driver is *not* emulated in QEMU. Time to run a quick search through the kernel tree and see what pops up for `bnge` related to virtualization. Gotta check to make sure this driver isn't using a PCIe card that would require real hardware.



4/2 2026/08/27 17:03 tool grepper
0m Args:
{
  "Expression": "bnge",
  "PathPrefix": "drivers/net/ethernet/broadcom/"
}

Results:
{
  "Output": "\nFull output is too long, showing 500 out of 6187 lines.\nUse more precise expression if possible.\n\ndrivers/net/ethernet/broadcom/Makefile=20=obj-$(CONFIG_BCMASP) += asp2/\ndrivers/net/ethernet/broadcom/Makefile:21:obj-$(CONFIG_BNGE) += bnge/\n--\ndrivers/net/ethernet/broadcom/bnge/Makefile=3=obj-$(CONFIG_BNGE) += bng_en.o\ndrivers/net/ethernet/broadcom/bnge/Makefile-4-\ndrivers/net/ethernet/broadcom/bnge/Makefile:5:bng_en-y := bnge_core.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:6:\t    bnge_devlink.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:7:\t    bnge_hwrm.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:8:\t    bnge_hwrm_lib.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:9:\t    bnge_rmem.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:10:\t    bnge_resc.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:11:\t    bnge_netdev.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:12:\t    bnge_ethtool.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:13:\t    bnge_auxr.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:14:\t    bnge_txrx.o \\\ndrivers/net/ethernet/broadcom/bnge/Makefile:15:\t    bnge_link.o\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-10-#include \u003clinux/etherdevice.h\u003e\ndrivers/net/ethernet/broadcom/bnge/bnge.h:11:#include \u003clinux/bnge/hsi.h\u003e\ndrivers/net/ethernet/broadcom/bnge/bnge.h:12:#include \"bnge_rmem.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge.h:13:#include \"bnge_resc.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge.h:14:#include \"bnge_auxr.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge.h-15-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-19-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:20:extern char bnge_driver_name[];\ndrivers/net/ethernet/broadcom/bnge/bnge.h-21-\ndrivers/net/ethernet/broadcom/bnge/bnge.h=22=enum board_idx {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-25-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:26:struct bnge_auxr_priv {\ndrivers/net/ethernet/broadcom/bnge/bnge.h-27-\tstruct auxiliary_device aux_dev;\ndrivers/net/ethernet/broadcom/bnge/bnge.h:28:\tstruct bnge_auxr_dev *auxr_dev;\ndrivers/net/ethernet/broadcom/bnge/bnge.h-29-\tint id;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-31-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:32:struct bnge_pf_info {\ndrivers/net/ethernet/broadcom/bnge/bnge.h-33-\tu16\tfw_fid;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h=81=enum {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-92-#define BNGE_MAX_QUEUE\t\t8\ndrivers/net/ethernet/broadcom/bnge/bnge.h:93:struct bnge_queue_info {\ndrivers/net/ethernet/broadcom/bnge/bnge.h-94-\tu8      queue_id;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-102-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:103:struct bnge_dev {\ndrivers/net/ethernet/broadcom/bnge/bnge.h-104-\tstruct device\t*dev;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-144-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:145:\tstruct bnge_pf_info\tpf;\ndrivers/net/ethernet/broadcom/bnge/bnge.h-146-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-153-\t/* Backing stores */\ndrivers/net/ethernet/broadcom/bnge/bnge.h:154:\tstruct bnge_ctx_mem_info\t*ctx;\ndrivers/net/ethernet/broadcom/bnge/bnge.h-155-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-157-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:158:\tstruct bnge_hw_resc\thw_resc;\ndrivers/net/ethernet/broadcom/bnge/bnge.h-159-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-204-\tu8\t\t\tmax_lltc;\t/* lossless TCs */\ndrivers/net/ethernet/broadcom/bnge/bnge.h:205:\tstruct bnge_queue_info\tq_info[BNGE_MAX_QUEUE];\ndrivers/net/ethernet/broadcom/bnge/bnge.h-206-\tu8\t\t\ttc_to_qidx[BNGE_MAX_QUEUE];\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-210-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:211:\tstruct bnge_irq\t\t*irq_tbl;\ndrivers/net/ethernet/broadcom/bnge/bnge.h-212-\tu16\t\t\tirqs_acquired;\ndrivers/net/ethernet/broadcom/bnge/bnge.h-213-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:214:\tstruct bnge_auxr_priv\t*aux_priv;\ndrivers/net/ethernet/broadcom/bnge/bnge.h:215:\tstruct bnge_auxr_dev\t*auxr_dev;\ndrivers/net/ethernet/broadcom/bnge/bnge.h-216-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:217:\tstruct bnge_link_info\tlink_info;\ndrivers/net/ethernet/broadcom/bnge/bnge.h-218-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-222-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:223:static inline bool bnge_is_roce_en(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge.h-224-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-227-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:228:static inline bool bnge_is_agg_reqd(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge.h-229-{\ndrivers/net/ethernet/broadcom/bnge/bnge.h-230-\tif (bd-\u003enetdev) {\ndrivers/net/ethernet/broadcom/bnge/bnge.h:231:\t\tstruct bnge_net *bn = netdev_priv(bd-\u003enetdev);\ndrivers/net/ethernet/broadcom/bnge/bnge.h-232-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-242-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:243:static inline void bnge_writeq(struct bnge_dev *bd, u64 val,\ndrivers/net/ethernet/broadcom/bnge/bnge.h-244-\t\t\t       void __iomem *addr)\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-255-/* For TX and RX ring doorbells */\ndrivers/net/ethernet/broadcom/bnge/bnge.h:256:static inline void bnge_db_write(struct bnge_dev *bd, struct bnge_db_info *db,\ndrivers/net/ethernet/broadcom/bnge/bnge.h-257-\t\t\t\t u32 idx)\ndrivers/net/ethernet/broadcom/bnge/bnge.h-258-{\ndrivers/net/ethernet/broadcom/bnge/bnge.h:259:\tbnge_writeq(bd, db-\u003edb_key64 | DB_RING_IDX(db, idx),\ndrivers/net/ethernet/broadcom/bnge/bnge.h-260-\t\t    db-\u003edoorbell);\n--\ndrivers/net/ethernet/broadcom/bnge/bnge.h-262-\ndrivers/net/ethernet/broadcom/bnge/bnge.h:263:bool bnge_aux_registered(struct bnge_dev *bd);\ndrivers/net/ethernet/broadcom/bnge/bnge.h:264:u16 bnge_aux_get_msix(struct bnge_dev *bd);\ndrivers/net/ethernet/broadcom/bnge/bnge.h-265-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-16-#include \u003clinux/auxiliary_bus.h\u003e\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:17:#include \u003clinux/bnge/hsi.h\u003e\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-18-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:19:#include \"bnge.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:20:#include \"bnge_hwrm.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:21:#include \"bnge_auxr.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-22-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:23:static DEFINE_IDA(bnge_aux_dev_ids);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-24-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:25:static void bnge_fill_msix_vecs(struct bnge_dev *bd,\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:26:\t\t\t\tstruct bnge_msix_info *info)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-27-{\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:28:\tstruct bnge_auxr_dev *auxr_dev = bd-\u003eauxr_dev;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-29-\tint num_msix, i;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-42-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:43:int bnge_register_dev(struct bnge_auxr_dev *auxr_dev,\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-44-\t\t      void *handle)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-45-{\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:46:\tstruct bnge_dev *bd = pci_get_drvdata(auxr_dev-\u003epdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:47:\tstruct bnge_auxr_info *auxr_info;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-48-\tint rc = 0;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-56-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:57:\tif (!bnge_aux_has_enough_resources(bd)) {\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-58-\t\trc = -ENOMEM;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-66-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:67:\tbnge_fill_msix_vecs(bd, bd-\u003eauxr_dev-\u003emsix_info);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-68-\tauxr_dev-\u003eflags |= BNGE_ARDEV_MSIX_ALLOC;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-74-}\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:75:EXPORT_SYMBOL(bnge_register_dev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-76-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:77:void bnge_unregister_dev(struct bnge_auxr_dev *auxr_dev)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-78-{\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:79:\tstruct bnge_dev *bd = pci_get_drvdata(auxr_dev-\u003epdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:80:\tstruct bnge_auxr_info *auxr_info;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-81-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-91-}\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:92:EXPORT_SYMBOL(bnge_unregister_dev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-93-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:94:int bnge_send_msg(struct bnge_auxr_dev *auxr_dev, struct bnge_fw_msg *fw_msg)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-95-{\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:96:\tstruct bnge_dev *bd = pci_get_drvdata(auxr_dev-\u003epdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-97-\tstruct output *resp;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-101-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:102:\trc = bnge_hwrm_req_init(bd, req, 0 /* don't care */);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-103-\tif (rc)\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-105-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:106:\trc = bnge_hwrm_req_replace(bd, req, fw_msg-\u003emsg, fw_msg-\u003emsg_len);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-107-\tif (rc)\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-109-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:110:\tbnge_hwrm_req_timeout(bd, req, fw_msg-\u003etimeout);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:111:\tresp = bnge_hwrm_req_hold(bd, req);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:112:\trc = bnge_hwrm_req_send(bd, req);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-113-\tresp_len = le16_to_cpu(resp-\u003eresp_len);\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-120-drop_req:\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:121:\tbnge_hwrm_req_drop(bd, req);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-122-\treturn rc;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-123-}\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:124:EXPORT_SYMBOL(bnge_send_msg);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-125-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:126:void bnge_rdma_aux_device_uninit(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-127-{\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:128:\tstruct bnge_auxr_priv *aux_priv;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-129-\tstruct auxiliary_device *adev;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-139-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:140:static void bnge_aux_dev_release(struct device *dev)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-141-{\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:142:\tstruct bnge_auxr_priv *aux_priv =\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:143:\t\t\tcontainer_of(dev, struct bnge_auxr_priv, aux_dev.dev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:144:\tstruct bnge_auxr_dev *auxr_dev = aux_priv-\u003eauxr_dev;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:145:\tstruct bnge_dev *bd = pci_get_drvdata(to_pci_dev(dev-\u003eparent));\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-146-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:147:\tida_free(\u0026bnge_aux_dev_ids, aux_priv-\u003eid);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-148-\tif (auxr_dev) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-156-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:157:void bnge_rdma_aux_device_del(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-158-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-164-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:165:static void bnge_set_auxr_dev_info(struct bnge_auxr_dev *auxr_dev,\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:166:\t\t\t\t   struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-167-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-185-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:186:void bnge_rdma_aux_device_add(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-187-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-205-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:206:void bnge_rdma_aux_device_init(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-207-{\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-208-\tstruct auxiliary_device *aux_dev;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:209:\tstruct bnge_auxr_info *auxr_info;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:210:\tstruct bnge_auxr_priv *aux_priv;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:211:\tstruct bnge_auxr_dev *auxr_dev;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-212-\tint rc;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-213-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:214:\tif (!bnge_is_roce_en(bd))\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-215-\t\treturn;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-220-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:221:\taux_priv-\u003eid = ida_alloc(\u0026bnge_aux_dev_ids, GFP_KERNEL);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-222-\tif (aux_priv-\u003eid \u003c 0) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-231-\taux_dev-\u003edev.parent = \u0026bd-\u003epdev-\u003edev;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:232:\taux_dev-\u003edev.release = bnge_aux_dev_release;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-233-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-235-\tif (rc) {\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:236:\t\tida_free(\u0026bnge_aux_dev_ids, aux_priv-\u003eid);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-237-\t\tkfree(aux_priv);\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-253-\tbd-\u003eauxr_dev = auxr_dev;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c:254:\tbnge_set_auxr_dev_info(auxr_dev, bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.c-255-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h=14=struct hwrm_async_event_cmpl;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:15:struct bnge;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-16-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:17:struct bnge_msix_info {\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-18-\tu32\tvector;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-22-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:23:struct bnge_fw_msg {\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-24-\tvoid\t*msg;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-30-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:31:struct bnge_auxr_info {\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-32-\tvoid\t\t*handle;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h=36=enum {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-44-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:45:struct bnge_auxr_dev {\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-46-\tstruct net_device\t*net;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-49-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:50:\tstruct bnge_msix_info\tmsix_info[BNGE_MAX_ROCE_MSIX];\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-51-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-53-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:54:\tstruct bnge_auxr_info\t*auxr_info;\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-55-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-74-\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:75:void bnge_rdma_aux_device_uninit(struct bnge_dev *bdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:76:void bnge_rdma_aux_device_del(struct bnge_dev *bdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:77:void bnge_rdma_aux_device_add(struct bnge_dev *bdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:78:void bnge_rdma_aux_device_init(struct bnge_dev *bdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:79:int bnge_register_dev(struct bnge_auxr_dev *adev,\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-80-\t\t      void *handle);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:81:void bnge_unregister_dev(struct bnge_auxr_dev *adev);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h:82:int bnge_send_msg(struct bnge_auxr_dev *adev, struct bnge_fw_msg *fw_msg);\ndrivers/net/ethernet/broadcom/bnge/bnge_auxr.h-83-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-8-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:9:#include \"bnge.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:10:#include \"bnge_devlink.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:11:#include \"bnge_hwrm.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:12:#include \"bnge_hwrm_lib.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:13:#include \"bnge_link.h\"\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-14-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c=16=MODULE_DESCRIPTION(DRV_SUMMARY);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-17-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:18:char bnge_driver_name[] = DRV_NAME;\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-19-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c=20=static const struct {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-25-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:26:static const struct pci_device_id bnge_pci_tbl[] = {\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-27-\t{ PCI_VDEVICE(BROADCOM, 0x1780), .driver_data = BCM57708 },\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-30-};\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:31:MODULE_DEVICE_TABLE(pci, bnge_pci_tbl);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-32-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:33:static void bnge_print_device_info(struct pci_dev *pdev, enum board_idx idx)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-34-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-42-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:43:bool bnge_aux_registered(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-44-{\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:45:\tstruct bnge_auxr_dev *ba_dev = bd-\u003eauxr_dev;\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-46-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-52-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:53:static void bnge_nvm_cfg_ver_get(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-54-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-56-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:57:\tif (!bnge_hwrm_nvm_dev_info(bd, \u0026nvm_info))\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-58-\t\tsnprintf(bd-\u003envm_cfg_ver, FW_VER_STR_LEN, \"%d.%d.%d\",\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-62-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:63:static int bnge_func_qcaps(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-64-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-66-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:67:\trc = bnge_hwrm_func_qcaps(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-68-\tif (rc)\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-70-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:71:\trc = bnge_hwrm_queue_qportcfg(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-72-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-79-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:80:static int bnge_func_qrcaps_qcfg(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-81-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-83-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:84:\trc = bnge_hwrm_func_resc_qcaps(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-85-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-89-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:90:\trc = bnge_hwrm_func_qcfg(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-91-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-95-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:96:\trc = bnge_hwrm_vnic_qcaps(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-97-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-104-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:105:static void bnge_fw_unregister_dev(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-106-{\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-107-\t/* ctx mem free after unrgtr only */\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:108:\tbnge_hwrm_func_drv_unrgtr(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:109:\tbnge_free_ctx_mem(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-110-}\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-111-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:112:static void bnge_set_dflt_rss_hash_type(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-113-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-121-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:122:static int bnge_fw_register_dev(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-123-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-126-\tbd-\u003efw_cap = 0;\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:127:\trc = bnge_hwrm_ver_get(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-128-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-132-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:133:\tbnge_nvm_cfg_ver_get(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-134-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:135:\trc = bnge_hwrm_func_reset(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-136-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-140-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:141:\tbnge_hwrm_fw_set_time(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-142-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-143-\t/* Get the resources and configuration from firmware */\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:144:\trc = bnge_func_qcaps(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-145-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-149-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:150:\trc = bnge_alloc_ctx_mem(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-151-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-155-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:156:\trc = bnge_hwrm_func_drv_rgtr(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-157-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-161-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:162:\trc = bnge_func_qrcaps_qcfg(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-163-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-167-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:168:\tbnge_set_dflt_rss_hash_type(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-169-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-172-err_func_unrgtr:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:173:\tbnge_hwrm_func_drv_unrgtr(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-174-err_free_ctx_mem:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:175:\tbnge_free_ctx_mem(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-176-\treturn rc;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-178-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:179:static void bnge_pci_disable(struct pci_dev *pdev)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-180-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-185-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:186:static int bnge_pci_enable(struct pci_dev *pdev)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-187-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-202-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:203:\trc = pci_request_regions(pdev, bnge_driver_name);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-204-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-219-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:220:static void bnge_unmap_bars(struct pci_dev *pdev)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-221-{\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:222:\tstruct bnge_dev *bd = pci_get_drvdata(pdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-223-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-234-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:235:static void bnge_set_max_func_irqs(struct bnge_dev *bd,\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-236-\t\t\t\t   unsigned int max_irqs)\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-240-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:241:static int bnge_get_max_irq(struct pci_dev *pdev)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-242-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-248-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:249:static int bnge_map_db_bar(struct bnge_dev *bd)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-250-{\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-260-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:261:static int bnge_probe_one(struct pci_dev *pdev, const struct pci_device_id *ent)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-262-{\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-263-\tunsigned int max_irqs;\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:264:\tstruct bnge_dev *bd;\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-265-\tint rc;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-279-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:280:\trc = bnge_pci_enable(pdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-281-\tif (rc)\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-283-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:284:\tbnge_print_device_info(pdev, ent-\u003edriver_data);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-285-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:286:\tbd = bnge_devlink_alloc(pdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-287-\tif (!bd) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-299-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:300:\trc = bnge_init_hwrm_resources(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-301-\tif (rc)\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-303-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:304:\trc = bnge_fw_register_dev(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-305-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-309-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:310:\tbnge_devlink_register(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-311-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:312:\tmax_irqs = bnge_get_max_irq(pdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:313:\tbnge_set_max_func_irqs(bd, max_irqs);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-314-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:315:\tbnge_aux_init_dflt_config(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-316-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:317:\trc = bnge_net_init_dflt_config(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-318-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-323-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:324:\trc = bnge_map_db_bar(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-325-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-334-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:335:\tbnge_rdma_aux_device_init(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-336-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:337:\trc = bnge_alloc_irqs(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-338-\tif (rc) {\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-342-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:343:\trc = bnge_netdev_alloc(bd, max_irqs);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-344-\tif (rc)\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-346-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:347:\tbnge_rdma_aux_device_add(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-348-\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-353-err_free_irq:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:354:\tbnge_free_irqs(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-355-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-356-err_uninit_auxr:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:357:\tbnge_rdma_aux_device_uninit(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-358-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-359-err_config_uninit:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:360:\tbnge_net_uninit_dflt_config(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-361-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-362-err_fw_reg:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:363:\tbnge_devlink_unregister(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:364:\tbnge_fw_unregister_dev(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-365-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-366-err_hwrm_cleanup:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:367:\tbnge_cleanup_hwrm_resources(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-368-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-369-err_bar_unmap:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:370:\tbnge_unmap_bars(pdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-371-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-372-err_devl_free:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:373:\tbnge_devlink_free(bd);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-374-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-375-err_pci_disable:\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:376:\tbnge_pci_disable(pdev);\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-377-\treturn rc;\n--\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-379-\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:380:static void bnge_remove_one(struct pci_dev *pdev)\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c-381-{\ndrivers/net/ethernet/broadcom/bnge/bnge_core.c:382:\tstruct bnge_dev *bd = pci_get_drvdata(pdev);\n\n"
}

5/2 2026/08/27 17:03 llm patch-evaluator
1m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 17026
							output: 33
							thoughts: 214
						

Thoughts:
**Analyzing the "bnge" Driver and its Implications**

Okay, so I'm looking at this driver, `bnge`. The name suggests it's a Broadcom Ethernet driver, which is a common starting point. But, hold on a second… `bnge` isn't immediately ringing any bells as a standard upstream Linux driver. That's a red flag. I need to figure out if this is an actual, physical driver, or if it's something specific to this testing environment – maybe a syzkaller pseudo-driver, or something similar?

Aha, the patch indicates it's located in `drivers/net/ethernet/broadcom/bnge/bnge_netdev.c`. That gives me a bit more confidence it might be a *real* driver. Let's dig deeper and see if it's tied to physical hardware. I need the PCI IDs... got them: `{ PCI_VDEVICE(BROADCOM, 0x1780), .driver_data = BCM57708 }`. Okay, that's crucial. 

If this points to an actual hardware card, like the BCM57708, then there's an immediate problem. It means we're dealing with a physical NIC that's likely not reachable in the current setup. This brings up the need to check for QEMU emulation.

So, the key question now is: Does QEMU, or any other virtualization, emulate the BCM57708 or the `bnge` driver? I'll check if `CONFIG_BNGE` is defined in the kernel tree. That will be the next step.



6/2 2026/08/27 17:04 tool grepper
0m Args:
{
  "Expression": "config BNGE",
  "PathPrefix": "drivers/net/ethernet/broadcom/"
}

Results:
{
  "Output": "drivers/net/ethernet/broadcom/Kconfig=250=config BNXT_HWMON\n--\ndrivers/net/ethernet/broadcom/Kconfig-257-\ndrivers/net/ethernet/broadcom/Kconfig:258:config BNGE\ndrivers/net/ethernet/broadcom/Kconfig-259-\ttristate \"Broadcom ThorUltra Ethernet device support\"\n"
}

7/2 2026/08/27 17:04 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 17739
							output: 40
							thoughts: 263
						

Thoughts:
**My Assessment of Broadcom ThorUltra Ethernet Device Support**

Okay, so the initial question is about Broadcom's ThorUltra Ethernet device and its support. My first thought is whether this is a physical PCIe card, meaning it's not something typically emulated in a standard QEMU environment. The answer confirms it's physical hardware.

Alright, let's step back and consider QEMU emulation. I immediately run through the common network device emulations I'm familiar with – e1000, e1000e, rtl8139, pcnet, ne2k_pci, vmxnet3, virtio-net. None of those are the ThorUltra. So, QEMU likely *doesn't* emulate it directly.

Next, I need to check if we're dealing with a driver designed for a virtualized environment. The prompt references vendor-specific drivers associated with PCIe switches, SmartNICs, or GPUs, things like mlxsw, pds_core, qed, ionic, and amdgpu that require physical PCIe hardware not emulated in QEMU. This makes me suspect BNGE *is* such a physical device. Let's confirm it's a physical card.

If it *is* physical, then it's almost certainly not going to be accessible within environments like Google Compute Engine or, importantly, our QEMU setup. It makes sense to verify.

To nail it down completely, the next logical step is to check the `drivers/net/ethernet/broadcom/Kconfig` file for the `BNGE` driver configuration. That'll provide the definitive answer.



8/2 2026/08/27 17:04 tool read-file
0m Args:
{
  "File": "drivers/net/ethernet/broadcom/Kconfig",
  "FirstLine": 250,
  "LineCount": 20
}

Results:
{
  "Contents": " 250:\tconfig BNXT_HWMON\n 251:\t\tbool \"Broadcom NetXtreme-C/E HWMON support\"\n 252:\t\tdefault y\n 253:\t\tdepends on BNXT \u0026\u0026 HWMON \u0026\u0026 !(BNXT=y \u0026\u0026 HWMON=m)\n 254:\t\thelp\n 255:\t\t  Say Y if you want to expose the thermal sensor data on NetXtreme-C/E\n 256:\t\t  devices, via the hwmon sysfs interface.\n 257:\t\n 258:\tconfig BNGE\n 259:\t\ttristate \"Broadcom ThorUltra Ethernet device support\"\n 260:\t\tdepends on PCI\n 261:\t\tselect NET_DEVLINK\n 262:\t\tselect PAGE_POOL\n 263:\t\tselect AUXILIARY_BUS\n 264:\t\thelp\n 265:\t\t  This driver supports Broadcom ThorUltra 50/100/200/400/800 gigabit\n 266:\t\t  Ethernet cards. The module will be called bng_en. To compile this\n 267:\t\t  driver as a module, choose M here.\n 268:\t\n 269:\tconfig BCMASP\n"
}

9/2 2026/08/27 17:04 llm patch-evaluator
1m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 18719
							output: 110
							thoughts: 285
						

Thoughts:
**My Assessment of the Broadcom ThorUltra Ethernet Card**

Okay, here's the deal: Broadcom's ThorUltra cards, those 50/100/200/400/800 gigabit beasts, are *definitely* physical PCIe hardware. No software emulation in the standard QEMU setup, which immediately tells me they're unreachable in virtualized environments, like Google Compute Engine or a typical QEMU instance. So, *WorthFuzzing=false* is the immediate conclusion.

Let me just double-check, though, because I don't want to miss anything. Is there a software emulator lurking in the kernel somewhere? Nope. Is it a virtio device? Absolutely not; it's a PCI device with ID 0x1780. So, it's a physical hardware card, plain and simple.

Now, let's go back and examine those instructions. They're telling me to set *WorthFuzzing=false* if the patch includes code that's impossible to reach in virtualized environments, even when using emulated hardware, or code that's specific to vendor-defined PCIe switch, SmartNIC, or GPU drivers and requires physical PCIe cards.

Well, this Broadcom card perfectly hits that second bullet point. It requires physical hardware. No way around it.

Therefore, my final answer is *WorthFuzzing=false*.



10/2 2026/08/27 17:05 tool set-results
0m Args:
{
  "EnableConfigs": [],
  "FocusSymbols": [],
  "Reasoning": "The patch modifies the `bnge` driver, which is for Broadcom ThorUltra 50/100/200/400/800 gigabit Ethernet cards. This is a vendor-specific physical PCIe hardware card that is not emulated in standard QEMU or virtualized environments. Therefore, the code paths are impossible to reach during fuzzing.",
  "WorthFuzzing": false
}

Results:
{
  "EnableConfigs": null,
  "FocusSymbols": [],
  "Reasoning": "The patch modifies the `bnge` driver, which is for Broadcom ThorUltra 50/100/200/400/800 gigabit Ethernet cards. This is a vendor-specific physical PCIe hardware card that is not emulated in standard QEMU or virtualized environments. Therefore, the code paths are impossible to reach during fuzzing.",
  "WorthFuzzing": false
}

11/1 2026/08/27 17:05 action If
0m Args:
{
  "WorthFuzzing": false
}

Results:
null

LLM Calls Summary:
Total Calls Total Tokens Avg Tokens Total Duration (Seconds) Avg Duration (Seconds)
Tool Calls Summary:
Total Calls Total Duration (Seconds) Avg Duration (Seconds)