| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/09/07 07:29 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"KMSANReasoning": "",
"NeedsKMSAN": false,
"Reasoning": "The modified code is located in the Marvell Prestera switch driver (drivers/net/ethernet/marvell/prestera/prestera_hw.c), which supports Marvell Prestera switch ASICs over PCI. This driver requires specific physical ASIC hardware and firmware not emulated in standard virtualized fuzzing environments (QEMU/GCE), making the modified code structurally unreachable.",
"WorthFuzzing": false
} |
| 1/1 | 2026/09/07 07:29 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit 1958bbb3e6d8bb5b23a76b02e67fb6bed35c0db3\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Mon Sep 7 07:29:20 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/drivers/net/ethernet/marvell/prestera/prestera_hw.c b/drivers/net/ethernet/marvell/prestera/prestera_hw.c\nindex 7695cbb2ce626..c4cb5f22893c9 100644\n--- a/drivers/net/ethernet/marvell/prestera/prestera_hw.c\n+++ b/drivers/net/ethernet/marvell/prestera/prestera_hw.c\n@@ -2324,6 +2324,11 @@ int prestera_hw_counters_get(struct prestera_switch *sw, u32 idx,\n \tif (err)\n \t\tgoto free_buff;\n \n+\tif (__le32_to_cpu(resp-\u003enum_counters) \u003e *len) {\n+\t\terr = -EINVAL;\n+\t\tgoto free_buff;\n+\t}\n+\n \tfor (i = 0; i \u003c __le32_to_cpu(resp-\u003enum_counters); i++) {\n \t\tstats[i].packets += __le64_to_cpu(resp-\u003estats[i].packets);\n \t\tstats[i].bytes += __le64_to_cpu(resp-\u003estats[i].bytes);\n"
} |
| 2/1 | 2026/09/07 07:29 | agent | patch-evaluator |
0mModel:core Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The modified code is located in the Marvell Prestera switch driver (drivers/net/ethernet/marvell/prestera/prestera_hw.c), which supports Marvell Prestera switch ASICs over PCI. This driver requires specific physical ASIC hardware and firmware not emulated in standard virtualized fuzzing environments (QEMU/GCE), making the modified code structurally unreachable.",
"WorthFuzzing": false
}Instruction: You are an expert Linux kernel maintainer and security engineer.
Your job is to review a provided patch series and evaluate whether it warrants fuzzing with syzkaller.
IMPORTANT: The changes have ALREADY been applied and committed as the HEAD commit in
your workspace. Do NOT rely on internal assumptions. You must actively use your code access
tools to inspect the actual source code, callers, and surrounding context.
================================================================================
1. CORE TRIAGE PHILOSOPHY
================================================================================
The goal of patch fuzzing is to discover crashes, regressions, exposed latent bugs,
and newly triggered assertions introduced by the patch series.
- REACHABILITY IS THE PRIMARY GATE:
Fuzzing can only discover bugs in code that can actually execute in standard virtualized
environments (GCE or QEMU, utilizing software-emulated devices like USB gadgets, netdev, tun/tap).
If the modified code is structurally unreachable (see Section 2), it MUST NOT be fuzzed,
regardless of whether it adds assertions or complex logic.
- DO NOT BLINDLY TRUST "NO FUNCTIONAL CHANGE" (NFCI) OR "REFACTORING" CLAIMS:
Patch authors routinely label changes as "cleanups", "refactorings", or state
"No functional change intended". Do NOT take these claims at face value.
Code refactorings that rearrange logic, introduce helper functions, or alter state management
in core subsystems frequently introduce subtle semantic shifts or uncover latent kernel bugs.
If reachable executable code is modified or refactored, it MUST be fuzzed.
- NEW OR MODIFIED ASSERTIONS IN REACHABLE CODE MUST BE FUZZED:
When a patch introduces or modifies runtime checks or assertions (e.g., WARN_ON*, VM_WARN_ON*,
BUG_ON*, lockdep_assert*) in reachable code paths, it enforces new or stricter invariants.
Even if the author believes the invariant always holds, fuzzing is essential to verify whether
an unusual sequence of operations can violate it.
================================================================================
2. WHEN TO RETURN WorthFuzzing=false (NEGATIVE CRITERIA)
================================================================================
Return WorthFuzzing=false ONLY IF all modified code falls strictly into one or more of these categories:
- Non-kernel and non-executable changes:
* Modifications to Documentation/, comments, or spelling fixes.
* User-space directories, self-tests, samples, or scripts (e.g., tools/, samples/, scripts/, usr/)
that do not affect the compiled kernel image (vmlinux) or kernel modules.
* Purely decorative logging (e.g., message strings in pr_err, printk, dev_info) or tracepoints
that do not alter control flow or data structures.
* Build system or Kconfig changes that do not alter compiled C logic.
- Structurally unreachable hardware:
* Vendor-specific PCIe switches, SmartNICs, or GPU drivers (e.g., mlxsw, pds_core, qed,
ionic, amdgpu) requiring physical ASIC/PCIe cards not emulated in standard QEMU.
- Unreachable execution paths:
* Driver teardown callbacks (.remove, .shutdown, pci_unregister_driver) executed only during
physical PCI hot-unplug or manual sysfs driver unbinding.
* Code paths exclusive to architectures other than the target architecture.
================================================================================
3. WHEN TO RETURN WorthFuzzing=true (POSITIVE CRITERIA)
================================================================================
Return WorthFuzzing=true whenever the patch touches reachable executable code, including:
- Core Subsystems:
* Any logic modifications in memory management (mm/), synchronization/locking (kernel/locking/),
BPF, scheduler, core networking, VFS, or syscall handling.
- Refactorings and Code Cleanups:
* Any restructuring of reachable data structures, helper abstractions, or algorithm flows.
- Runtime Assertions and Defensive Checks:
* Any introduction or alteration of assertions (WARN_ON*, VM_WARN_ON*, BUG_ON*, etc.) in reachable paths.
- Reachable Drivers and Protocols:
* Drivers accessible via virtual buses (virtio, USB gadget, loopback, netlink, binder, sockets, etc.).
================================================================================
4. EXTRACTING FocusSymbols (PREVENTING DILUTION)
================================================================================
When WorthFuzzing=true, you must extract specific kernel functions into FocusSymbols to guide the fuzzer:
- AVOID UBIQUITOUS LIFECYCLE HOT-PATHS:
Do NOT list generic, ubiquitous functions called by almost every program in the corpus
(including, but not limited to: general memory allocators and deallocators, page fault
and trap handlers, or core synchronization primitives; this is not an exhaustive list).
Listing ubiquitous functions causes the fuzzer to classify thousands of unrelated tests as "focused",
which severely dilutes fuzzing effort away from the actual changes.
- TARGET SPECIFIC FEATURE LOGIC AND ENTRYPOINTS:
List functions that specifically implement the logic being added or altered, or direct API entrypoints
for the subsystem feature under review.
- HANDLING STATIC INLINE FUNCTIONS IN HEADERS (.h):
Compiler-inlined static functions (such as static inlines in mm/*.h or include/linux/*.h) lack
distinct symbol addresses in vmlinux and cannot be targeted directly by symbol coverage filters.
If the changes are primarily in static inline helpers, identify non-static, feature-specific caller
functions in .c files that exercise them (avoiding ubiquitous lifecycle wrappers).
================================================================================
5. IDENTIFYING EnableConfigs
================================================================================
Identify any specific CONFIG_ options required to properly compile and reach the modified code:
- Inspect Kconfig files and #ifdef guards; do not make assumptions.
- Check "depends on" lines in Kconfig to include any non-standard parent subsystem configs needed.
- Strip any '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: Target architecture: amd64
For your convenience, here is the diff of the changes:
commit 1958bbb3e6d8bb5b23a76b02e67fb6bed35c0db3
Author: syz-cluster <triage@syzkaller.com>
Date: Mon Sep 7 07:29:20 2026 +0000
syz-cluster: applied patch under review
diff --git a/drivers/net/ethernet/marvell/prestera/prestera_hw.c b/drivers/net/ethernet/marvell/prestera/prestera_hw.c
index 7695cbb2ce626..c4cb5f22893c9 100644
--- a/drivers/net/ethernet/marvell/prestera/prestera_hw.c
+++ b/drivers/net/ethernet/marvell/prestera/prestera_hw.c
@@ -2324,6 +2324,11 @@ int prestera_hw_counters_get(struct prestera_switch *sw, u32 idx,
if (err)
goto free_buff;
+ if (__le32_to_cpu(resp->num_counters) > *len) {
+ err = -EINVAL;
+ goto free_buff;
+ }
+
for (i = 0; i < __le32_to_cpu(resp->num_counters); i++) {
stats[i].packets += __le64_to_cpu(resp->stats[i].packets);
stats[i].bytes += __le64_to_cpu(resp->stats[i].bytes);
|
| 3/2 | 2026/09/07 07:29 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 2971 output: 35 thoughts: 120 Thoughts: **Analyzing a Marvell Prestera Driver Patch** Alright, let's dive into this patch. My initial focus is on the diff, specifically the changes in `drivers/net/ethernet/marvell/prestera/prestera_hw.c`. First, I need to get a clear picture of what the `prestera` driver actually *is*. The question on my mind right now is whether this Marvell Prestera switch driver is something I can reliably reach and fuzz within standard virtualized environments like QEMU or Google Compute Engine. That's key for efficient analysis. Therefore, I need to understand its setup requirements. I'll need to check the Kconfig entries, PCI IDs, or platform-specific details within the driver code. If it needs specific hardware, that's a significant consideration. I'll probably start with a `grepper` run or just a targeted file inspection in the `drivers/net/ethernet/marvell/prestera/` directory. That should give me the context I need to proceed effectively. |
| 4/2 | 2026/09/07 07:29 | tool | grepper |
0mArgs:{
"Expression": "PRESTERA",
"PathPrefix": "drivers/net/ethernet/marvell/prestera"
}Results: {
"Output": "\nFull output is too long, showing 500 out of 3528 lines.\nUse more precise expression if possible.\n\ndrivers/net/ethernet/marvell/prestera/Kconfig-5-\ndrivers/net/ethernet/marvell/prestera/Kconfig:6:config PRESTERA\ndrivers/net/ethernet/marvell/prestera/Kconfig-7-\ttristate \"Marvell Prestera Switch ASICs support\"\n--\ndrivers/net/ethernet/marvell/prestera/Kconfig-17-\ndrivers/net/ethernet/marvell/prestera/Kconfig:18:config PRESTERA_PCI\ndrivers/net/ethernet/marvell/prestera/Kconfig-19-\ttristate \"PCI interface driver for Marvell Prestera Switch ASICs family\"\ndrivers/net/ethernet/marvell/prestera/Kconfig:20:\tdepends on PCI \u0026\u0026 HAS_IOMEM \u0026\u0026 PRESTERA\ndrivers/net/ethernet/marvell/prestera/Kconfig:21:\tdefault PRESTERA\ndrivers/net/ethernet/marvell/prestera/Kconfig-22-\thelp\n--\ndrivers/net/ethernet/marvell/prestera/Makefile-1-# SPDX-License-Identifier: GPL-2.0\ndrivers/net/ethernet/marvell/prestera/Makefile:2:obj-$(CONFIG_PRESTERA)\t+= prestera.o\ndrivers/net/ethernet/marvell/prestera/Makefile-3-prestera-objs\t\t:= prestera_main.o prestera_hw.o prestera_dsa.o \\\n--\ndrivers/net/ethernet/marvell/prestera/Makefile-8-\ndrivers/net/ethernet/marvell/prestera/Makefile:9:obj-$(CONFIG_PRESTERA_PCI)\t+= prestera_pci.o\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-3-\ndrivers/net/ethernet/marvell/prestera/prestera.h:4:#ifndef _PRESTERA_H_\ndrivers/net/ethernet/marvell/prestera/prestera.h:5:#define _PRESTERA_H_\ndrivers/net/ethernet/marvell/prestera/prestera.h-6-\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-13-\ndrivers/net/ethernet/marvell/prestera/prestera.h:14:#define PRESTERA_DRV_NAME\t\"prestera\"\ndrivers/net/ethernet/marvell/prestera/prestera.h-15-\ndrivers/net/ethernet/marvell/prestera/prestera.h:16:#define PRESTERA_DEFAULT_VID 1\ndrivers/net/ethernet/marvell/prestera/prestera.h-17-\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h=44=struct prestera_port_stats {\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-76-\ndrivers/net/ethernet/marvell/prestera/prestera.h:77:#define PRESTERA_AP_PORT_MAX (10)\ndrivers/net/ethernet/marvell/prestera/prestera.h-78-\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h=184=enum prestera_event_type {\ndrivers/net/ethernet/marvell/prestera/prestera.h:185:\tPRESTERA_EVENT_TYPE_UNSPEC,\ndrivers/net/ethernet/marvell/prestera/prestera.h-186-\ndrivers/net/ethernet/marvell/prestera/prestera.h:187:\tPRESTERA_EVENT_TYPE_PORT,\ndrivers/net/ethernet/marvell/prestera/prestera.h:188:\tPRESTERA_EVENT_TYPE_FDB,\ndrivers/net/ethernet/marvell/prestera/prestera.h:189:\tPRESTERA_EVENT_TYPE_RXTX,\ndrivers/net/ethernet/marvell/prestera/prestera.h-190-\ndrivers/net/ethernet/marvell/prestera/prestera.h:191:\tPRESTERA_EVENT_TYPE_MAX\ndrivers/net/ethernet/marvell/prestera/prestera.h-192-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h=194=enum prestera_rxtx_event_id {\ndrivers/net/ethernet/marvell/prestera/prestera.h:195:\tPRESTERA_RXTX_EVENT_UNSPEC,\ndrivers/net/ethernet/marvell/prestera/prestera.h:196:\tPRESTERA_RXTX_EVENT_RCV_PKT,\ndrivers/net/ethernet/marvell/prestera/prestera.h-197-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h=199=enum prestera_port_event_id {\ndrivers/net/ethernet/marvell/prestera/prestera.h:200:\tPRESTERA_PORT_EVENT_UNSPEC,\ndrivers/net/ethernet/marvell/prestera/prestera.h:201:\tPRESTERA_PORT_EVENT_MAC_STATE_CHANGED,\ndrivers/net/ethernet/marvell/prestera/prestera.h-202-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h=226=enum prestera_fdb_entry_type {\ndrivers/net/ethernet/marvell/prestera/prestera.h:227:\tPRESTERA_FDB_ENTRY_TYPE_REG_PORT,\ndrivers/net/ethernet/marvell/prestera/prestera.h:228:\tPRESTERA_FDB_ENTRY_TYPE_LAG,\ndrivers/net/ethernet/marvell/prestera/prestera.h:229:\tPRESTERA_FDB_ENTRY_TYPE_MAX\ndrivers/net/ethernet/marvell/prestera/prestera.h-230-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h=232=enum prestera_fdb_event_id {\ndrivers/net/ethernet/marvell/prestera/prestera.h:233:\tPRESTERA_FDB_EVENT_UNSPEC,\ndrivers/net/ethernet/marvell/prestera/prestera.h:234:\tPRESTERA_FDB_EVENT_LEARNED,\ndrivers/net/ethernet/marvell/prestera/prestera.h:235:\tPRESTERA_FDB_EVENT_AGED,\ndrivers/net/ethernet/marvell/prestera/prestera.h-236-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h=258=enum prestera_if_type {\ndrivers/net/ethernet/marvell/prestera/prestera.h-259-\t/* the interface is of port type (dev,port) */\ndrivers/net/ethernet/marvell/prestera/prestera.h:260:\tPRESTERA_IF_PORT_E = 0,\ndrivers/net/ethernet/marvell/prestera/prestera.h-261-\ndrivers/net/ethernet/marvell/prestera/prestera.h-262-\t/* the interface is of lag type (lag-id) */\ndrivers/net/ethernet/marvell/prestera/prestera.h:263:\tPRESTERA_IF_LAG_E = 1,\ndrivers/net/ethernet/marvell/prestera/prestera.h-264-\ndrivers/net/ethernet/marvell/prestera/prestera.h-265-\t/* the interface is of Vid type (vlan-id) */\ndrivers/net/ethernet/marvell/prestera/prestera.h:266:\tPRESTERA_IF_VID_E = 3,\ndrivers/net/ethernet/marvell/prestera/prestera.h-267-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h=414=prestera_flood_domain_port_find(struct prestera_flood_domain *flood_domain,\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-416-\ndrivers/net/ethernet/marvell/prestera/prestera.h:417:#endif /* _PRESTERA_H_ */\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-11-#define ACL_KEYMASK_SIZE\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:12:\t(sizeof(__be32) * __PRESTERA_ACL_RULE_MATCH_TYPE_MAX)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-13-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=71=struct prestera_acl_vtcam {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-72-\tstruct list_head list;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:73:\t__be32 keymask[__PRESTERA_ACL_RULE_MATCH_TYPE_MAX];\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-74-\trefcount_t refcount;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=102=int prestera_acl_chain_to_client(u32 chain_index, bool ingress, u32 *client)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-104-\tstatic const u32 ingress_client_map[] = {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:105:\t\tPRESTERA_HW_COUNTER_CLIENT_INGRESS_LOOKUP_0,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:106:\t\tPRESTERA_HW_COUNTER_CLIENT_INGRESS_LOOKUP_1,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:107:\t\tPRESTERA_HW_COUNTER_CLIENT_INGRESS_LOOKUP_2\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-108-\t};\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-114-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:115:\t\t*client = PRESTERA_HW_COUNTER_CLIENT_EGRESS_LOOKUP;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-116-\t\treturn 0;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=126=static bool prestera_acl_chain_is_supported(u32 chain_index, bool ingress)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-131-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:132:\treturn (chain_index \u0026 ~PRESTERA_ACL_CHAIN_MASK) == 0;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-133-}\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=136=prestera_acl_ruleset_create(struct prestera_acl *acl,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-165-\t/* make pcl-id based on uid */\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:166:\truleset-\u003epcl_id = PRESTERA_ACL_PCL_ID_MAKE((u8)uid, chain_index);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-167-\truleset-\u003eindex = uid;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=198=int prestera_acl_ruleset_offload(struct prestera_acl_ruleset *ruleset)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-205-\tdir = ruleset-\u003eingress ?\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:206:\t\tPRESTERA_HW_VTCAM_DIR_INGRESS : PRESTERA_HW_VTCAM_DIR_EGRESS;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-207-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-222-\t\tiface.index = ruleset-\u003eindex;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:223:\t\tiface.type = PRESTERA_ACL_IFACE_TYPE_INDEX;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-224-\t\terr = prestera_hw_vtcam_iface_bind(ruleset-\u003eacl-\u003esw, \u0026iface,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=240=static void prestera_acl_ruleset_destroy(struct prestera_acl_ruleset *ruleset)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-242-\tstruct prestera_acl *acl = ruleset-\u003eacl;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:243:\tu8 uid = ruleset-\u003epcl_id \u0026 PRESTERA_ACL_KEYMASK_PCL_ID_USER;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-244-\tint err;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-251-\t\t\tstruct prestera_acl_iface iface = {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:252:\t\t\t\t.type = PRESTERA_ACL_IFACE_TYPE_INDEX,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-253-\t\t\t\t.index = ruleset-\u003eindex\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=321=int prestera_acl_ruleset_bind(struct prestera_acl_ruleset *ruleset,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-324-\tstruct prestera_acl_iface iface = {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:325:\t\t.type = PRESTERA_ACL_IFACE_TYPE_PORT,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-326-\t\t.port = port\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=333=int prestera_acl_ruleset_unbind(struct prestera_acl_ruleset *ruleset,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-336-\tstruct prestera_acl_iface iface = {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:337:\t\t.type = PRESTERA_ACL_IFACE_TYPE_PORT,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-338-\t\t.port = port\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=400=prestera_acl_rule_keymask_pcl_id_set(struct prestera_acl_rule *rule, u16 pcl_id)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-402-\tstruct prestera_acl_match *r_match = \u0026rule-\u003ere_key.match;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:403:\t__be16 pcl_id_mask = htons(PRESTERA_ACL_KEYMASK_PCL_ID);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-404-\t__be16 pcl_id_key = htons(pcl_id);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=584=static int __prestera_acl_rule_entry2hw_add(struct prestera_switch *sw,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-586-{\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:587:\tstruct prestera_acl_hw_action_info act_hw[PRESTERA_ACL_RULE_ACTION_MAX];\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-588-\tint act_num;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-594-\tif (e-\u003eaccept.valid) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:595:\t\tact_hw[act_num].id = PRESTERA_ACL_RULE_ACTION_ACCEPT;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-596-\t\tact_num++;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-599-\tif (e-\u003edrop.valid) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:600:\t\tact_hw[act_num].id = PRESTERA_ACL_RULE_ACTION_DROP;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-601-\t\tact_num++;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-604-\tif (e-\u003etrap.valid) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:605:\t\tact_hw[act_num].id = PRESTERA_ACL_RULE_ACTION_TRAP;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-606-\t\tact_num++;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-609-\tif (e-\u003epolice.valid) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:610:\t\tact_hw[act_num].id = PRESTERA_ACL_RULE_ACTION_POLICE;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-611-\t\tact_hw[act_num].police = e-\u003epolice.i;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-615-\tif (e-\u003ejump.valid) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:616:\t\tact_hw[act_num].id = PRESTERA_ACL_RULE_ACTION_JUMP;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-617-\t\tact_hw[act_num].jump = e-\u003ejump.i;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-621-\tif (e-\u003ecounter.block) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:622:\t\tact_hw[act_num].id = PRESTERA_ACL_RULE_ACTION_COUNT;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-623-\t\tact_hw[act_num].count.id = e-\u003ecounter.id;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=659=__prestera_acl_rule_entry_act_construct(struct prestera_switch *sw,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-675-\tif (arg-\u003epolice.valid) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:676:\t\tu8 type = arg-\u003epolice.ingress ? PRESTERA_POLICER_TYPE_INGRESS :\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:677:\t\t\t\t\t\tPRESTERA_POLICER_TYPE_EGRESS;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-678-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c=747=static int __prestera_acl_vtcam_id_try_fit(struct prestera_acl *acl, u8 lookup,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-763-\t\t/* try to fit with vtcam keymask */\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:764:\t\tfor (i = 0; i \u003c __PRESTERA_ACL_RULE_MATCH_TYPE_MAX; i++) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-765-\t\t\t__be32 __keymask = ((__be32 *)keymask)[i];\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-775-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:776:\t\tif (i == __PRESTERA_ACL_RULE_MATCH_TYPE_MAX)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-777-\t\t\t/* keymask fits vtcam keymask, return it */\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-3-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:4:#ifndef _PRESTERA_ACL_H_\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:5:#define _PRESTERA_ACL_H_\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-6-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-9-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:10:#define PRESTERA_ACL_KEYMASK_PCL_ID\t\t0x3FF\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:11:#define PRESTERA_ACL_KEYMASK_PCL_ID_USER\t\t\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:12:\t(PRESTERA_ACL_KEYMASK_PCL_ID \u0026 0x00FF)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:13:#define PRESTERA_ACL_KEYMASK_PCL_ID_CHAIN\t\t\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:14:\t(PRESTERA_ACL_KEYMASK_PCL_ID \u0026 0xFF00)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:15:#define PRESTERA_ACL_CHAIN_MASK\t\t\t\t\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:16:\t(PRESTERA_ACL_KEYMASK_PCL_ID \u003e\u003e 8)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-17-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:18:#define PRESTERA_ACL_PCL_ID_MAKE(uid, chain_id)\t\t\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:19:\t(((uid) \u0026 PRESTERA_ACL_KEYMASK_PCL_ID_USER) |\t\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:20:\t(((chain_id) \u003c\u003c 8) \u0026 PRESTERA_ACL_KEYMASK_PCL_ID_CHAIN))\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-21-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-22-#define rule_match_set_n(match_p, type, val_p, size)\t\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:23:\tmemcpy(\u0026(match_p)[PRESTERA_ACL_RULE_MATCH_TYPE_##type],\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-24-\t val_p, size)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-25-#define rule_match_set(match_p, type, val)\t\t\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:26:\tmemcpy(\u0026(match_p)[PRESTERA_ACL_RULE_MATCH_TYPE_##type],\t\\\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-27-\t \u0026(val), sizeof(val))\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h=29=enum prestera_acl_match_type {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:30:\tPRESTERA_ACL_RULE_MATCH_TYPE_PCL_ID,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:31:\tPRESTERA_ACL_RULE_MATCH_TYPE_ETH_TYPE,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:32:\tPRESTERA_ACL_RULE_MATCH_TYPE_ETH_DMAC_0,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:33:\tPRESTERA_ACL_RULE_MATCH_TYPE_ETH_DMAC_1,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:34:\tPRESTERA_ACL_RULE_MATCH_TYPE_ETH_SMAC_0,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:35:\tPRESTERA_ACL_RULE_MATCH_TYPE_ETH_SMAC_1,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:36:\tPRESTERA_ACL_RULE_MATCH_TYPE_IP_PROTO,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:37:\tPRESTERA_ACL_RULE_MATCH_TYPE_SYS_PORT,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:38:\tPRESTERA_ACL_RULE_MATCH_TYPE_SYS_DEV,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:39:\tPRESTERA_ACL_RULE_MATCH_TYPE_IP_SRC,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:40:\tPRESTERA_ACL_RULE_MATCH_TYPE_IP_DST,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:41:\tPRESTERA_ACL_RULE_MATCH_TYPE_L4_PORT_SRC,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:42:\tPRESTERA_ACL_RULE_MATCH_TYPE_L4_PORT_DST,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:43:\tPRESTERA_ACL_RULE_MATCH_TYPE_L4_PORT_RANGE_SRC,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:44:\tPRESTERA_ACL_RULE_MATCH_TYPE_L4_PORT_RANGE_DST,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:45:\tPRESTERA_ACL_RULE_MATCH_TYPE_VLAN_ID,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:46:\tPRESTERA_ACL_RULE_MATCH_TYPE_VLAN_TPID,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:47:\tPRESTERA_ACL_RULE_MATCH_TYPE_ICMP_TYPE,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:48:\tPRESTERA_ACL_RULE_MATCH_TYPE_ICMP_CODE,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-49-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:50:\t__PRESTERA_ACL_RULE_MATCH_TYPE_MAX\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-51-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h=53=enum prestera_acl_rule_action {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:54:\tPRESTERA_ACL_RULE_ACTION_ACCEPT = 0,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:55:\tPRESTERA_ACL_RULE_ACTION_DROP = 1,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:56:\tPRESTERA_ACL_RULE_ACTION_TRAP = 2,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:57:\tPRESTERA_ACL_RULE_ACTION_JUMP = 5,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:58:\tPRESTERA_ACL_RULE_ACTION_COUNT = 7,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:59:\tPRESTERA_ACL_RULE_ACTION_POLICE = 8,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-60-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:61:\tPRESTERA_ACL_RULE_ACTION_MAX\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-62-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h=64=enum {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:65:\tPRESTERA_ACL_IFACE_TYPE_PORT,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:66:\tPRESTERA_ACL_IFACE_TYPE_INDEX\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-67-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h=69=struct prestera_acl_match {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:70:\t__be32 key[__PRESTERA_ACL_RULE_MATCH_TYPE_MAX];\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:71:\t__be32 mask[__PRESTERA_ACL_RULE_MATCH_TYPE_MAX];\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-72-};\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h=207=int prestera_acl_chain_to_client(u32 chain_index, bool ingress, u32 *client);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h-208-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.h:209:#endif /* _PRESTERA_ACL_H_ */\n--\ndrivers/net/ethernet/marvell/prestera/prestera_counter.h-3-\ndrivers/net/ethernet/marvell/prestera/prestera_counter.h:4:#ifndef _PRESTERA_COUNTER_H_\ndrivers/net/ethernet/marvell/prestera/prestera_counter.h:5:#define _PRESTERA_COUNTER_H_\ndrivers/net/ethernet/marvell/prestera/prestera_counter.h-6-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_counter.h=26=int prestera_counter_stats_get(struct prestera_counter *counter,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_counter.h-29-\ndrivers/net/ethernet/marvell/prestera/prestera_counter.h:30:#endif /* _PRESTERA_COUNTER_H_ */\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c=12=enum {\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:13:\tDEVLINK_PRESTERA_TRAP_ID_BASE = DEVLINK_TRAP_GENERIC_ID_MAX,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:14:\tDEVLINK_PRESTERA_TRAP_ID_ARP_BC,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:15:\tDEVLINK_PRESTERA_TRAP_ID_IS_IS,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:16:\tDEVLINK_PRESTERA_TRAP_ID_OSPF,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:17:\tDEVLINK_PRESTERA_TRAP_ID_IP_BC_MAC,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:18:\tDEVLINK_PRESTERA_TRAP_ID_ROUTER_MC,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:19:\tDEVLINK_PRESTERA_TRAP_ID_VRRP,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:20:\tDEVLINK_PRESTERA_TRAP_ID_DHCP,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:21:\tDEVLINK_PRESTERA_TRAP_ID_MAC_TO_ME,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:22:\tDEVLINK_PRESTERA_TRAP_ID_IPV4_OPTIONS,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:23:\tDEVLINK_PRESTERA_TRAP_ID_IP_DEFAULT_ROUTE,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:24:\tDEVLINK_PRESTERA_TRAP_ID_IP_TO_ME,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:25:\tDEVLINK_PRESTERA_TRAP_ID_IPV4_ICMP_REDIRECT,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:26:\tDEVLINK_PRESTERA_TRAP_ID_ACL_CODE_0,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:27:\tDEVLINK_PRESTERA_TRAP_ID_ACL_CODE_1,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:28:\tDEVLINK_PRESTERA_TRAP_ID_ACL_CODE_2,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:29:\tDEVLINK_PRESTERA_TRAP_ID_ACL_CODE_3,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:30:\tDEVLINK_PRESTERA_TRAP_ID_ACL_CODE_4,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:31:\tDEVLINK_PRESTERA_TRAP_ID_ACL_CODE_5,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:32:\tDEVLINK_PRESTERA_TRAP_ID_ACL_CODE_6,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:33:\tDEVLINK_PRESTERA_TRAP_ID_ACL_CODE_7,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:34:\tDEVLINK_PRESTERA_TRAP_ID_BGP,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:35:\tDEVLINK_PRESTERA_TRAP_ID_SSH,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:36:\tDEVLINK_PRESTERA_TRAP_ID_TELNET,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:37:\tDEVLINK_PRESTERA_TRAP_ID_ICMP,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:38:\tDEVLINK_PRESTERA_TRAP_ID_MET_RED,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:39:\tDEVLINK_PRESTERA_TRAP_ID_IP_SIP_IS_ZERO,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:40:\tDEVLINK_PRESTERA_TRAP_ID_IP_UC_DIP_DA_MISMATCH,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:41:\tDEVLINK_PRESTERA_TRAP_ID_ILLEGAL_IPV4_HDR,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:42:\tDEVLINK_PRESTERA_TRAP_ID_ILLEGAL_IP_ADDR,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:43:\tDEVLINK_PRESTERA_TRAP_ID_INVALID_SA,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:44:\tDEVLINK_PRESTERA_TRAP_ID_LOCAL_PORT,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:45:\tDEVLINK_PRESTERA_TRAP_ID_PORT_NO_VLAN,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:46:\tDEVLINK_PRESTERA_TRAP_ID_RXDMA_DROP,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-47-};\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-48-\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:49:#define DEVLINK_PRESTERA_TRAP_NAME_ARP_BC \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-50-\t\"arp_bc\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:51:#define DEVLINK_PRESTERA_TRAP_NAME_IS_IS \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-52-\t\"is_is\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:53:#define DEVLINK_PRESTERA_TRAP_NAME_OSPF \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-54-\t\"ospf\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:55:#define DEVLINK_PRESTERA_TRAP_NAME_IP_BC_MAC \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-56-\t\"ip_bc_mac\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:57:#define DEVLINK_PRESTERA_TRAP_NAME_ROUTER_MC \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-58-\t\"router_mc\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:59:#define DEVLINK_PRESTERA_TRAP_NAME_VRRP \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-60-\t\"vrrp\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:61:#define DEVLINK_PRESTERA_TRAP_NAME_DHCP \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-62-\t\"dhcp\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:63:#define DEVLINK_PRESTERA_TRAP_NAME_MAC_TO_ME \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-64-\t\"mac_to_me\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:65:#define DEVLINK_PRESTERA_TRAP_NAME_IPV4_OPTIONS \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-66-\t\"ipv4_options\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:67:#define DEVLINK_PRESTERA_TRAP_NAME_IP_DEFAULT_ROUTE \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-68-\t\"ip_default_route\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:69:#define DEVLINK_PRESTERA_TRAP_NAME_IP_TO_ME \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-70-\t\"ip_to_me\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:71:#define DEVLINK_PRESTERA_TRAP_NAME_IPV4_ICMP_REDIRECT \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-72-\t\"ipv4_icmp_redirect\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:73:#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_0 \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-74-\t\"acl_code_0\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:75:#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_1 \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-76-\t\"acl_code_1\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:77:#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_2 \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-78-\t\"acl_code_2\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:79:#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_3 \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-80-\t\"acl_code_3\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:81:#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_4 \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-82-\t\"acl_code_4\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:83:#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_5 \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-84-\t\"acl_code_5\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:85:#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_6 \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-86-\t\"acl_code_6\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:87:#define DEVLINK_PRESTERA_TRAP_NAME_ACL_CODE_7 \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-88-\t\"acl_code_7\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:89:#define DEVLINK_PRESTERA_TRAP_NAME_BGP \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-90-\t\"bgp\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:91:#define DEVLINK_PRESTERA_TRAP_NAME_SSH \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-92-\t\"ssh\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:93:#define DEVLINK_PRESTERA_TRAP_NAME_TELNET \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-94-\t\"telnet\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:95:#define DEVLINK_PRESTERA_TRAP_NAME_ICMP \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-96-\t\"icmp\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:97:#define DEVLINK_PRESTERA_TRAP_NAME_RXDMA_DROP \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-98-\t\"rxdma_drop\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:99:#define DEVLINK_PRESTERA_TRAP_NAME_PORT_NO_VLAN \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-100-\t\"port_no_vlan\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:101:#define DEVLINK_PRESTERA_TRAP_NAME_LOCAL_PORT \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-102-\t\"local_port\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:103:#define DEVLINK_PRESTERA_TRAP_NAME_INVALID_SA \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-104-\t\"invalid_sa\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:105:#define DEVLINK_PRESTERA_TRAP_NAME_ILLEGAL_IP_ADDR \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-106-\t\"illegal_ip_addr\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:107:#define DEVLINK_PRESTERA_TRAP_NAME_ILLEGAL_IPV4_HDR \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-108-\t\"illegal_ipv4_hdr\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:109:#define DEVLINK_PRESTERA_TRAP_NAME_IP_UC_DIP_DA_MISMATCH \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-110-\t\"ip_uc_dip_da_mismatch\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:111:#define DEVLINK_PRESTERA_TRAP_NAME_IP_SIP_IS_ZERO \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-112-\t\"ip_sip_is_zero\"\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:113:#define DEVLINK_PRESTERA_TRAP_NAME_MET_RED \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-114-\t\"met_red\"\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c=126=struct prestera_trap_data {\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-131-\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:132:#define PRESTERA_TRAP_METADATA DEVLINK_TRAP_METADATA_TYPE_F_IN_PORT\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-133-\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:134:#define PRESTERA_TRAP_CONTROL(_id, _group_id, _action)\t\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-135-\tDEVLINK_TRAP_GENERIC(CONTROL, _action, _id,\t\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-136-\t\t\t DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id,\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:137:\t\t\t PRESTERA_TRAP_METADATA)\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-138-\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:139:#define PRESTERA_TRAP_DRIVER_CONTROL(_id, _group_id)\t\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:140:\tDEVLINK_TRAP_DRIVER(CONTROL, TRAP, DEVLINK_PRESTERA_TRAP_ID_##_id, \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:141:\t\t\t DEVLINK_PRESTERA_TRAP_NAME_##_id,\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-142-\t\t\t DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id,\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:143:\t\t\t PRESTERA_TRAP_METADATA)\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-144-\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:145:#define PRESTERA_TRAP_EXCEPTION(_id, _group_id)\t\t\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-146-\tDEVLINK_TRAP_GENERIC(EXCEPTION, TRAP, _id,\t\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-147-\t\t\t DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id,\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:148:\t\t\t PRESTERA_TRAP_METADATA)\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-149-\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:150:#define PRESTERA_TRAP_DRIVER_EXCEPTION(_id, _group_id)\t\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:151:\tDEVLINK_TRAP_DRIVER(EXCEPTION, TRAP, DEVLINK_PRESTERA_TRAP_ID_##_id, \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:152:\t\t\t DEVLINK_PRESTERA_TRAP_NAME_##_id,\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-153-\t\t\t DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id,\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:154:\t\t\t PRESTERA_TRAP_METADATA)\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-155-\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:156:#define PRESTERA_TRAP_DRIVER_DROP(_id, _group_id)\t\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:157:\tDEVLINK_TRAP_DRIVER(DROP, DROP, DEVLINK_PRESTERA_TRAP_ID_##_id,\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:158:\t\t\t DEVLINK_PRESTERA_TRAP_NAME_##_id,\t\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-159-\t\t\t DEVLINK_TRAP_GROUP_GENERIC_ID_##_group_id,\t \\\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:160:\t\t\t PRESTERA_TRAP_METADATA)\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-161-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c=183=static struct prestera_trap prestera_trap_items_arr[] = {\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-184-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:185:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(ARP_BC, NEIGH_DISCOVERY),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-186-\t\t.cpu_code = 5,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-188-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:189:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(IS_IS, LOCAL_DELIVERY),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-190-\t\t.cpu_code = 13,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-192-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:193:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(OSPF, OSPF),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-194-\t\t.cpu_code = 16,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-196-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:197:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(IP_BC_MAC, LOCAL_DELIVERY),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-198-\t\t.cpu_code = 19,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-200-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:201:\t\t.trap = PRESTERA_TRAP_CONTROL(STP, STP, TRAP),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-202-\t\t.cpu_code = 26,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-204-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:205:\t\t.trap = PRESTERA_TRAP_CONTROL(LACP, LACP, TRAP),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-206-\t\t.cpu_code = 27,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-208-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:209:\t\t.trap = PRESTERA_TRAP_CONTROL(LLDP, LLDP, TRAP),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-210-\t\t.cpu_code = 28,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-212-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:213:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(ROUTER_MC, LOCAL_DELIVERY),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-214-\t\t.cpu_code = 29,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-216-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:217:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(VRRP, VRRP),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-218-\t\t.cpu_code = 30,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-220-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:221:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(DHCP, DHCP),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-222-\t\t.cpu_code = 33,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-224-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:225:\t\t.trap = PRESTERA_TRAP_EXCEPTION(MTU_ERROR, L3_EXCEPTIONS),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-226-\t\t.cpu_code = 63,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-228-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:229:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(MAC_TO_ME, LOCAL_DELIVERY),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-230-\t\t.cpu_code = 65,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-232-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:233:\t\t.trap = PRESTERA_TRAP_EXCEPTION(TTL_ERROR, L3_EXCEPTIONS),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-234-\t\t.cpu_code = 133,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-236-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:237:\t\t.trap = PRESTERA_TRAP_DRIVER_EXCEPTION(IPV4_OPTIONS,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-238-\t\t\t\t\t\t L3_EXCEPTIONS),\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-241-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:242:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(IP_DEFAULT_ROUTE,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-243-\t\t\t\t\t\t LOCAL_DELIVERY),\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-246-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:247:\t\t.trap = PRESTERA_TRAP_CONTROL(LOCAL_ROUTE, LOCAL_DELIVERY,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-248-\t\t\t\t\t TRAP),\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-251-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:252:\t\t.trap = PRESTERA_TRAP_DRIVER_EXCEPTION(IPV4_ICMP_REDIRECT,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-253-\t\t\t\t\t\t L3_EXCEPTIONS),\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-256-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:257:\t\t.trap = PRESTERA_TRAP_CONTROL(ARP_RESPONSE, NEIGH_DISCOVERY,\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-258-\t\t\t\t\t TRAP),\n--\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-261-\t{\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c:262:\t\t.trap = PRESTERA_TRAP_DRIVER_CONTROL(ACL_CODE_0, ACL_TRAP),\ndrivers/net/ethernet/marvell/prestera/prestera_devlink.c-263-\t\t.cpu_code = 192,\n--\n\n"
} |
| 5/2 | 2026/09/07 07:29 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 19358 output: 41 thoughts: 27 Thoughts: Here's a summary of my immediate thought process, focusing on the files mentioned, assuming I'm deep in embedded systems development and familiar with this codebase: **Reviewing Key Prestera Files** Okay, time to dig in. My initial thought is to dive into `prestera_pci.c`, `prestera_main.c`, and the `Kconfig` file. I immediately understand the implication. `prestera_pci.c` is very likely the interface for the PCI bus interactions, which is essential to the overall operation of the prestera based switch. `prestera_main.c` probably contains the core initialization, control flow, and potentially the main loop or entry point for the Prestera-specific functionality. Given my experience, I expect that main file to manage the core of the ASIC driver. And of course, I need to check `Kconfig`. That's where all the configuration options for the Prestera driver will live. Understanding the available configurations is crucial. I'll need to see what features are enabled, what hardware variants are supported, and any build-time or compile-time options that influence the driver's behavior. The `Kconfig` will provide the knobs that I need to tweak for a given deployment or to test a particular area. I’m anticipating dependencies and interactions between these files, so I'll be looking for cross-references between them as I go. |
| 6/2 | 2026/09/07 07:29 | tool | read-file |
0mArgs:{
"File": "drivers/net/ethernet/marvell/prestera/Kconfig",
"FirstLine": 1,
"LineCount": 40
}Results: {
"Contents": " 1:\t# SPDX-License-Identifier: GPL-2.0-only\n 2:\t#\n 3:\t# Marvell Prestera drivers configuration\n 4:\t#\n 5:\t\n 6:\tconfig PRESTERA\n 7:\t\ttristate \"Marvell Prestera Switch ASICs support\"\n 8:\t\tdepends on NET_SWITCHDEV \u0026\u0026 VLAN_8021Q\n 9:\t\tdepends on BRIDGE || BRIDGE=n\n 10:\t\tselect NET_DEVLINK\n 11:\t\tselect PHYLINK\n 12:\t\thelp\n 13:\t\t This driver supports Marvell Prestera Switch ASICs family.\n 14:\t\n 15:\t\t To compile this driver as a module, choose M here: the\n 16:\t\t module will be called prestera.\n 17:\t\n 18:\tconfig PRESTERA_PCI\n 19:\t\ttristate \"PCI interface driver for Marvell Prestera Switch ASICs family\"\n 20:\t\tdepends on PCI \u0026\u0026 HAS_IOMEM \u0026\u0026 PRESTERA\n 21:\t\tdefault PRESTERA\n 22:\t\thelp\n 23:\t\t This is implementation of PCI interface support for Marvell Prestera\n 24:\t\t Switch ASICs family.\n 25:\t\n 26:\t\t To compile this driver as a module, choose M here: the\n 27:\t\t module will be called prestera_pci.\n"
} |
| 7/2 | 2026/09/07 07:29 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 20081 output: 47 thoughts: 31 Thoughts: Here's my take on the thought process: **Diving into the `prestera_pci.c` Code** Alright, I need to get a handle on how this `prestera_pci.c` module is working. My immediate focus is twofold: first, I want to confirm what actual hardware components are being directly bound to this driver. Are we talking about specific PCI devices that it's designed to manage? I need to understand that relationship. Second, and this is crucial for testing and development, I need to see if there's any support for mock devices or virtual device implementations within this file. Does it include any abstractions that would allow me to simulate the hardware environment for testing purposes, or are we tightly coupled with the physical hardware? The answers here will guide my next steps in understanding the driver's flexibility and potential for independent analysis. Let's see what the code reveals. |
| 8/2 | 2026/09/07 07:29 | tool | read-file |
0mArgs:{
"File": "drivers/net/ethernet/marvell/prestera/prestera_pci.c",
"FirstLine": 1,
"LineCount": 100
}Results: {
"Contents": " 1:\t// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0\n 2:\t/* Copyright (c) 2019-2020 Marvell International Ltd. All rights reserved */\n 3:\t\n 4:\t#include \u003clinux/bitfield.h\u003e\n 5:\t#include \u003clinux/circ_buf.h\u003e\n 6:\t#include \u003clinux/device.h\u003e\n 7:\t#include \u003clinux/firmware.h\u003e\n 8:\t#include \u003clinux/iopoll.h\u003e\n 9:\t#include \u003clinux/kernel.h\u003e\n 10:\t#include \u003clinux/module.h\u003e\n 11:\t#include \u003clinux/pci.h\u003e\n 12:\t\n 13:\t#include \"prestera.h\"\n 14:\t\n 15:\t#define PRESTERA_MSG_MAX_SIZE 1500\n 16:\t\n 17:\t#define PRESTERA_SUPP_FW_MAJ_VER\t4\n 18:\t#define PRESTERA_SUPP_FW_MIN_VER\t1\n 19:\t\n 20:\t#define PRESTERA_PREV_FW_MAJ_VER\t4\n 21:\t#define PRESTERA_PREV_FW_MIN_VER\t0\n 22:\t\n 23:\t#define PRESTERA_FW_PATH_FMT\t\"mrvl/prestera/mvsw_prestera_fw-v%u.%u.img\"\n 24:\t#define PRESTERA_FW_ARM64_PATH_FMT \"mrvl/prestera/mvsw_prestera_fw_arm64-v%u.%u.img\"\n 25:\t\n 26:\t#define PRESTERA_FW_HDR_MAGIC\t\t0x351D9D06\n 27:\t#define PRESTERA_FW_DL_TIMEOUT_MS\t50000\n 28:\t#define PRESTERA_FW_BLK_SZ\t\t1024\n 29:\t\n 30:\t#define PRESTERA_FW_VER_MAJ_MUL 1000000\n 31:\t#define PRESTERA_FW_VER_MIN_MUL 1000\n 32:\t\n 33:\t#define PRESTERA_FW_VER_MAJ(v)\t((v) / PRESTERA_FW_VER_MAJ_MUL)\n 34:\t\n 35:\t#define PRESTERA_FW_VER_MIN(v) \\\n 36:\t\t(((v) - (PRESTERA_FW_VER_MAJ(v) * PRESTERA_FW_VER_MAJ_MUL)) / \\\n 37:\t\t\t\tPRESTERA_FW_VER_MIN_MUL)\n 38:\t\n 39:\t#define PRESTERA_FW_VER_PATCH(v) \\\n 40:\t\t((v) - (PRESTERA_FW_VER_MAJ(v) * PRESTERA_FW_VER_MAJ_MUL) - \\\n 41:\t\t\t\t(PRESTERA_FW_VER_MIN(v) * PRESTERA_FW_VER_MIN_MUL))\n 42:\t\n 43:\tenum prestera_pci_bar_t {\n 44:\t\tPRESTERA_PCI_BAR_FW = 2,\n 45:\t\tPRESTERA_PCI_BAR_PP = 4,\n 46:\t};\n 47:\t\n 48:\tstruct prestera_fw_header {\n 49:\t\t__be32 magic_number;\n 50:\t\t__be32 version_value;\n 51:\t\tu8 reserved[8];\n 52:\t};\n 53:\t\n 54:\tstruct prestera_ldr_regs {\n 55:\t\tu32 ldr_ready;\n 56:\t\tu32 pad1;\n 57:\t\n 58:\t\tu32 ldr_img_size;\n 59:\t\tu32 ldr_ctl_flags;\n 60:\t\n 61:\t\tu32 ldr_buf_offs;\n 62:\t\tu32 ldr_buf_size;\n 63:\t\n 64:\t\tu32 ldr_buf_rd;\n 65:\t\tu32 pad2;\n 66:\t\tu32 ldr_buf_wr;\n 67:\t\n 68:\t\tu32 ldr_status;\n 69:\t};\n 70:\t\n 71:\t#define PRESTERA_LDR_REG_OFFSET(f)\toffsetof(struct prestera_ldr_regs, f)\n 72:\t\n 73:\t#define PRESTERA_LDR_READY_MAGIC\t0xf00dfeed\n 74:\t\n 75:\t#define PRESTERA_LDR_STATUS_IMG_DL\tBIT(0)\n 76:\t#define PRESTERA_LDR_STATUS_START_FW\tBIT(1)\n 77:\t#define PRESTERA_LDR_STATUS_INVALID_IMG\tBIT(2)\n 78:\t#define PRESTERA_LDR_STATUS_NOMEM\tBIT(3)\n 79:\t\n 80:\t#define PRESTERA_LDR_REG_BASE(fw)\t((fw)-\u003eldr_regs)\n 81:\t#define PRESTERA_LDR_REG_ADDR(fw, reg)\t(PRESTERA_LDR_REG_BASE(fw) + (reg))\n 82:\t\n 83:\t/* fw loader registers */\n 84:\t#define PRESTERA_LDR_READY_REG\t\tPRESTERA_LDR_REG_OFFSET(ldr_ready)\n 85:\t#define PRESTERA_LDR_IMG_SIZE_REG\tPRESTERA_LDR_REG_OFFSET(ldr_img_size)\n 86:\t#define PRESTERA_LDR_CTL_REG\t\tPRESTERA_LDR_REG_OFFSET(ldr_ctl_flags)\n 87:\t#define PRESTERA_LDR_BUF_SIZE_REG\tPRESTERA_LDR_REG_OFFSET(ldr_buf_size)\n 88:\t#define PRESTERA_LDR_BUF_OFFS_REG\tPRESTERA_LDR_REG_OFFSET(ldr_buf_offs)\n 89:\t#define PRESTERA_LDR_BUF_RD_REG\t\tPRESTERA_LDR_REG_OFFSET(ldr_buf_rd)\n 90:\t#define PRESTERA_LDR_BUF_WR_REG\t\tPRESTERA_LDR_REG_OFFSET(ldr_buf_wr)\n 91:\t#define PRESTERA_LDR_STATUS_REG\t\tPRESTERA_LDR_REG_OFFSET(ldr_status)\n 92:\t\n 93:\t#define PRESTERA_LDR_CTL_DL_START\tBIT(0)\n 94:\t\n 95:\t#define PRESTERA_EVT_QNUM_MAX\t4\n 96:\t\n 97:\tstruct prestera_fw_evtq_regs {\n 98:\t\tu32 rd_idx;\n 99:\t\tu32 pad1;\n 100:\t\tu32 wr_idx;\n"
} |
| 9/2 | 2026/09/07 07:29 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 22174 output: 49 thoughts: 27 Thoughts: Here's a summary of my thought process, as requested: **Diving Deeper into `prestera_pci.c`** Okay, time to systematically go through the remaining parts of `prestera_pci.c`. I've already got a good grasp on the architecture, but now I need to solidify my understanding of the driver's specifics. Specifically, I'm focusing on two key areas: the PCI driver device IDs and the `probe` function. The device IDs will define which PCI devices this driver is designed to handle, which is critical. I need to see the range and scope of devices it covers, and if anything seems unusual or could be a potential point of conflict. Then, the `probe` function itself. This is where the rubber meets the road. It's the core of the device initialization and connection to the driver. I need to trace its logic very carefully, paying close attention to resource allocation, device configuration, interrupt setup, and how it handles potential errors. I'll be looking for any potential race conditions, resource leaks, or inefficient methods. I'll need to scrutinize how it handles different hardware revisions or potential corner cases. This level of detail is key for anticipating potential issues, and, of course, making sure it follows best practices. |
| 10/2 | 2026/09/07 07:29 | tool | read-file |
0mArgs:{
"File": "drivers/net/ethernet/marvell/prestera/prestera_pci.c",
"FirstLine": 750,
"LineCount": 100
}Results: {
"Contents": " 750:\t\tdev_info(fw-\u003edev.dev, \"Loading %s ...\", fw_path);\n 751:\t\n 752:\t\tfw-\u003erev_supp.maj = ver_maj;\n 753:\t\tfw-\u003erev_supp.min = ver_min;\n 754:\t\tfw-\u003erev_supp.sub = 0;\n 755:\t\n 756:\t\treturn 0;\n 757:\t}\n 758:\t\n 759:\tstatic void prestera_fw_put(struct prestera_fw *fw)\n 760:\t{\n 761:\t\trelease_firmware(fw-\u003ebin);\n 762:\t}\n 763:\t\n 764:\tstatic int prestera_fw_load(struct prestera_fw *fw)\n 765:\t{\n 766:\t\tsize_t hlen = sizeof(struct prestera_fw_header);\n 767:\t\tint err;\n 768:\t\n 769:\t\terr = prestera_ldr_wait_reg32(fw, PRESTERA_LDR_READY_REG,\n 770:\t\t\t\t\t PRESTERA_LDR_READY_MAGIC,\n 771:\t\t\t\t\t 5 * MSEC_PER_SEC);\n 772:\t\tif (err) {\n 773:\t\t\tdev_err(fw-\u003edev.dev, \"waiting for FW loader is timed out\");\n 774:\t\t\treturn err;\n 775:\t\t}\n 776:\t\n 777:\t\tfw-\u003eldr_ring_buf = fw-\u003eldr_regs +\n 778:\t\t\tprestera_ldr_read(fw, PRESTERA_LDR_BUF_OFFS_REG);\n 779:\t\n 780:\t\tfw-\u003eldr_buf_len =\n 781:\t\t\tprestera_ldr_read(fw, PRESTERA_LDR_BUF_SIZE_REG);\n 782:\t\n 783:\t\tfw-\u003eldr_wr_idx = 0;\n 784:\t\n 785:\t\terr = prestera_fw_get(fw);\n 786:\t\tif (err)\n 787:\t\t\treturn err;\n 788:\t\n 789:\t\terr = prestera_fw_hdr_parse(fw);\n 790:\t\tif (err) {\n 791:\t\t\tdev_err(fw-\u003edev.dev, \"FW image header is invalid\\n\");\n 792:\t\t\tgoto out_release;\n 793:\t\t}\n 794:\t\n 795:\t\tprestera_ldr_write(fw, PRESTERA_LDR_IMG_SIZE_REG, fw-\u003ebin-\u003esize - hlen);\n 796:\t\tprestera_ldr_write(fw, PRESTERA_LDR_CTL_REG, PRESTERA_LDR_CTL_DL_START);\n 797:\t\n 798:\t\terr = prestera_ldr_fw_send(fw, fw-\u003ebin-\u003edata + hlen,\n 799:\t\t\t\t\t fw-\u003ebin-\u003esize - hlen);\n 800:\t\n 801:\tout_release:\n 802:\t\tprestera_fw_put(fw);\n 803:\t\treturn err;\n 804:\t}\n 805:\t\n 806:\tstatic bool prestera_pci_pp_use_bar2(struct pci_dev *pdev)\n 807:\t{\n 808:\t\tswitch (pdev-\u003edevice) {\n 809:\t\tcase PRESTERA_DEV_ID_98DX7312M:\n 810:\t\tcase PRESTERA_DEV_ID_98DX3500:\n 811:\t\tcase PRESTERA_DEV_ID_98DX3501:\n 812:\t\tcase PRESTERA_DEV_ID_98DX3510:\n 813:\t\tcase PRESTERA_DEV_ID_98DX3520:\n 814:\t\t\treturn true;\n 815:\t\n 816:\t\tdefault:\n 817:\t\t\treturn false;\n 818:\t\t}\n 819:\t}\n 820:\t\n 821:\tstatic u32 prestera_pci_pp_bar2_offs(struct pci_dev *pdev)\n 822:\t{\n 823:\t\tif (pci_resource_len(pdev, 2) == 0x1000000)\n 824:\t\t\treturn 0x0;\n 825:\t\telse\n 826:\t\t\treturn (pci_resource_len(pdev, 2) / 2);\n 827:\t}\n 828:\t\n 829:\tstatic u32 prestera_pci_fw_bar2_offs(struct pci_dev *pdev)\n 830:\t{\n 831:\t\tif (pci_resource_len(pdev, 2) == 0x1000000)\n 832:\t\t\treturn 0x400000;\n 833:\t\telse\n 834:\t\t\treturn 0x0;\n 835:\t}\n 836:\t\n 837:\tstatic int prestera_pci_probe(struct pci_dev *pdev,\n 838:\t\t\t\t const struct pci_device_id *id)\n 839:\t{\n 840:\t\tconst char *driver_name = dev_driver_string(\u0026pdev-\u003edev);\n 841:\t\tu8 __iomem *mem_addr, *pp_addr = NULL;\n 842:\t\tstruct prestera_fw *fw;\n 843:\t\tint err;\n 844:\t\n 845:\t\terr = pcim_enable_device(pdev);\n 846:\t\tif (err) {\n 847:\t\t\tdev_err(\u0026pdev-\u003edev, \"pci_enable_device failed\\n\");\n 848:\t\t\tgoto err_pci_enable_device;\n 849:\t\t}\n"
} |
| 11/2 | 2026/09/07 07:29 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 24095 output: 48 thoughts: 23 Thoughts: Here's my thought process, as if I were reviewing `prestera_pci.c`: **Diving into the PCI Device Table in prestera_pci.c** Alright, time to dig deeper into this `prestera_pci.c` file. I need to get a clear picture of how the PCI devices are handled. Specifically, I'm going to focus on where the PCI device table is defined and populated. Understanding this table is absolutely crucial to grasping how the driver interacts with the hardware. I want to see how the system identifies and configures these Prestera-specific devices on the PCI bus. Let's see how the rest of this code lays things out. Hopefully, it's well-commented and easy to navigate! |
| 12/2 | 2026/09/07 07:29 | tool | read-file |
0mArgs:{
"File": "drivers/net/ethernet/marvell/prestera/prestera_pci.c",
"FirstLine": 910,
"LineCount": 60
}Results: {
"Contents": " 910:\t\tINIT_WORK(\u0026fw-\u003eevt_work, prestera_fw_evt_work_fn);\n 911:\t\n 912:\t\terr = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSI);\n 913:\t\tif (err \u003c 0) {\n 914:\t\t\tdev_err(\u0026pdev-\u003edev, \"MSI IRQ init failed\\n\");\n 915:\t\t\tgoto err_irq_alloc;\n 916:\t\t}\n 917:\t\n 918:\t\terr = request_irq(pci_irq_vector(pdev, 0), prestera_pci_irq_handler,\n 919:\t\t\t\t 0, driver_name, fw);\n 920:\t\tif (err) {\n 921:\t\t\tdev_err(\u0026pdev-\u003edev, \"fail to request IRQ\\n\");\n 922:\t\t\tgoto err_request_irq;\n 923:\t\t}\n 924:\t\n 925:\t\terr = prestera_device_register(\u0026fw-\u003edev);\n 926:\t\tif (err)\n 927:\t\t\tgoto err_prestera_dev_register;\n 928:\t\n 929:\t\treturn 0;\n 930:\t\n 931:\terr_prestera_dev_register:\n 932:\t\tfree_irq(pci_irq_vector(pdev, 0), fw);\n 933:\terr_request_irq:\n 934:\t\tpci_free_irq_vectors(pdev);\n 935:\terr_irq_alloc:\n 936:\t\tdestroy_workqueue(fw-\u003ewq);\n 937:\terr_wq_alloc:\n 938:\t\tprestera_fw_uninit(fw);\n 939:\terr_prestera_fw_init:\n 940:\terr_pci_dev_alloc:\n 941:\terr_pp_ioremap:\n 942:\terr_mem_ioremap:\n 943:\terr_dma_mask:\n 944:\terr_pci_request_regions:\n 945:\terr_pci_enable_device:\n 946:\t\treturn err;\n 947:\t}\n 948:\t\n 949:\tstatic void prestera_pci_remove(struct pci_dev *pdev)\n 950:\t{\n 951:\t\tstruct prestera_fw *fw = pci_get_drvdata(pdev);\n 952:\t\n 953:\t\tprestera_device_unregister(\u0026fw-\u003edev);\n 954:\t\tfree_irq(pci_irq_vector(pdev, 0), fw);\n 955:\t\tpci_free_irq_vectors(pdev);\n 956:\t\tdestroy_workqueue(fw-\u003ewq);\n 957:\t\tprestera_fw_uninit(fw);\n 958:\t}\n 959:\t\n 960:\tstatic const struct pci_device_id prestera_pci_devices[] = {\n 961:\t\t{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_AC3X_98DX_55) },\n 962:\t\t{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_AC3X_98DX_65) },\n 963:\t\t{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_ALDRIN2) },\n 964:\t\t{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_98DX7312M) },\n 965:\t\t{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_98DX3500) },\n 966:\t\t{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_98DX3501) },\n 967:\t\t{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_98DX3510) },\n 968:\t\t{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_98DX3520) },\n 969:\t\t{ }\n"
} |
| 13/2 | 2026/09/07 07:29 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 25476 output: 30 thoughts: 198 Thoughts: **My Assessment of the "WorthFuzzing" Criteria** Okay, let's see, the instructions in Section 2 regarding when *not* to fuzz are clear. We're looking at "NEGATIVE CRITERIA," specifically when we should return `WorthFuzzing=false`. The relevant condition here is "Structurally unreachable hardware." It specifies vendor-specific drivers for things like PCIe switches, SmartNICs, and GPUs, that require specialized physical hardware (ASIC/PCIe cards) that *aren't* emulated in standard QEMU. Now, I know the Marvell Prestera switch ASICs family, like the Aldrin2 and 98DX* series, and AC3X, falls squarely into that category. It’s a vendor-specific switch ASIC driver, meaning it absolutely requires specific hardware (the physical ASICs and PCIe cards) and its firmware to function properly. We can't readily simulate or emulate this environment using standard QEMU or in a tool like syzkaller. Therefore, this fits the "structurally unreachable hardware" criteria perfectly. Given that, I need to make sure there aren't any other related files or modules that might complicate the decision, but my initial assessment is that this is definitely not fuzzable in our current setup. |
| 14/2 | 2026/09/07 07:29 | tool | codesearch-dir-index |
0mArgs:{
"Dir": "drivers/net/ethernet/marvell/prestera"
}Results: {
"Files": [
"prestera.h",
"prestera_acl.c",
"prestera_acl.h",
"prestera_counter.c",
"prestera_counter.h",
"prestera_devlink.c",
"prestera_devlink.h",
"prestera_dsa.c",
"prestera_dsa.h",
"prestera_ethtool.c",
"prestera_ethtool.h",
"prestera_flow.c",
"prestera_flow.h",
"prestera_flower.c",
"prestera_flower.h",
"prestera_hw.c",
"prestera_hw.h",
"prestera_main.c",
"prestera_matchall.c",
"prestera_matchall.h",
"prestera_pci.c",
"prestera_router.c",
"prestera_router_hw.c",
"prestera_router_hw.h",
"prestera_rxtx.c",
"prestera_rxtx.h",
"prestera_span.c",
"prestera_span.h",
"prestera_switchdev.c",
"prestera_switchdev.h"
],
"Subdirs": null
} |
| 15/2 | 2026/09/07 07:29 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 26276 output: 48 thoughts: 57 Thoughts: Here's my summary, as if I were thinking these thoughts: **Analyzing the Hardware Counter Function** Okay, so I need to get a handle on this `prestera_hw_counters_get` function. Specifically, it seems it's been modified recently. Right, I remember that `prestera_hw_counters_get` is in `drivers/net/ethernet/marvell/prestera/prestera_hw.c`. Time to dive into the code. Let's get that file open and read through that specific function in `prestera_hw.c`. I need to understand what's been changed and how it impacts the overall flow. Let's see... |
| 16/2 | 2026/09/07 07:29 | tool | read-file |
0mArgs:{
"File": "drivers/net/ethernet/marvell/prestera/prestera_hw.c",
"FirstLine": 2310,
"LineCount": 40
}Results: {
"Contents": "2310:\t\tstruct prestera_msg_counter_resp *resp;\n2311:\t\tstruct prestera_msg_counter_req req = {\n2312:\t\t\t.block_id = __cpu_to_le32(idx),\n2313:\t\t\t.num_counters = __cpu_to_le32(*len),\n2314:\t\t};\n2315:\t\tsize_t size = struct_size(resp, stats, *len);\n2316:\t\tint err, i;\n2317:\t\n2318:\t\tresp = kmalloc(size, GFP_KERNEL);\n2319:\t\tif (!resp)\n2320:\t\t\treturn -ENOMEM;\n2321:\t\n2322:\t\terr = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_COUNTER_GET,\n2323:\t\t\t\t \u0026req.cmd, sizeof(req), \u0026resp-\u003eret, size);\n2324:\t\tif (err)\n2325:\t\t\tgoto free_buff;\n2326:\t\n2327:\t\tif (__le32_to_cpu(resp-\u003enum_counters) \u003e *len) {\n2328:\t\t\terr = -EINVAL;\n2329:\t\t\tgoto free_buff;\n2330:\t\t}\n2331:\t\n2332:\t\tfor (i = 0; i \u003c __le32_to_cpu(resp-\u003enum_counters); i++) {\n2333:\t\t\tstats[i].packets += __le64_to_cpu(resp-\u003estats[i].packets);\n2334:\t\t\tstats[i].bytes += __le64_to_cpu(resp-\u003estats[i].bytes);\n2335:\t\t}\n2336:\t\n2337:\t\t*len = __le32_to_cpu(resp-\u003enum_counters);\n2338:\t\t*done = __le32_to_cpu(resp-\u003edone);\n2339:\t\n2340:\tfree_buff:\n2341:\t\tkfree(resp);\n2342:\t\treturn err;\n2343:\t}\n2344:\t\n2345:\tint prestera_hw_counter_block_get(struct prestera_switch *sw,\n2346:\t\t\t\t\t u32 client, u32 *block_id, u32 *offset,\n2347:\t\t\t\t\t u32 *num_counters)\n2348:\t{\n2349:\t\tstruct prestera_msg_counter_resp resp;\n"
} |
| 17/2 | 2026/09/07 07:29 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 27184 output: 19 thoughts: 36 Thoughts: **Checking for Virtual PRESTERA Network Devices** Okay, let's just make sure I'm not missing anything obvious here. I need to quickly determine if there's any existing virtual or mock network device support within the kernel tree specifically for Prestera. I vaguely recall something, but memory isn't always reliable. The most logical first step is to perform a targeted search. I'll focus my query within the `drivers/net` directory, because that's where all the network-related drivers live. A simple keyword search for "PRESTERA" should yield the relevant results - fingers crossed. Hopefully, it'll turn up something I can work with. Time to see what the kernel reveals! |
| 18/2 | 2026/09/07 07:29 | tool | grepper |
0mArgs:{
"Expression": "CONFIG_PRESTERA"
}Results: {
"Output": "drivers/net/ethernet/marvell/prestera/Makefile-1-# SPDX-License-Identifier: GPL-2.0\ndrivers/net/ethernet/marvell/prestera/Makefile:2:obj-$(CONFIG_PRESTERA)\t+= prestera.o\ndrivers/net/ethernet/marvell/prestera/Makefile-3-prestera-objs\t\t:= prestera_main.o prestera_hw.o prestera_dsa.o \\\n--\ndrivers/net/ethernet/marvell/prestera/Makefile-8-\ndrivers/net/ethernet/marvell/prestera/Makefile:9:obj-$(CONFIG_PRESTERA_PCI)\t+= prestera_pci.o\n"
} |
| 19/2 | 2026/09/07 07:29 | llm | patch-evaluator |
0mModel:gemini-3.7-flash Args: null Results: null Tokens: input: 27563 output: 111 thoughts: 260 Thoughts: **My Assessment: This Code is Unfuzzable** Okay, here's the situation. I've been tasked with assessing if this specific code related to the Marvell Prestera switch driver, `PRESTERA_PCI`, is suitable for fuzzing. After digging in, I've come to the conclusion that it isn't, and here's why. The only interface driver in play here is `PRESTERA_PCI`, which is specifically designed to interact with Marvell Prestera Switch ASICs. It talks to the hardware through PCI BARs and loads a proprietary firmware file, `mvsw_prestera_fw*.img`. The big, glaring problem? This hardware setup isn't emulated in the standard virtualized environments like QEMU or GCE. So, let's break this down systematically. I needed to ensure this wasn't going to have a positive impact on a fuzz. The negative criteria I checked were things like: hardware drivers that need physical ASICs, PCIe cards, SmartNICs, or GPUs (like `mlxsw`, `pds_core`, `qed`, `ionic`, or `amdgpu`). Those are no-gos, and guess what? This driver *absolutely* falls into that category. My conclusion is pretty straightforward: the code in `drivers/net/ethernet/marvell/prestera/prestera_hw.c`, is modifying the Marvell Prestera switch driver. It requires *actual* Marvell Prestera Switch ASIC PCIe hardware and proprietary firmware to function. Because this hardware is not represented in a standard virtual environment, the code I'm looking at is *structurally unreachable* for fuzzing. Thus, I'm setting `WorthFuzzing` to `false`. There are no specific configuration options to enable, and no specific symbols to focus on. The driver is off-limits to fuzzing. Time to call it in. |
| 20/2 | 2026/09/07 07:29 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The modified code is located in the Marvell Prestera switch driver (drivers/net/ethernet/marvell/prestera/prestera_hw.c), which supports Marvell Prestera switch ASICs over PCI. This driver requires specific physical ASIC hardware and firmware not emulated in standard virtualized fuzzing environments (QEMU/GCE), making the modified code structurally unreachable.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The modified code is located in the Marvell Prestera switch driver (drivers/net/ethernet/marvell/prestera/prestera_hw.c), which supports Marvell Prestera switch ASICs over PCI. This driver requires specific physical ASIC hardware and firmware not emulated in standard virtualized fuzzing environments (QEMU/GCE), making the modified code structurally unreachable.",
"WorthFuzzing": false
} |
| 21/1 | 2026/09/07 07:29 | action | If |
0mArgs:{
"WorthFuzzing": false
}Results: null |
| Total Calls | Total Tokens | Avg Tokens | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|
| Total Calls | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|