| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/06/20 10:18 | flow | patch-triage |
1mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies the Marvell Prestera Switch ASIC driver (prestera). This driver requires specific hardware (PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_AC3X_98DX_55) which is not emulated in virtualized environments like QEMU or GCE. Therefore, the modified code paths are unreachable during fuzzing.",
"WorthFuzzing": false
} |
| 1/1 | 2026/06/20 10:18 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit 39c6ea26f1bb613a3876b89eb180cdfa4f143e67\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Sat Jun 20 10:18:33 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/drivers/net/ethernet/marvell/prestera/prestera_dsa.c b/drivers/net/ethernet/marvell/prestera/prestera_dsa.c\nindex b7e89c0ca5c0d9..276f98cbd50ea7 100644\n--- a/drivers/net/ethernet/marvell/prestera/prestera_dsa.c\n+++ b/drivers/net/ethernet/marvell/prestera/prestera_dsa.c\n@@ -4,6 +4,7 @@\n #include \u003clinux/bitfield.h\u003e\n #include \u003clinux/bitops.h\u003e\n #include \u003clinux/errno.h\u003e\n+#include \u003clinux/unaligned.h\u003e\n #include \u003clinux/string.h\u003e\n \n #include \"prestera_dsa.h\"\n@@ -33,15 +34,14 @@\n \n int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf)\n {\n-\t__be32 *dsa_words = (__be32 *)dsa_buf;\n \tenum prestera_dsa_cmd cmd;\n \tu32 words[4];\n \tu32 field;\n \n-\twords[0] = ntohl(dsa_words[0]);\n-\twords[1] = ntohl(dsa_words[1]);\n-\twords[2] = ntohl(dsa_words[2]);\n-\twords[3] = ntohl(dsa_words[3]);\n+\twords[0] = get_unaligned_be32(dsa_buf);\n+\twords[1] = get_unaligned_be32(dsa_buf + 4);\n+\twords[2] = get_unaligned_be32(dsa_buf + 8);\n+\twords[3] = get_unaligned_be32(dsa_buf + 12);\n \n \t/* set the common parameters */\n \tcmd = (enum prestera_dsa_cmd)FIELD_GET(PRESTERA_DSA_W0_CMD, words[0]);\n@@ -82,7 +82,6 @@ int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf)\n \n int prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf)\n {\n-\t__be32 *dsa_words = (__be32 *)dsa_buf;\n \tu32 dev_num = dsa-\u003ehw_dev_num;\n \tu32 words[4] = { 0 };\n \n@@ -98,10 +97,10 @@ int prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf)\n \twords[1] |= FIELD_PREP(PRESTERA_DSA_W1_EXT_BIT, 1);\n \twords[2] |= FIELD_PREP(PRESTERA_DSA_W2_EXT_BIT, 1);\n \n-\tdsa_words[0] = htonl(words[0]);\n-\tdsa_words[1] = htonl(words[1]);\n-\tdsa_words[2] = htonl(words[2]);\n-\tdsa_words[3] = htonl(words[3]);\n+\tput_unaligned_be32(words[0], dsa_buf);\n+\tput_unaligned_be32(words[1], dsa_buf + 4);\n+\tput_unaligned_be32(words[2], dsa_buf + 8);\n+\tput_unaligned_be32(words[3], dsa_buf + 12);\n \n \treturn 0;\n }\n"
} |
| 2/1 | 2026/06/20 10:18 | agent | patch-evaluator |
1mModel:gemini-3.1-pro-preview Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies the Marvell Prestera Switch ASIC driver (prestera). This driver requires specific hardware (PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_AC3X_98DX_55) which is not emulated in virtualized environments like QEMU or GCE. Therefore, the modified code paths are unreachable 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). 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. 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. Do not list too generic configs (we already have them enabled). Only list those that specifically cover the modified code. 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 39c6ea26f1bb613a3876b89eb180cdfa4f143e67
Author: syz-cluster <triage@syzkaller.com>
Date: Sat Jun 20 10:18:33 2026 +0000
syz-cluster: applied patch under review
diff --git a/drivers/net/ethernet/marvell/prestera/prestera_dsa.c b/drivers/net/ethernet/marvell/prestera/prestera_dsa.c
index b7e89c0ca5c0d9..276f98cbd50ea7 100644
--- a/drivers/net/ethernet/marvell/prestera/prestera_dsa.c
+++ b/drivers/net/ethernet/marvell/prestera/prestera_dsa.c
@@ -4,6 +4,7 @@
#include <linux/bitfield.h>
#include <linux/bitops.h>
#include <linux/errno.h>
+#include <linux/unaligned.h>
#include <linux/string.h>
#include "prestera_dsa.h"
@@ -33,15 +34,14 @@
int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf)
{
- __be32 *dsa_words = (__be32 *)dsa_buf;
enum prestera_dsa_cmd cmd;
u32 words[4];
u32 field;
- words[0] = ntohl(dsa_words[0]);
- words[1] = ntohl(dsa_words[1]);
- words[2] = ntohl(dsa_words[2]);
- words[3] = ntohl(dsa_words[3]);
+ words[0] = get_unaligned_be32(dsa_buf);
+ words[1] = get_unaligned_be32(dsa_buf + 4);
+ words[2] = get_unaligned_be32(dsa_buf + 8);
+ words[3] = get_unaligned_be32(dsa_buf + 12);
/* set the common parameters */
cmd = (enum prestera_dsa_cmd)FIELD_GET(PRESTERA_DSA_W0_CMD, words[0]);
@@ -82,7 +82,6 @@ int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf)
int prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf)
{
- __be32 *dsa_words = (__be32 *)dsa_buf;
u32 dev_num = dsa->hw_dev_num;
u32 words[4] = { 0 };
@@ -98,10 +97,10 @@ int prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf)
words[1] |= FIELD_PREP(PRESTERA_DSA_W1_EXT_BIT, 1);
words[2] |= FIELD_PREP(PRESTERA_DSA_W2_EXT_BIT, 1);
- dsa_words[0] = htonl(words[0]);
- dsa_words[1] = htonl(words[1]);
- dsa_words[2] = htonl(words[2]);
- dsa_words[3] = htonl(words[3]);
+ put_unaligned_be32(words[0], dsa_buf);
+ put_unaligned_be32(words[1], dsa_buf + 4);
+ put_unaligned_be32(words[2], dsa_buf + 8);
+ put_unaligned_be32(words[3], dsa_buf + 12);
return 0;
}
|
| 3/2 | 2026/06/20 10:18 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 2559 output: 35 thoughts: 181 Thoughts: **Analyzing a Prestera Driver Patch** Okay, so I've got this patch that touches `drivers/net/ethernet/marvell/prestera/prestera_dsa.c`. Seems straightforward enough; it's replacing some direct pointer casting and `ntohl`/`htonl` with `get_unaligned_be32` and `put_unaligned_be32`. Sounds like a fix for an unaligned memory access issue, which is good. Prevents potential crashes or data corruption. The driver in question is `prestera`, which I know is the Marvell Prestera Switch ASICs Linux Network Driver. Now comes the real question: can I effectively test this thing in a virtualized environment? Switch ASIC drivers are usually a pain to fuzz, as they often require specific hardware. QEMU generally isn’t going to cut it unless there's a hardware emulator or it’s acting on a more generic subsystem. I need to figure out if `prestera` is an exception. Can it be fuzzed in a virtual setting? Let's see… do I have any options here? Is there some virtual device that emulates the Prestera hardware? I need to search the kernel tree, and see if there are any virtual implementations or configuration options that could facilitate this. Let’s see what shows up. |
| 4/2 | 2026/06/20 10:18 | tool | grepper |
0mArgs:{
"Expression": "prestera",
"PathPrefix": "drivers/net/ethernet/marvell/prestera/"
}Results: {
"Output": "\nFull output is too long, showing 500 out of 8838 lines.\nUse more precise expression if possible.\n\ndrivers/net/ethernet/marvell/prestera/Kconfig=6=config PRESTERA\n--\ndrivers/net/ethernet/marvell/prestera/Kconfig-15-\t To compile this driver as a module, choose M here: the\ndrivers/net/ethernet/marvell/prestera/Kconfig:16:\t module will be called prestera.\ndrivers/net/ethernet/marvell/prestera/Kconfig-17-\ndrivers/net/ethernet/marvell/prestera/Kconfig=18=config PRESTERA_PCI\n--\ndrivers/net/ethernet/marvell/prestera/Kconfig-26-\t To compile this driver as a module, choose M here: the\ndrivers/net/ethernet/marvell/prestera/Kconfig:27:\t module will be called prestera_pci.\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 \\\ndrivers/net/ethernet/marvell/prestera/Makefile:4:\t\t\t prestera_rxtx.o prestera_devlink.o prestera_ethtool.o \\\ndrivers/net/ethernet/marvell/prestera/Makefile:5:\t\t\t prestera_switchdev.o prestera_acl.o prestera_flow.o \\\ndrivers/net/ethernet/marvell/prestera/Makefile:6:\t\t\t prestera_flower.o prestera_span.o prestera_counter.o \\\ndrivers/net/ethernet/marvell/prestera/Makefile:7:\t\t\t prestera_router.o prestera_router_hw.o prestera_matchall.o\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-13-\ndrivers/net/ethernet/marvell/prestera/prestera.h:14:#define PRESTERA_DRV_NAME\t\"prestera\"\ndrivers/net/ethernet/marvell/prestera/prestera.h-15-\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-17-\ndrivers/net/ethernet/marvell/prestera/prestera.h:18:struct prestera_fw_rev {\ndrivers/net/ethernet/marvell/prestera/prestera.h-19-\tu16 maj;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-23-\ndrivers/net/ethernet/marvell/prestera/prestera.h:24:struct prestera_flood_domain {\ndrivers/net/ethernet/marvell/prestera/prestera.h:25:\tstruct prestera_switch *sw;\ndrivers/net/ethernet/marvell/prestera/prestera.h-26-\tstruct list_head flood_domain_port_list;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-29-\ndrivers/net/ethernet/marvell/prestera/prestera.h:30:struct prestera_mdb_entry {\ndrivers/net/ethernet/marvell/prestera/prestera.h:31:\tstruct prestera_switch *sw;\ndrivers/net/ethernet/marvell/prestera/prestera.h:32:\tstruct prestera_flood_domain *flood_domain;\ndrivers/net/ethernet/marvell/prestera/prestera.h-33-\tunsigned char addr[ETH_ALEN];\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-36-\ndrivers/net/ethernet/marvell/prestera/prestera.h:37:struct prestera_flood_domain_port {\ndrivers/net/ethernet/marvell/prestera/prestera.h:38:\tstruct prestera_flood_domain *flood_domain;\ndrivers/net/ethernet/marvell/prestera/prestera.h-39-\tstruct net_device *dev;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-43-\ndrivers/net/ethernet/marvell/prestera/prestera.h:44:struct prestera_port_stats {\ndrivers/net/ethernet/marvell/prestera/prestera.h-45-\tu64 good_octets_received;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-78-\ndrivers/net/ethernet/marvell/prestera/prestera.h:79:struct prestera_port_caps {\ndrivers/net/ethernet/marvell/prestera/prestera.h-80-\tu64 supp_link_modes;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-85-\ndrivers/net/ethernet/marvell/prestera/prestera.h:86:struct prestera_lag {\ndrivers/net/ethernet/marvell/prestera/prestera.h-87-\tstruct net_device *dev;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-92-\ndrivers/net/ethernet/marvell/prestera/prestera.h:93:struct prestera_flow_block;\ndrivers/net/ethernet/marvell/prestera/prestera.h-94-\ndrivers/net/ethernet/marvell/prestera/prestera.h:95:struct prestera_port_mac_state {\ndrivers/net/ethernet/marvell/prestera/prestera.h-96-\tbool valid;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-104-\ndrivers/net/ethernet/marvell/prestera/prestera.h:105:struct prestera_port_phy_state {\ndrivers/net/ethernet/marvell/prestera/prestera.h-106-\tu64 lmode_bmap;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-113-\ndrivers/net/ethernet/marvell/prestera/prestera.h:114:struct prestera_port_mac_config {\ndrivers/net/ethernet/marvell/prestera/prestera.h-115-\tu32 mode;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-122-\ndrivers/net/ethernet/marvell/prestera/prestera.h:123:struct prestera_port_phy_config {\ndrivers/net/ethernet/marvell/prestera/prestera.h-124-\tu32 mode;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-128-\ndrivers/net/ethernet/marvell/prestera/prestera.h:129:struct prestera_port {\ndrivers/net/ethernet/marvell/prestera/prestera.h-130-\tstruct net_device *dev;\ndrivers/net/ethernet/marvell/prestera/prestera.h:131:\tstruct prestera_switch *sw;\ndrivers/net/ethernet/marvell/prestera/prestera.h:132:\tstruct prestera_flow_block *ingress_flow_block;\ndrivers/net/ethernet/marvell/prestera/prestera.h:133:\tstruct prestera_flow_block *egress_flow_block;\ndrivers/net/ethernet/marvell/prestera/prestera.h-134-\tstruct devlink_port dl_port;\ndrivers/net/ethernet/marvell/prestera/prestera.h-135-\tstruct list_head lag_member;\ndrivers/net/ethernet/marvell/prestera/prestera.h:136:\tstruct prestera_lag *lag;\ndrivers/net/ethernet/marvell/prestera/prestera.h-137-\tu32 id;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-144-\tu8 adver_fec;\ndrivers/net/ethernet/marvell/prestera/prestera.h:145:\tstruct prestera_port_caps caps;\ndrivers/net/ethernet/marvell/prestera/prestera.h-146-\tstruct list_head list;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-148-\tstruct {\ndrivers/net/ethernet/marvell/prestera/prestera.h:149:\t\tstruct prestera_port_stats stats;\ndrivers/net/ethernet/marvell/prestera/prestera.h-150-\t\tstruct delayed_work caching_dw;\ndrivers/net/ethernet/marvell/prestera/prestera.h-151-\t} cached_hw_stats;\ndrivers/net/ethernet/marvell/prestera/prestera.h:152:\tstruct prestera_port_mac_config cfg_mac;\ndrivers/net/ethernet/marvell/prestera/prestera.h:153:\tstruct prestera_port_phy_config cfg_phy;\ndrivers/net/ethernet/marvell/prestera/prestera.h:154:\tstruct prestera_port_mac_state state_mac;\ndrivers/net/ethernet/marvell/prestera/prestera.h:155:\tstruct prestera_port_phy_state state_phy;\ndrivers/net/ethernet/marvell/prestera/prestera.h-156-\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-164-\ndrivers/net/ethernet/marvell/prestera/prestera.h:165:struct prestera_device {\ndrivers/net/ethernet/marvell/prestera/prestera.h-166-\tstruct device *dev;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-168-\tu8 __iomem *pp_regs;\ndrivers/net/ethernet/marvell/prestera/prestera.h:169:\tstruct prestera_fw_rev fw_rev;\ndrivers/net/ethernet/marvell/prestera/prestera.h-170-\tvoid *priv;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-172-\t/* called by device driver to handle received packets */\ndrivers/net/ethernet/marvell/prestera/prestera.h:173:\tvoid (*recv_pkt)(struct prestera_device *dev);\ndrivers/net/ethernet/marvell/prestera/prestera.h-174-\ndrivers/net/ethernet/marvell/prestera/prestera.h-175-\t/* called by device driver to pass event up to the higher layer */\ndrivers/net/ethernet/marvell/prestera/prestera.h:176:\tint (*recv_msg)(struct prestera_device *dev, void *msg, size_t size);\ndrivers/net/ethernet/marvell/prestera/prestera.h-177-\ndrivers/net/ethernet/marvell/prestera/prestera.h-178-\t/* called by higher layer to send request to the firmware */\ndrivers/net/ethernet/marvell/prestera/prestera.h:179:\tint (*send_req)(struct prestera_device *dev, int qid, void *in_msg,\ndrivers/net/ethernet/marvell/prestera/prestera.h-180-\t\t\tsize_t in_size, void *out_msg, size_t out_size,\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-183-\ndrivers/net/ethernet/marvell/prestera/prestera.h:184:enum prestera_event_type {\ndrivers/net/ethernet/marvell/prestera/prestera.h-185-\tPRESTERA_EVENT_TYPE_UNSPEC,\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-193-\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,\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-198-\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,\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-203-\ndrivers/net/ethernet/marvell/prestera/prestera.h:204:struct prestera_port_event {\ndrivers/net/ethernet/marvell/prestera/prestera.h-205-\tu32 port_id;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-225-\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,\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-231-\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,\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-237-\ndrivers/net/ethernet/marvell/prestera/prestera.h:238:struct prestera_fdb_event {\ndrivers/net/ethernet/marvell/prestera/prestera.h:239:\tenum prestera_fdb_entry_type type;\ndrivers/net/ethernet/marvell/prestera/prestera.h-240-\tunion {\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-249-\ndrivers/net/ethernet/marvell/prestera/prestera.h:250:struct prestera_event {\ndrivers/net/ethernet/marvell/prestera/prestera.h-251-\tu16 id;\ndrivers/net/ethernet/marvell/prestera/prestera.h-252-\tunion {\ndrivers/net/ethernet/marvell/prestera/prestera.h:253:\t\tstruct prestera_port_event port_evt;\ndrivers/net/ethernet/marvell/prestera/prestera.h:254:\t\tstruct prestera_fdb_event fdb_evt;\ndrivers/net/ethernet/marvell/prestera/prestera.h-255-\t};\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-257-\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) */\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-268-\ndrivers/net/ethernet/marvell/prestera/prestera.h:269:struct prestera_iface {\ndrivers/net/ethernet/marvell/prestera/prestera.h:270:\tenum prestera_if_type type;\ndrivers/net/ethernet/marvell/prestera/prestera.h-271-\tstruct {\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-280-\ndrivers/net/ethernet/marvell/prestera/prestera.h:281:struct prestera_switchdev;\ndrivers/net/ethernet/marvell/prestera/prestera.h:282:struct prestera_span;\ndrivers/net/ethernet/marvell/prestera/prestera.h:283:struct prestera_rxtx;\ndrivers/net/ethernet/marvell/prestera/prestera.h:284:struct prestera_trap_data;\ndrivers/net/ethernet/marvell/prestera/prestera.h:285:struct prestera_acl;\ndrivers/net/ethernet/marvell/prestera/prestera.h-286-\ndrivers/net/ethernet/marvell/prestera/prestera.h:287:struct prestera_switch {\ndrivers/net/ethernet/marvell/prestera/prestera.h:288:\tstruct prestera_device *dev;\ndrivers/net/ethernet/marvell/prestera/prestera.h:289:\tstruct prestera_switchdev *swdev;\ndrivers/net/ethernet/marvell/prestera/prestera.h:290:\tstruct prestera_rxtx *rxtx;\ndrivers/net/ethernet/marvell/prestera/prestera.h:291:\tstruct prestera_acl *acl;\ndrivers/net/ethernet/marvell/prestera/prestera.h:292:\tstruct prestera_span *span;\ndrivers/net/ethernet/marvell/prestera/prestera.h-293-\tstruct list_head event_handlers;\ndrivers/net/ethernet/marvell/prestera/prestera.h-294-\tstruct notifier_block netdev_nb;\ndrivers/net/ethernet/marvell/prestera/prestera.h:295:\tstruct prestera_trap_data *trap_data;\ndrivers/net/ethernet/marvell/prestera/prestera.h-296-\tchar base_mac[ETH_ALEN];\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-303-\tstruct device_node *np;\ndrivers/net/ethernet/marvell/prestera/prestera.h:304:\tstruct prestera_router *router;\ndrivers/net/ethernet/marvell/prestera/prestera.h:305:\tstruct prestera_lag *lags;\ndrivers/net/ethernet/marvell/prestera/prestera.h:306:\tstruct prestera_counter *counter;\ndrivers/net/ethernet/marvell/prestera/prestera.h-307-\tu8 lag_member_max;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-311-\ndrivers/net/ethernet/marvell/prestera/prestera.h:312:struct prestera_router {\ndrivers/net/ethernet/marvell/prestera/prestera.h:313:\tstruct prestera_switch *sw;\ndrivers/net/ethernet/marvell/prestera/prestera.h-314-\tstruct list_head vr_list;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-331-\ndrivers/net/ethernet/marvell/prestera/prestera.h:332:struct prestera_rxtx_params {\ndrivers/net/ethernet/marvell/prestera/prestera.h-333-\tbool use_sdma;\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-336-\ndrivers/net/ethernet/marvell/prestera/prestera.h:337:#define prestera_dev(sw)\t\t((sw)-\u003edev-\u003edev)\ndrivers/net/ethernet/marvell/prestera/prestera.h-338-\ndrivers/net/ethernet/marvell/prestera/prestera.h:339:static inline void prestera_write(const struct prestera_switch *sw,\ndrivers/net/ethernet/marvell/prestera/prestera.h-340-\t\t\t\t unsigned int reg, u32 val)\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-344-\ndrivers/net/ethernet/marvell/prestera/prestera.h:345:static inline u32 prestera_read(const struct prestera_switch *sw,\ndrivers/net/ethernet/marvell/prestera/prestera.h-346-\t\t\t\tunsigned int reg)\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h-350-\ndrivers/net/ethernet/marvell/prestera/prestera.h:351:int prestera_device_register(struct prestera_device *dev);\ndrivers/net/ethernet/marvell/prestera/prestera.h:352:void prestera_device_unregister(struct prestera_device *dev);\ndrivers/net/ethernet/marvell/prestera/prestera.h-353-\ndrivers/net/ethernet/marvell/prestera/prestera.h:354:struct prestera_port *prestera_port_find_by_hwid(struct prestera_switch *sw,\ndrivers/net/ethernet/marvell/prestera/prestera.h-355-\t\t\t\t\t\t u32 dev_id, u32 hw_id);\ndrivers/net/ethernet/marvell/prestera/prestera.h-356-\ndrivers/net/ethernet/marvell/prestera/prestera.h:357:int prestera_port_autoneg_set(struct prestera_port *port, u64 link_modes);\ndrivers/net/ethernet/marvell/prestera/prestera.h-358-\ndrivers/net/ethernet/marvell/prestera/prestera.h:359:int prestera_router_init(struct prestera_switch *sw);\ndrivers/net/ethernet/marvell/prestera/prestera.h:360:void prestera_router_fini(struct prestera_switch *sw);\ndrivers/net/ethernet/marvell/prestera/prestera.h-361-\ndrivers/net/ethernet/marvell/prestera/prestera.h:362:struct prestera_port *prestera_find_port(struct prestera_switch *sw, u32 id);\ndrivers/net/ethernet/marvell/prestera/prestera.h-363-\ndrivers/net/ethernet/marvell/prestera/prestera.h:364:struct prestera_switch *prestera_switch_get(struct net_device *dev);\ndrivers/net/ethernet/marvell/prestera/prestera.h-365-\ndrivers/net/ethernet/marvell/prestera/prestera.h:366:int prestera_port_cfg_mac_read(struct prestera_port *port,\ndrivers/net/ethernet/marvell/prestera/prestera.h:367:\t\t\t struct prestera_port_mac_config *cfg);\ndrivers/net/ethernet/marvell/prestera/prestera.h-368-\ndrivers/net/ethernet/marvell/prestera/prestera.h:369:int prestera_port_cfg_mac_write(struct prestera_port *port,\ndrivers/net/ethernet/marvell/prestera/prestera.h:370:\t\t\t\tstruct prestera_port_mac_config *cfg);\ndrivers/net/ethernet/marvell/prestera/prestera.h-371-\ndrivers/net/ethernet/marvell/prestera/prestera.h:372:struct prestera_port *prestera_port_dev_lower_find(struct net_device *dev);\ndrivers/net/ethernet/marvell/prestera/prestera.h-373-\ndrivers/net/ethernet/marvell/prestera/prestera.h:374:void prestera_queue_work(struct work_struct *work);\ndrivers/net/ethernet/marvell/prestera/prestera.h:375:void prestera_queue_delayed_work(struct delayed_work *work, unsigned long delay);\ndrivers/net/ethernet/marvell/prestera/prestera.h:376:void prestera_queue_drain(void);\ndrivers/net/ethernet/marvell/prestera/prestera.h-377-\ndrivers/net/ethernet/marvell/prestera/prestera.h:378:int prestera_port_learning_set(struct prestera_port *port, bool learn_enable);\ndrivers/net/ethernet/marvell/prestera/prestera.h:379:int prestera_port_uc_flood_set(struct prestera_port *port, bool flood);\ndrivers/net/ethernet/marvell/prestera/prestera.h:380:int prestera_port_mc_flood_set(struct prestera_port *port, bool flood);\ndrivers/net/ethernet/marvell/prestera/prestera.h-381-\ndrivers/net/ethernet/marvell/prestera/prestera.h:382:int prestera_port_br_locked_set(struct prestera_port *port, bool br_locked);\ndrivers/net/ethernet/marvell/prestera/prestera.h-383-\ndrivers/net/ethernet/marvell/prestera/prestera.h:384:int prestera_port_pvid_set(struct prestera_port *port, u16 vid);\ndrivers/net/ethernet/marvell/prestera/prestera.h-385-\ndrivers/net/ethernet/marvell/prestera/prestera.h:386:bool prestera_netdev_check(const struct net_device *dev);\ndrivers/net/ethernet/marvell/prestera/prestera.h-387-\ndrivers/net/ethernet/marvell/prestera/prestera.h:388:int prestera_is_valid_mac_addr(struct prestera_port *port, const u8 *addr);\ndrivers/net/ethernet/marvell/prestera/prestera.h-389-\ndrivers/net/ethernet/marvell/prestera/prestera.h:390:bool prestera_port_is_lag_member(const struct prestera_port *port);\ndrivers/net/ethernet/marvell/prestera/prestera.h:391:int prestera_lag_id(struct prestera_switch *sw,\ndrivers/net/ethernet/marvell/prestera/prestera.h-392-\t\t struct net_device *lag_dev, u16 *lag_id);\ndrivers/net/ethernet/marvell/prestera/prestera.h-393-\ndrivers/net/ethernet/marvell/prestera/prestera.h:394:struct prestera_lag *prestera_lag_by_id(struct prestera_switch *sw, u16 id);\ndrivers/net/ethernet/marvell/prestera/prestera.h-395-\ndrivers/net/ethernet/marvell/prestera/prestera.h:396:u16 prestera_port_lag_id(const struct prestera_port *port);\ndrivers/net/ethernet/marvell/prestera/prestera.h-397-\ndrivers/net/ethernet/marvell/prestera/prestera.h:398:struct prestera_mdb_entry *\ndrivers/net/ethernet/marvell/prestera/prestera.h:399:prestera_mdb_entry_create(struct prestera_switch *sw,\ndrivers/net/ethernet/marvell/prestera/prestera.h-400-\t\t\t const unsigned char *addr, u16 vid);\ndrivers/net/ethernet/marvell/prestera/prestera.h:401:void prestera_mdb_entry_destroy(struct prestera_mdb_entry *mdb_entry);\ndrivers/net/ethernet/marvell/prestera/prestera.h-402-\ndrivers/net/ethernet/marvell/prestera/prestera.h:403:struct prestera_flood_domain *\ndrivers/net/ethernet/marvell/prestera/prestera.h:404:prestera_flood_domain_create(struct prestera_switch *sw);\ndrivers/net/ethernet/marvell/prestera/prestera.h:405:void prestera_flood_domain_destroy(struct prestera_flood_domain *flood_domain);\ndrivers/net/ethernet/marvell/prestera/prestera.h-406-\ndrivers/net/ethernet/marvell/prestera/prestera.h=407=int\ndrivers/net/ethernet/marvell/prestera/prestera.h:408:prestera_flood_domain_port_create(struct prestera_flood_domain *flood_domain,\ndrivers/net/ethernet/marvell/prestera/prestera.h-409-\t\t\t\t struct net_device *dev,\n--\ndrivers/net/ethernet/marvell/prestera/prestera.h=411=void\ndrivers/net/ethernet/marvell/prestera/prestera.h:412:prestera_flood_domain_port_destroy(struct prestera_flood_domain_port *port);\ndrivers/net/ethernet/marvell/prestera/prestera.h:413:struct prestera_flood_domain_port *\ndrivers/net/ethernet/marvell/prestera/prestera.h:414:prestera_flood_domain_port_find(struct prestera_flood_domain *flood_domain,\ndrivers/net/ethernet/marvell/prestera/prestera.h-415-\t\t\t\tstruct net_device *dev, u16 vid);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-5-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:6:#include \"prestera_acl.h\"\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:7:#include \"prestera_flow.h\"\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:8:#include \"prestera_hw.h\"\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:9:#include \"prestera.h\"\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-10-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-13-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:14:struct prestera_acl {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:15:\tstruct prestera_switch *sw;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-16-\tstruct list_head vtcam_list;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-22-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:23:struct prestera_acl_ruleset_ht_key {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:24:\tstruct prestera_flow_block *block;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-25-\tu32 chain_index;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-27-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:28:struct prestera_acl_rule_entry {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-29-\tstruct rhash_head ht_node;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:30:\tstruct prestera_acl_rule_entry_key key;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-31-\tu32 hw_id;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-38-\t\t\tu8 valid:1;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:39:\t\t\tstruct prestera_acl_action_police i;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-40-\t\t} police;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-41-\t\tstruct {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:42:\t\t\tstruct prestera_acl_action_jump i;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-43-\t\t\tu8 valid:1;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-46-\t\t\tu32 id;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:47:\t\t\tstruct prestera_counter_block *block;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-48-\t\t} counter;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-51-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:52:struct prestera_acl_ruleset {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-53-\tstruct rhash_head ht_node; /* Member of acl HT */\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:54:\tstruct prestera_acl_ruleset_ht_key ht_key;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-55-\tstruct rhashtable rule_ht;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:56:\tstruct prestera_acl *acl;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-57-\tstruct {\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-70-\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;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-80-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:81:static const struct rhashtable_params prestera_acl_ruleset_ht_params = {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:82:\t.key_len = sizeof(struct prestera_acl_ruleset_ht_key),\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:83:\t.key_offset = offsetof(struct prestera_acl_ruleset, ht_key),\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:84:\t.head_offset = offsetof(struct prestera_acl_ruleset, ht_node),\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-85-\t.automatic_shrinking = true,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-87-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:88:static const struct rhashtable_params prestera_acl_rule_ht_params = {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-89-\t.key_len = sizeof(unsigned long),\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:90:\t.key_offset = offsetof(struct prestera_acl_rule, cookie),\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:91:\t.head_offset = offsetof(struct prestera_acl_rule, ht_node),\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-92-\t.automatic_shrinking = true,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-94-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:95:static const struct rhashtable_params __prestera_acl_rule_entry_ht_params = {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:96:\t.key_offset = offsetof(struct prestera_acl_rule_entry, key),\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:97:\t.head_offset = offsetof(struct prestera_acl_rule_entry, ht_node),\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:98:\t.key_len = sizeof(struct prestera_acl_rule_entry_key),\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-99-\t.automatic_shrinking = true,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-101-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:102:int prestera_acl_chain_to_client(u32 chain_index, bool ingress, u32 *client)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-103-{\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-110-\tif (!ingress) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:111:\t\t/* prestera supports only one chain on egress */\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-112-\t\tif (chain_index \u003e 0)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-125-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:126:static bool prestera_acl_chain_is_supported(u32 chain_index, bool ingress)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-127-{\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-128-\tif (!ingress)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:129:\t\t/* prestera supports only one chain on egress */\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-130-\t\treturn chain_index == 0;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-134-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:135:static struct prestera_acl_ruleset *\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:136:prestera_acl_ruleset_create(struct prestera_acl *acl,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:137:\t\t\t struct prestera_flow_block *block,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-138-\t\t\t u32 chain_index)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-139-{\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:140:\tstruct prestera_acl_ruleset *ruleset;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-141-\tu32 uid = 0;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-143-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:144:\tif (!prestera_acl_chain_is_supported(chain_index, block-\u003eingress))\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-145-\t\treturn ERR_PTR(-EINVAL);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-156-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:157:\terr = rhashtable_init(\u0026ruleset-\u003erule_ht, \u0026prestera_acl_rule_ht_params);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-158-\tif (err)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-172-\terr = rhashtable_insert_fast(\u0026acl-\u003eruleset_ht, \u0026ruleset-\u003eht_node,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:173:\t\t\t\t prestera_acl_ruleset_ht_params);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-174-\tif (err)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-187-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:188:int prestera_acl_ruleset_keymask_set(struct prestera_acl_ruleset *ruleset,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-189-\t\t\t\t void *keymask)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-197-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:198:int prestera_acl_ruleset_offload(struct prestera_acl_ruleset *ruleset)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-199-{\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:200:\tstruct prestera_acl_iface iface;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-201-\tu32 vtcam_id;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-210-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:211:\terr = prestera_acl_vtcam_id_get(ruleset-\u003eacl,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-212-\t\t\t\t\truleset-\u003eht_key.chain_index,\n--\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,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-225-\t\t\t\t\t\t vtcam_id, ruleset-\u003epcl_id);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-234-err_ruleset_bind:\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:235:\tprestera_acl_vtcam_id_put(ruleset-\u003eacl, ruleset-\u003evtcam_id);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-236-err_vtcam_create:\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-239-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:240:static void prestera_acl_ruleset_destroy(struct prestera_acl_ruleset *ruleset)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-241-{\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;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-246-\trhashtable_remove_fast(\u0026acl-\u003eruleset_ht, \u0026ruleset-\u003eht_node,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:247:\t\t\t prestera_acl_ruleset_ht_params);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-248-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-250-\t\tif (ruleset-\u003eht_key.chain_index) {\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,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-254-\t\t\t};\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:255:\t\t\terr = prestera_hw_vtcam_iface_unbind(acl-\u003esw, \u0026iface,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-256-\t\t\t\t\t\t\t ruleset-\u003evtcam_id);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-258-\t\t}\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:259:\t\tWARN_ON(prestera_acl_vtcam_id_put(acl, ruleset-\u003evtcam_id));\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-260-\t}\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-267-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:268:static struct prestera_acl_ruleset *\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:269:__prestera_acl_ruleset_lookup(struct prestera_acl *acl,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:270:\t\t\t struct prestera_flow_block *block,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-271-\t\t\t u32 chain_index)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-272-{\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:273:\tstruct prestera_acl_ruleset_ht_key ht_key;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-274-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-278-\treturn rhashtable_lookup_fast(\u0026acl-\u003eruleset_ht, \u0026ht_key,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:279:\t\t\t\t prestera_acl_ruleset_ht_params);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-280-}\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-281-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:282:struct prestera_acl_ruleset *\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:283:prestera_acl_ruleset_lookup(struct prestera_acl *acl,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:284:\t\t\t struct prestera_flow_block *block,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-285-\t\t\t u32 chain_index)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-286-{\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:287:\tstruct prestera_acl_ruleset *ruleset;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-288-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:289:\truleset = __prestera_acl_ruleset_lookup(acl, block, chain_index);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-290-\tif (!ruleset)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-296-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:297:struct prestera_acl_ruleset *\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:298:prestera_acl_ruleset_get(struct prestera_acl *acl,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:299:\t\t\t struct prestera_flow_block *block,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-300-\t\t\t u32 chain_index)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-301-{\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:302:\tstruct prestera_acl_ruleset *ruleset;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-303-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:304:\truleset = __prestera_acl_ruleset_lookup(acl, block, chain_index);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-305-\tif (ruleset) {\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-309-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:310:\treturn prestera_acl_ruleset_create(acl, block, chain_index);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-311-}\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-312-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:313:void prestera_acl_ruleset_put(struct prestera_acl_ruleset *ruleset)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-314-{\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-317-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:318:\tprestera_acl_ruleset_destroy(ruleset);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-319-}\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-320-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:321:int prestera_acl_ruleset_bind(struct prestera_acl_ruleset *ruleset,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:322:\t\t\t struct prestera_port *port)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-323-{\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,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-328-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:329:\treturn prestera_hw_vtcam_iface_bind(port-\u003esw, \u0026iface, ruleset-\u003evtcam_id,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-330-\t\t\t\t\t ruleset-\u003epcl_id);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-332-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:333:int prestera_acl_ruleset_unbind(struct prestera_acl_ruleset *ruleset,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:334:\t\t\t\tstruct prestera_port *port)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-335-{\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,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-340-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:341:\treturn prestera_hw_vtcam_iface_unbind(port-\u003esw, \u0026iface,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-342-\t\t\t\t\t ruleset-\u003evtcam_id);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-344-\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:345:static int prestera_acl_ruleset_block_bind(struct prestera_acl_ruleset *ruleset,\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:346:\t\t\t\t\t struct prestera_flow_block *block)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-347-{\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:348:\tstruct prestera_flow_block_binding *binding;\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-349-\tint err;\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-352-\tlist_for_each_entry(binding, \u0026block-\u003ebinding_list, list) {\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:353:\t\terr = prestera_acl_ruleset_bind(ruleset, binding-\u003eport);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-354-\t\tif (err)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-361-\t\t\t\t\t list)\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c:362:\t\terr = prestera_acl_ruleset_unbind(ruleset, binding-\u003eport);\ndrivers/net/ethernet/marvell/prestera/prestera_acl.c-363-\tblock-\u003eruleset_zero = NULL;\n\n"
} |
| 5/2 | 2026/06/20 10:18 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 17277 output: 42 thoughts: 117 Thoughts: **Investigating the Testability of the `prestera` Driver** Okay, so I'm looking at this `prestera` driver, and it's a PCI driver – that's what the `CONFIG_PRESTERA_PCI` setting indicates. My initial thought is, can I even *reasonably* test this thing in QEMU? Typically, when we're dealing with PCI drivers for specialized ASICs, the answer is a resounding no. Think Mellanox, Marvell, Broadcom – those chips aren't emulated in a typical QEMU environment, making direct driver testing a non-starter. But, hold on a second... the `prestera` driver *does* have a PCI interface; it's got that `prestera_pci.c` file. And it talks to firmware, which is key. The firmware interaction is potentially the important aspect for testability. Now, the important question is: does the driver have hardcoded dependencies on specific PCI IDs? That’s my next step. I'll need to dig into `prestera_pci.c` and see if it's tightly coupled to certain hardware configurations. If it's *too* specific, then QEMU testing will be tricky, and I'll need to explore other options. |
| 6/2 | 2026/06/20 10:18 | tool | grepper |
0mError:no matches Args: {
"Expression": "prestera_pci_id_table",
"PathPrefix": "drivers/net/ethernet/marvell/prestera/"
}Results: {
"error": "no matches"
} |
| 7/2 | 2026/06/20 10:18 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 17725 output: 39 thoughts: 22 Thoughts: Here's a summary of my thought process, as requested: **Diving into `prestera_pci.c` for PCI Device ID Info** Okay, so I need to find the relevant PCI device identification information. My first instinct is to zero in on the `prestera_pci.c` file. Given the context, it's a very logical place to start. This file likely handles the Prestera's interaction with the PCI bus, so the `pci_device_id` structure or macro should be defined or used within it to identify compatible hardware. I'll need to confirm that this is the best place to find the info. I'm mentally preparing to navigate the code within that file and examine any references to `pci_device_id` as the primary key. If that's the case, I should be able to quickly zero in on vendor and device IDs, and related information specific to the Prestera hardware. Let's get to it. |
| 8/2 | 2026/06/20 10:18 | tool | grepper |
0mArgs:{
"Expression": "pci_device_id",
"PathPrefix": "drivers/net/ethernet/marvell/prestera/"
}Results: {
"Output": "drivers/net/ethernet/marvell/prestera/prestera_pci.c=834=static int prestera_pci_probe(struct pci_dev *pdev,\ndrivers/net/ethernet/marvell/prestera/prestera_pci.c:835:\t\t\t const struct pci_device_id *id)\ndrivers/net/ethernet/marvell/prestera/prestera_pci.c-836-{\n--\ndrivers/net/ethernet/marvell/prestera/prestera_pci.c=946=static void prestera_pci_remove(struct pci_dev *pdev)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_pci.c-956-\ndrivers/net/ethernet/marvell/prestera/prestera_pci.c:957:static const struct pci_device_id prestera_pci_devices[] = {\ndrivers/net/ethernet/marvell/prestera/prestera_pci.c-958-\t{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_AC3X_98DX_55) },\n"
} |
| 9/2 | 2026/06/20 10:18 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 18298 output: 40 thoughts: 165 Thoughts: **Analyzing the Prestera Driver and Syzbot's Potential** Okay, so I'm looking at this patch and immediately, my brain zeroes in on the driver's reliance on specific PCI IDs. My first thought is whether there's a QEMU emulator out there for Prestera, specifically? Nope, that seems to be a dead end. But then, I remember seeing syzbot using various emulation functions like `syz_usb_connect`, `syz_80211_inject`, and `syz_genetlink_get_family`. Right, so syzbot *can* potentially test PCI drivers, but only if there's an emulator available. And since Prestera doesn't have one, that's another hurdle. This could mean that syzbot's reach might be limited because it can't interact with the driver unless the actual hardware is present. Now, a critical point: the patch specifically touches `prestera_dsa.c`. DSA...that's Distributed Switch Architecture. Okay, that context is really valuable. Now I need to see where `prestera_dsa_parse` and `prestera_dsa_build` are being used. This could be where the rubber hits the road. Let's see what that reveals. |
| 10/2 | 2026/06/20 10:19 | tool | grepper |
0mArgs:{
"Expression": "prestera_dsa_parse",
"PathPrefix": "drivers/net/ethernet/marvell/prestera/"
}Results: {
"Output": "drivers/net/ethernet/marvell/prestera/prestera_dsa.c-34-\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.c:35:int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf)\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.c-36-{\n--\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.h=26=struct prestera_dsa {\n--\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.h-32-\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.h:33:int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf);\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.h-34-int prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_rxtx.c=212=static int prestera_rxtx_process_skb(struct prestera_sdma *sdma,\n--\ndrivers/net/ethernet/marvell/prestera/prestera_rxtx.c-223-\t/* ethertype field is part of the dsa header */\ndrivers/net/ethernet/marvell/prestera/prestera_rxtx.c:224:\terr = prestera_dsa_parse(\u0026dsa, skb-\u003edata - ETH_TLEN);\ndrivers/net/ethernet/marvell/prestera/prestera_rxtx.c-225-\tif (err)\n"
} |
| 11/2 | 2026/06/20 10:19 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 19239 output: 26 thoughts: 120 Thoughts: **My Analysis of the Prestera RX Path Code** Okay, so I'm looking at this `prestera_rxtx_process_skb` function, and it's clearly part of the receive (RX) path within the Prestera driver. Immediately, alarm bells start ringing. This whole driver is tied to very specific Marvell PCI hardware: that `PCI_VENDOR_ID_MARVELL` coupled with the `PRESTERA_DEV_ID_AC3X_98DX_55` device ID. Classic embedded silicon, meaning it's highly unlikely that I can poke at this easily. The real problem dawns on me: there's no way to emulate this ASIC in a standard virtual environment like QEMU or even Google Compute Engine. That means unless I have access to the *actual* hardware, I'm pretty much stuck. There's just no way to reliably test or debug this path in a virtualized setting. Hold on, I should make sure there's absolutely no software emulation. I should quickly check if there's any mention of a Prestera emulator in the kernel. Let me search the kernel source tree for any mention of software emulation for the Prestera. |
| 12/2 | 2026/06/20 10:19 | tool | grepper |
0mError:no matches Args: {
"Expression": "prestera",
"PathPrefix": "tools/testing/"
}Results: {
"error": "no matches"
} |
| 13/2 | 2026/06/20 10:19 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 19656 output: 40 thoughts: 49 Thoughts: Okay, here's my take on those thoughts, framed as my own reasoning: **Analyzing the DSA Interaction** Right, no software emulation is involved here, good. Now, I need to get a clearer picture of how `prestera_dsa_parse` functions within the system. Is it solely called from `prestera_rxtx_process_skb`, or does it have other potential entry points that I might be overlooking? I need to know the complete call graph to determine if it could have any unexpected side effects. And what about `prestera_dsa_build`? I should examine that function in detail as well to see how it interacts with the parsed data. It's crucial to understand the data flow completely. |
| 14/2 | 2026/06/20 10:19 | tool | grepper |
0mArgs:{
"Expression": "prestera_dsa_build",
"PathPrefix": "drivers/net/ethernet/marvell/prestera/"
}Results: {
"Output": "drivers/net/ethernet/marvell/prestera/prestera_dsa.c=35=int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.c-82-\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.c:83:int prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf)\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.c-84-{\n--\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.h=33=int prestera_dsa_parse(struct prestera_dsa *dsa, const u8 *dsa_buf);\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.h:34:int prestera_dsa_build(const struct prestera_dsa *dsa, u8 *dsa_buf);\ndrivers/net/ethernet/marvell/prestera/prestera_dsa.h-35-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_rxtx.c=812=netdev_tx_t prestera_rxtx_xmit(struct prestera_port *port, struct sk_buff *skb)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_rxtx.c-824-\ndrivers/net/ethernet/marvell/prestera/prestera_rxtx.c:825:\tif (prestera_dsa_build(\u0026dsa, skb-\u003edata + 2 * ETH_ALEN) != 0)\ndrivers/net/ethernet/marvell/prestera/prestera_rxtx.c-826-\t\treturn NET_XMIT_DROP;\n"
} |
| 15/2 | 2026/06/20 10:19 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 20388 output: 37 thoughts: 187 Thoughts: **Analyzing the Fuzzing Potential of the Prestera Driver** Okay, so I'm looking at this `prestera_rxtx_xmit` function call. It's coming from the `prestera` driver, which, as I recall, is that Marvell-specific driver for the Prestera Switch ASICs. The core issue here for fuzzing is that there's no hardware emulation of this particular device available in QEMU. That's a real problem for syzkaller, isn't it? If the target hardware isn't emulated, syzkaller simply can't reach that code. So, the conclusion is fairly straightforward: `WorthFuzzing` should be `false`. I need to be certain, though. Let's explore any potential backdoors. I wonder, is `prestera` somehow reachable through a generic DSA (Distributed Switch Architecture) framework that *might* have some sort of emulation? Time to double-check. I recall there's a file, `drivers/net/ethernet/marvell/prestera/prestera_dsa.c`. Wait...that's specific to *prestera*? Okay, so that likely rules out generic DSA access. I'm making a key distinction here. Is the `prestera` driver a DSA driver itself? Let's clarify. No, it registers a switchdev, not a DSA driver. I need to make sure I am thinking clearly about this. To be extra cautious, let me check the `prestera_main.c` file to ensure there are no surprises. |
| 16/2 | 2026/06/20 10:19 | tool | grepper |
0mArgs:{
"Expression": "register_netdev",
"PathPrefix": "drivers/net/ethernet/marvell/prestera/"
}Results: {
"Output": "drivers/net/ethernet/marvell/prestera/prestera_main.c=603=static int prestera_port_create(struct prestera_switch *sw, u32 id)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-730-\ndrivers/net/ethernet/marvell/prestera/prestera_main.c:731:\terr = register_netdev(dev);\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-732-\tif (err)\ndrivers/net/ethernet/marvell/prestera/prestera_main.c:733:\t\tgoto err_register_netdev;\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-734-\n--\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-741-err_sfp_bind:\ndrivers/net/ethernet/marvell/prestera/prestera_main.c:742:\tunregister_netdev(dev);\ndrivers/net/ethernet/marvell/prestera/prestera_main.c:743:err_register_netdev:\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-744-\tprestera_port_list_del(port);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_main.c=753=static void prestera_port_destroy(struct prestera_port *port)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-757-\tcancel_delayed_work_sync(\u0026port-\u003ecached_hw_stats.caching_dw);\ndrivers/net/ethernet/marvell/prestera/prestera_main.c:758:\tunregister_netdev(dev);\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-759-\tprestera_port_list_del(port);\n--\ndrivers/net/ethernet/marvell/prestera/prestera_main.c=1349=static int prestera_netdev_event_handler_register(struct prestera_switch *sw)\n--\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-1352-\ndrivers/net/ethernet/marvell/prestera/prestera_main.c:1353:\treturn register_netdevice_notifier(\u0026sw-\u003enetdev_nb);\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-1354-}\n--\ndrivers/net/ethernet/marvell/prestera/prestera_main.c=1356=static void prestera_netdev_event_handler_unregister(struct prestera_switch *sw)\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-1357-{\ndrivers/net/ethernet/marvell/prestera/prestera_main.c:1358:\tunregister_netdevice_notifier(\u0026sw-\u003enetdev_nb);\ndrivers/net/ethernet/marvell/prestera/prestera_main.c-1359-}\n"
} |
| 17/2 | 2026/06/20 10:19 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 21747 output: 110 thoughts: 104 Thoughts: **My Assessment of the Marvell Prestera Switch Driver's Fuzzing Potential** Okay, here's my take on this Marvell Prestera switch driver. I've looked at the code, and here's the bottom line: I need to set `WorthFuzzing=false`. The core issue is that the driver relies on the PCI device being present to register the netdevs for the switch ports. Specifically, the netdevs are created during the PCI probe. Now, in any normal hardware setup, this would be fine. The PCI device is there, things work as intended. But in virtualized environments like QEMU or Google Compute Engine, which are my testbeds of choice for fuzzing, this PCI device simply isn't present. And if that PCI device isn't probed, the necessary netdevs are never created. Effectively, this means the code that interacts with the switch itself – the code I'd be targeting with fuzzing – becomes unreachable under the conditions I'm operating within. Therefore, focusing fuzzing effort on this driver is, for all intents and purposes, a waste of time. It's a hardware-specific driver designed for Marvell Prestera Switch ASICs, and these ASICs aren't emulated in the virtualized environments I'm using. It's simply not practical to include it. |
| 18/2 | 2026/06/20 10:19 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch modifies the Marvell Prestera Switch ASIC driver (prestera). This driver requires specific hardware (PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_AC3X_98DX_55) which is not emulated in virtualized environments like QEMU or GCE. Therefore, the modified code paths are unreachable during fuzzing.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies the Marvell Prestera Switch ASIC driver (prestera). This driver requires specific hardware (PCI_VENDOR_ID_MARVELL, PRESTERA_DEV_ID_AC3X_98DX_55) which is not emulated in virtualized environments like QEMU or GCE. Therefore, the modified code paths are unreachable during fuzzing.",
"WorthFuzzing": false
} |
| Total Calls | Total Tokens | Avg Tokens | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|
| Total Calls | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|