| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/08/12 20:41 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"KMSANReasoning": "",
"NeedsKMSAN": false,
"Reasoning": "The patch modifies the ipw2100 and ipw2200 drivers, which are for physical Intel PRO/Wireless 2100 and 2200 mini-PCI cards. These devices are not emulated in standard QEMU or other virtualized environments, meaning the modified packet processing code paths cannot be reached or fuzzed.",
"WorthFuzzing": false
} |
| 1/1 | 2026/08/12 20:41 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit f7752cde2681e0b696ec40cff693e05d602d7f6b\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Wed Aug 12 20:41:32 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/drivers/net/wireless/intel/ipw2x00/ipw2100.c b/drivers/net/wireless/intel/ipw2x00/ipw2100.c\nindex 2b8a23865bfb2..43b4e432956be 100644\n--- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c\n+++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c\n@@ -2712,7 +2712,9 @@ static void __ipw2100_rx_process(struct ipw2100_priv *priv)\n \t\t\t\tbreak;\n \t\t\t}\n #endif\n-\t\t\tif (stats.len \u003c sizeof(struct libipw_hdr_3addr))\n+\t\t\tif (sq-\u003edrv[i].frame_size \u003c\n+\t\t\t\t sizeof(struct libipw_hdr_3addr) ||\n+\t\t\t sq-\u003edrv[i].frame_size \u003e IPW_RX_NIC_BUFFER_LENGTH)\n \t\t\t\tbreak;\n \t\t\tswitch (WLAN_FC_GET_TYPE(le16_to_cpu(u-\u003erx_data.header.frame_ctl))) {\n \t\t\tcase IEEE80211_FTYPE_MGMT:\ndiff --git a/drivers/net/wireless/intel/ipw2x00/ipw2200.c b/drivers/net/wireless/intel/ipw2x00/ipw2200.c\nindex 4bc9bb406e8e8..8249d493ee22f 100644\n--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c\n+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c\n@@ -8322,6 +8322,15 @@ static void ipw_rx(struct ipw_priv *priv)\n \t\t\t\t\tbreak;\n \t\t\t\t}\n \n+\t\t\t\tif (unlikely(le16_to_cpu(pkt-\u003eu.frame.length) \u003e\n+\t\t\t\t\t IPW_RX_BUF_SIZE -\n+\t\t\t\t\t IPW_RX_FRAME_SIZE)) {\n+\t\t\t\t\tIPW_DEBUG_DROP(\"Received oversized packet. Dropping.\\n\");\n+\t\t\t\t\tpriv-\u003enet_dev-\u003estats.rx_errors++;\n+\t\t\t\t\tpriv-\u003ewstats.discard.misc++;\n+\t\t\t\t\tbreak;\n+\t\t\t\t}\n+\n \t\t\t\tswitch (WLAN_FC_GET_TYPE\n \t\t\t\t\t(le16_to_cpu(header-\u003eframe_ctl))) {\n \ndiff --git a/drivers/net/wireless/intel/ipw2x00/libipw_rx.c b/drivers/net/wireless/intel/ipw2x00/libipw_rx.c\nindex c8841f9b9ad91..424349a6935e4 100644\n--- a/drivers/net/wireless/intel/ipw2x00/libipw_rx.c\n+++ b/drivers/net/wireless/intel/ipw2x00/libipw_rx.c\n@@ -1209,6 +1209,9 @@ static int libipw_handle_assoc_resp(struct libipw_device *ieee, struct libipw_as\n \tstruct libipw_network *network = \u0026network_resp;\n \tstruct net_device *dev = ieee-\u003edev;\n \n+\tif (stats-\u003elen \u003c sizeof(*frame))\n+\t\treturn 1;\n+\n \tnetwork-\u003eflags = 0;\n \tnetwork-\u003eqos_data.active = 0;\n \tnetwork-\u003eqos_data.supported = 0;\n@@ -1421,6 +1424,9 @@ static void libipw_process_probe_response(struct libipw_device\n #endif\n \tunsigned long flags;\n \n+\tif (stats-\u003elen \u003c sizeof(*beacon))\n+\t\treturn;\n+\n \tLIBIPW_DEBUG_SCAN(\"'%*pE' (%pM): %c%c%c%c %c%c%c%c-%c%c%c%c %c%c%c%c\\n\",\n \t\t info_element-\u003elen, info_element-\u003edata,\n \t\t beacon-\u003eheader.addr3,\n"
} |
| 2/1 | 2026/08/12 20:41 | agent | patch-evaluator |
0mModel:best-expensive Args: null Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies the ipw2100 and ipw2200 drivers, which are for physical Intel PRO/Wireless 2100 and 2200 mini-PCI cards. These devices are not emulated in standard QEMU or other virtualized environments, meaning the modified packet processing code paths cannot be reached or fuzzed.",
"WorthFuzzing": false
}Instruction: You are an expert Linux kernel maintainer. Your job is to review a provided patch series and determine if it makes functional changes to the kernel that should be fuzzed. IMPORTANT: The changes have ALREADY been applied and committed as the HEAD commit in your workspace. Do NOT rely on your internal knowledge of the kernel. You must actively use your code access tools to examine the actual source code and confirm any assumptions. Return WorthFuzzing=false if the patch only contains: - Modifications to Documentation/, Kconfig files, or code comments. - Purely decorative changes, such as logging (e.g., pr_err, printk) or tracepoints. - Changes to numeric constants or macros that do not functionally alter execution flow. - Code paths that are impossible to reach in virtualized environments like GCE or QEMU, even when utilizing software-emulated hardware (e.g., usb gadget, mac80211_hwsim). - Code in vendor-specific PCIe switch, SmartNIC, or GPU drivers (e.g., mlxsw, pds_core, qed, ionic, amdgpu) that require physical PCIe hardware cards not emulated in standard QEMU. - Driver .remove, .shutdown, or pci_unregister_driver teardown callbacks (e.g., igb_remove) that are executed only during PCI hot-unplug or sysfs driver unbind operations. If it modifies reachable core kernel logic, drivers, or architectures, use your code search tools to verify the code can be executed, then return WorthFuzzing=true. When returning WorthFuzzing=true, you MUST ALSO: 1. Extract any specific kernel functions that should be heavily fuzzed into FocusSymbols. Avoid listing generic hot-path functions to prevent skewed test distributions. Prefer non-static, non-inlined API entrypoint functions over internal static helper functions (which are inlined by the compiler and do not have distinct symbol addresses). 2. Identify any specific CONFIG_ options required to properly test this new/modified feature. Go and look into the Kconfig files and check for ifdefs around the code, do not make assumptions. Also check "depends on" lines in Kconfig to include any non-standard parent subsystem configs needed for Kbuild to compile the code statically into vmlinux. List them in the EnableConfigs output array, and DO NOT add a 'CONFIG_' prefix (e.g., return "NET_IPV4" instead of "CONFIG_NET_IPV4"). Prefer calling several tools at the same time to save round-trips. Use set-results tool to provide results of the analysis. It must be called exactly once before the final reply. Ignore results of this tool. Prompt: For your convenience, here is the diff of the changes:
commit f7752cde2681e0b696ec40cff693e05d602d7f6b
Author: syz-cluster <triage@syzkaller.com>
Date: Wed Aug 12 20:41:32 2026 +0000
syz-cluster: applied patch under review
diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2100.c b/drivers/net/wireless/intel/ipw2x00/ipw2100.c
index 2b8a23865bfb2..43b4e432956be 100644
--- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c
@@ -2712,7 +2712,9 @@ static void __ipw2100_rx_process(struct ipw2100_priv *priv)
break;
}
#endif
- if (stats.len < sizeof(struct libipw_hdr_3addr))
+ if (sq->drv[i].frame_size <
+ sizeof(struct libipw_hdr_3addr) ||
+ sq->drv[i].frame_size > IPW_RX_NIC_BUFFER_LENGTH)
break;
switch (WLAN_FC_GET_TYPE(le16_to_cpu(u->rx_data.header.frame_ctl))) {
case IEEE80211_FTYPE_MGMT:
diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2200.c b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
index 4bc9bb406e8e8..8249d493ee22f 100644
--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
@@ -8322,6 +8322,15 @@ static void ipw_rx(struct ipw_priv *priv)
break;
}
+ if (unlikely(le16_to_cpu(pkt->u.frame.length) >
+ IPW_RX_BUF_SIZE -
+ IPW_RX_FRAME_SIZE)) {
+ IPW_DEBUG_DROP("Received oversized packet. Dropping.\n");
+ priv->net_dev->stats.rx_errors++;
+ priv->wstats.discard.misc++;
+ break;
+ }
+
switch (WLAN_FC_GET_TYPE
(le16_to_cpu(header->frame_ctl))) {
diff --git a/drivers/net/wireless/intel/ipw2x00/libipw_rx.c b/drivers/net/wireless/intel/ipw2x00/libipw_rx.c
index c8841f9b9ad91..424349a6935e4 100644
--- a/drivers/net/wireless/intel/ipw2x00/libipw_rx.c
+++ b/drivers/net/wireless/intel/ipw2x00/libipw_rx.c
@@ -1209,6 +1209,9 @@ static int libipw_handle_assoc_resp(struct libipw_device *ieee, struct libipw_as
struct libipw_network *network = &network_resp;
struct net_device *dev = ieee->dev;
+ if (stats->len < sizeof(*frame))
+ return 1;
+
network->flags = 0;
network->qos_data.active = 0;
network->qos_data.supported = 0;
@@ -1421,6 +1424,9 @@ static void libipw_process_probe_response(struct libipw_device
#endif
unsigned long flags;
+ if (stats->len < sizeof(*beacon))
+ return;
+
LIBIPW_DEBUG_SCAN("'%*pE' (%pM): %c%c%c%c %c%c%c%c-%c%c%c%c %c%c%c%c\n",
info_element->len, info_element->data,
beacon->header.addr3,
|
| 3/2 | 2026/08/12 20:41 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 2868 output: 41 thoughts: 357 Thoughts: **Analyzing the IPW2100/2200 Wireless Driver Patch** Okay, so I'm looking at this patch that adds bounds checking to a few functions: `__ipw2100_rx_process`, `ipw_rx`, `libipw_handle_assoc_resp`, and `libipw_process_probe_response`. These functions are all within the `ipw2x00` directory, specifically targeting the Intel PRO/Wireless 2100 and 2200 drivers. My initial thought is, are we dealing with physical hardware here? These drivers are for PCI devices, and the code suggests it's for the cards themselves, meaning we're not dealing with a purely software or emulated environment. The big question is whether we can realistically fuzz these drivers. PCI drivers for actual hardware, especially those not emulated in QEMU or similar environments, are usually a tough nut to crack for fuzzing. Unless there's some sort of software emulation layer involved. Hmm, wait a second. I remember `mac80211_hwsim`, that's for mac80211. But `ipw2100` and `ipw2200` are full MAC drivers, or perhaps soft MAC drivers since they use `libipw`. So, is there any emulation for them? Probably not, since they're physical PCI devices. I'm going to double-check `ipw2100.c` and `ipw2200.c` to be certain. Gotta be thorough. |
| 4/2 | 2026/08/12 20:41 | tool | grepper |
0mArgs:{
"Expression": "pci_register_driver",
"PathPrefix": "drivers/net/wireless/intel/ipw2x00/"
}Results: {
"Output": "drivers/net/wireless/intel/ipw2x00/ipw2100.c=6517=static int __init ipw2100_init(void)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6525-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6526:\tret = pci_register_driver(\u0026ipw2100_pci_driver);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6527-\tif (ret)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2200.c=11888=static int __init ipw_init(void)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2200.c-11894-\ndrivers/net/wireless/intel/ipw2x00/ipw2200.c:11895:\tret = pci_register_driver(\u0026ipw_driver);\ndrivers/net/wireless/intel/ipw2x00/ipw2200.c-11896-\tif (ret) {\n"
} |
| 5/2 | 2026/08/12 20:41 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 3945 output: 29 thoughts: 185 Thoughts: **My Assessment of WorthFuzzing for These Drivers** Okay, so we're looking at PCI drivers here. Specifically, we're talking about those old Intel PRO/Wireless 2100 and 2200 mini-PCI cards. Now, the key issue is that, as far as I understand, these aren't emulated at all in standard QEMU. This is a problem, because it means they're completely inaccessible in a virtualized environment. So, straight off the bat, my initial instinct is to mark this as WorthFuzzing=false. I mean, if we can't even *reach* the hardware, what's the point? But wait. Before I definitively dismiss this, I need to consider if there's any conceivable way to *inject* packets into these drivers, even without the hardware present. The code modifies functions like `__ipw2100_rx_process`, `ipw_rx`, `libipw_handle_assoc_resp`, and `libipw_process_probe_response`. From my understanding, these are all involved in receiving packets – processing incoming data from the hardware. Since we *don't* have the hardware, the flow of the code won't even *reach* these patched functions. They're dead code, in essence, in this scenario. I'm getting a feeling, though, that I might be wrong. Let me just quickly confirm that `libipw` isn't used by something else, as that may change the assessment. |
| 6/2 | 2026/08/12 20:41 | tool | grepper |
0mArgs:{
"Expression": "libipw",
"PathPrefix": "drivers/net/wireless/"
}Results: {
"Output": "\nFull output is too long, showing 500 out of 3263 lines.\nUse more precise expression if possible.\n\ndrivers/net/wireless/intel/ipw2x00/Kconfig=164=config LIBIPW_DEBUG\n--\ndrivers/net/wireless/intel/ipw2x00/Kconfig-168-\t This option will enable debug tracing output for the\ndrivers/net/wireless/intel/ipw2x00/Kconfig:169:\t libipw component.\ndrivers/net/wireless/intel/ipw2x00/Kconfig-170-\n--\ndrivers/net/wireless/intel/ipw2x00/Kconfig-183-\ndrivers/net/wireless/intel/ipw2x00/Kconfig:184:\t If you are not trying to debug or develop the libipw\ndrivers/net/wireless/intel/ipw2x00/Kconfig-185-\t component, you most likely want to say N here.\n--\ndrivers/net/wireless/intel/ipw2x00/Makefile=7=obj-$(CONFIG_IPW2200) += ipw2200.o\ndrivers/net/wireless/intel/ipw2x00/Makefile-8-\ndrivers/net/wireless/intel/ipw2x00/Makefile:9:obj-$(CONFIG_LIBIPW) += libipw.o\ndrivers/net/wireless/intel/ipw2x00/Makefile:10:libipw-objs := \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:11:\tlibipw_module.o \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:12:\tlibipw_tx.o \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:13:\tlibipw_rx.o \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:14:\tlibipw_wx.o \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:15:\tlibipw_geo.o \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:16:\tlibipw_spy.o \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:17:\tlibipw_crypto.o \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:18:\tlibipw_crypto_ccmp.o \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:19:\tlibipw_crypto_tkip.o \\\ndrivers/net/wireless/intel/ipw2x00/Makefile:20:\tlibipw_crypto_wep.o\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=325=static inline void read_register(struct net_device *dev, u32 reg, u32 * val)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-326-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:327:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-328-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=333=static inline void write_register(struct net_device *dev, u32 reg, u32 val)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-334-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:335:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-336-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=341=static inline void read_register_word(struct net_device *dev, u32 reg,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-343-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:344:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-345-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=350=static inline void read_register_byte(struct net_device *dev, u32 reg, u8 * val)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-351-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:352:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-353-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=358=static inline void write_register_word(struct net_device *dev, u32 reg, u16 val)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-359-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:360:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-361-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=366=static inline void write_register_byte(struct net_device *dev, u32 reg, u8 val)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-367-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:368:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-369-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=1640=static int ipw2100_start_scan(struct ipw2100_priv *priv)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-1680-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:1681:static const struct libipw_geo ipw_geos[] = {\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-1682-\t{\t\t\t/* Restricted */\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=1693=static int ipw2100_up(struct ipw2100_priv *priv, int deferred)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-1701-\tif (priv-\u003esuspend_time) {\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:1702:\t\tlibipw_networks_age(priv-\u003eieee, priv-\u003esuspend_time);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-1703-\t\tpriv-\u003esuspend_time = 0;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-1759-\t/* Initialize the geo */\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:1760:\tlibipw_set_geo(priv-\u003eieee, \u0026ipw_geos[0]);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-1761-\tpriv-\u003eieee-\u003efreq_band = LIBIPW_24GHZ_BAND;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=1873=static int ipw2100_wdev_init(struct net_device *dev)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-1874-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:1875:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:1876:\tconst struct libipw_geo *geo = libipw_get_geo(priv-\u003eieee);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-1877-\tstruct wireless_dev *wdev = \u0026priv-\u003eieee-\u003ewdev;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=2330=static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2377- *\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2378: * . libipw_hdr\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2379: * . libipw_snap_hdr\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2380- *\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=2433=static void isr_rx(struct ipw2100_priv *priv, int i,\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2434:\t\t\t struct libipw_rx_stats *stats)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2435-{\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2471-\t/* Make a copy of the frame so we can dump it to the logs if\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2472:\t * libipw_rx fails */\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2473-\tskb_copy_from_linear_data(packet-\u003eskb, packet_data,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2477-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2478:\tif (!libipw_rx(priv-\u003eieee, packet-\u003eskb, stats)) {\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2479-#ifdef IPW2100_RX_DEBUG\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2485-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2486:\t\t/* libipw_rx failed, so it didn't free the SKB */\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2487-\t\tdev_kfree_skb_any(packet-\u003eskb);\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=2506=static void isr_rx_monitor(struct ipw2100_priv *priv, int i,\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2507:\t\t struct libipw_rx_stats *stats)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2508-{\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2564-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2565:\tif (!libipw_rx(priv-\u003eieee, packet-\u003eskb, stats)) {\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2566-\t\tdev-\u003estats.rx_errors++;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2567-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2568:\t\t/* libipw_rx failed, so it didn't free the SKB */\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2569-\t\tdev_kfree_skb_any(packet-\u003eskb);\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=2644=static void __ipw2100_rx_process(struct ipw2100_priv *priv)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2651-\tstruct ipw2100_rx *u;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2652:\tstruct libipw_rx_stats stats = {\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2653-\t\t.mac_time = jiffies,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2715-\t\t\tif (sq-\u003edrv[i].frame_size \u003c\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2716:\t\t\t\t sizeof(struct libipw_hdr_3addr) ||\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2717-\t\t\t sq-\u003edrv[i].frame_size \u003e IPW_RX_NIC_BUFFER_LENGTH)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2720-\t\t\tcase IEEE80211_FTYPE_MGMT:\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2721:\t\t\t\tlibipw_rx_mgt(priv-\u003eieee,\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2722-\t\t\t\t\t\t \u0026u-\u003erx_data.header, \u0026stats);\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=2791=static int __ipw2100_tx_process(struct ipw2100_priv *priv)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2913-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:2914:\t\tlibipw_txb_free(packet-\u003einfo.d_struct.txb);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-2915-\t\tpacket-\u003einfo.d_struct.txb = NULL;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=3049=static void ipw2100_tx_send_data(struct ipw2100_priv *priv)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-3057-\tstruct ipw2100_data_header *ipw_hdr;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:3058:\tstruct libipw_hdr_3addr *hdr;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-3059-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-3091-\t\tipw_hdr = packet-\u003einfo.d_struct.data;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:3092:\t\thdr = (struct libipw_hdr_3addr *)packet-\u003einfo.d_struct.txb-\u003e\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-3093-\t\t fragments[0]-\u003edata;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=3313=static irqreturn_t ipw2100_interrupt(int irq, void *data)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-3362-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:3363:static netdev_tx_t ipw2100_tx(struct libipw_txb *txb,\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-3364-\t\t\t struct net_device *dev, int pri)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-3365-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:3366:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-3367-\tstruct list_head *element;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=4454=static void ipw2100_tx_initialize(struct ipw2100_priv *priv)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-4477-\t\tif (priv-\u003etx_buffers[i].info.d_struct.txb) {\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:4478:\t\t\tlibipw_txb_free(priv-\u003etx_buffers[i].info.d_struct.\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-4479-\t\t\t\t\t txb);\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=4504=static void ipw2100_tx_free(struct ipw2100_priv *priv)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-4516-\t\tif (priv-\u003etx_buffers[i].info.d_struct.txb) {\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:4517:\t\t\tlibipw_txb_free(priv-\u003etx_buffers[i].info.d_struct.\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-4518-\t\t\t\t\t txb);\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5543=static void shim__set_security(struct net_device *dev,\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5544:\t\t\t struct libipw_security *sec)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5545-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5546:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5547-\tint i;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5732=static int ipw2100_set_address(struct net_device *dev, void *p)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5733-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5734:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5735-\tstruct sockaddr *addr = p;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5760=static int ipw2100_open(struct net_device *dev)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5761-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5762:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5763-\tunsigned long flags;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5776=static int ipw2100_close(struct net_device *dev)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5777-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5778:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5779-\tunsigned long flags;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5798-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5799:\t\tlibipw_txb_free(packet-\u003einfo.d_struct.txb);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5800-\t\tpacket-\u003einfo.d_struct.txb = NULL;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5815=static void ipw2100_tx_timeout(struct net_device *dev, unsigned int txqueue)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5816-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5817:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5818-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5839=static int ipw2100_wpa_set_auth_algs(struct ipw2100_priv *priv, int value)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5841-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5842:\tstruct libipw_device *ieee = priv-\u003eieee;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5843:\tstruct libipw_security sec = {\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5844-\t\t.flags = SEC_AUTH_MODE,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5885=static void ipw_ethtool_get_drvinfo(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5887-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5888:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5889-\tchar fw_ver[64];\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5901=static u32 ipw2100_ethtool_get_link(struct net_device *dev)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5902-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5903:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5904-\treturn (priv-\u003estatus \u0026 STATUS_ASSOCIATED) ? 1 : 0;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5987=static const struct net_device_ops ipw2100_netdev_ops = {\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5989-\t.ndo_stop\t\t= ipw2100_close,\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5990:\t.ndo_start_xmit\t\t= libipw_xmit,\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5991-\t.ndo_tx_timeout\t\t= ipw2100_tx_timeout,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5995-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:5996:/* Look into using netdev destructor to shutdown libipw? */\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-5997-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=5998=static struct net_device *ipw2100_alloc_device(struct pci_dev *pci_dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6003-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6004:\tdev = alloc_libipw(sizeof(struct ipw2100_priv), 0);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6005-\tif (!dev)\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6006-\t\treturn NULL;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6007:\tpriv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6008-\tpriv-\u003eieee = netdev_priv(dev);\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6122=static int ipw2100_pci_init_one(struct pci_dev *pci_dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6161-\t\t \"Error calling pci_enable_device.\\n\");\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6162:\t\tfree_libipw(dev, 0);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6163-\t\tpci_iounmap(pci_dev, ioaddr);\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6166-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6167:\tpriv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6168-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6310-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6311:\t\tfree_libipw(dev, 0);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6312-\t}\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6321=static void ipw2100_pci_remove_one(struct pci_dev *pci_dev)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6359-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6360:\t/* wiphy_unregister needs to be here, before free_libipw */\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6361-\twiphy_unregister(priv-\u003eieee-\u003ewdev.wiphy);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6362-\tkfree(priv-\u003eieee-\u003ebg_band.channels);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6363:\tfree_libipw(dev, 0);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6364-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6557=static int ipw2100_wx_get_name(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6564-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6565:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6566-\tif (!(priv-\u003estatus \u0026 STATUS_ASSOCIATED))\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6575=static int ipw2100_wx_set_freq(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6578-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6579:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6580-\tstruct iw_freq *fwrq = \u0026wrqu-\u003efreq;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6621=static int ipw2100_wx_get_freq(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6628-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6629:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6630-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6646=static int ipw2100_wx_set_mode(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6649-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6650:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6651-\tint err = 0;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6685=static int ipw2100_wx_get_mode(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6692-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6693:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6694-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6720=static int ipw2100_wx_get_range(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6727-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6728:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6729-\tstruct iw_range *range = (struct iw_range *)extra;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6845=static int ipw2100_wx_set_wap(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6848-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6849:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6850-\tint err = 0;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6883=static int ipw2100_wx_get_wap(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6890-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6891:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6892-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6905=static int ipw2100_wx_set_essid(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6908-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6909:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6910-\tchar *essid = \"\";\t/* ANY */\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6954=static int ipw2100_wx_get_essid(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6961-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6962:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6963-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=6981=static int ipw2100_wx_set_nick(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6988-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:6989:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-6990-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7003=static int ipw2100_wx_get_nick(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7010-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7011:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7012-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7022=static int ipw2100_wx_set_rate(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7025-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7026:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7027-\tu32 target_rate = wrqu-\u003ebitrate.value;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7062=static int ipw2100_wx_get_rate(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7065-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7066:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7067-\tint val;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7114=static int ipw2100_wx_set_rts(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7117-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7118:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7119-\tint value, err;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7149=static int ipw2100_wx_get_rts(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7156-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7157:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7158-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7170=static int ipw2100_wx_set_txpow(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7173-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7174:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7175-\tint err = 0, value;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7211=static int ipw2100_wx_get_txpow(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7218-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7219:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7220-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7238=static int ipw2100_wx_set_frag(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7245-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7246:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7247-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7268=static int ipw2100_wx_get_frag(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7275-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7276:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7277-\twrqu-\u003efrag.value = priv-\u003efrag_threshold \u0026 ~FRAG_DISABLED;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7286=static int ipw2100_wx_set_retry(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7289-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7290:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7291-\tint err = 0;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7330=static int ipw2100_wx_get_retry(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7337-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7338:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7339-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7362=static int ipw2100_wx_set_scan(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7365-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7366:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7367-\tint err = 0;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7390=static int ipw2100_wx_get_scan(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7397-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7398:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7399:\treturn libipw_wx_get_scan(priv-\u003eieee, info, wrqu, extra);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7400-}\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7405=static int ipw2100_wx_set_encode(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7412-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7413:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7414:\treturn libipw_wx_set_encode(priv-\u003eieee, info, wrqu, key);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7415-}\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7417=static int ipw2100_wx_get_encode(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7424-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7425:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7426:\treturn libipw_wx_get_encode(priv-\u003eieee, info, wrqu, key);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7427-}\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7429=static int ipw2100_wx_set_power(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7432-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7433:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7434-\tint err = 0;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7474=static int ipw2100_wx_get_power(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7481-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7482:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7483-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7501=static int ipw2100_wx_set_genie(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7505-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7506:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7507:\tstruct libipw_device *ieee = priv-\u003eieee;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7508-\tu8 *buf;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7537=static int ipw2100_wx_get_genie(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7540-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7541:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7542:\tstruct libipw_device *ieee = priv-\u003eieee;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7543-\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7559=static int ipw2100_wx_set_auth(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7562-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7563:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7564:\tstruct libipw_device *ieee = priv-\u003eieee;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7565-\tstruct iw_param *param = \u0026wrqu-\u003eparam;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7566:\tstruct libipw_crypt_data *crypt;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7567-\tunsigned long flags;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7607-\t\t\t */\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7608:\t\t\tstruct libipw_security sec = {\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7609-\t\t\t\t.flags = SEC_ENABLED,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7652=static int ipw2100_wx_get_auth(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7655-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7656:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7657:\tstruct libipw_device *ieee = priv-\u003eieee;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7658:\tstruct libipw_crypt_data *crypt;\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7659-\tstruct iw_param *param = \u0026wrqu-\u003eparam;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7712=static int ipw2100_wx_set_encodeext(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7715-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7716:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7717:\treturn libipw_wx_set_encodeext(priv-\u003eieee, info, wrqu, extra);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7718-}\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7721=static int ipw2100_wx_get_encodeext(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7724-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7725:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7726:\treturn libipw_wx_get_encodeext(priv-\u003eieee, info, wrqu, extra);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7727-}\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7730=static int ipw2100_wx_set_mlme(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7733-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7734:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7735-\tstruct iw_mlme *mlme = (struct iw_mlme *)extra;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7758=static int ipw2100_wx_set_promisc(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7761-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7762:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7763-\tint *parms = (int *)extra;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7789=static int ipw2100_wx_reset(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7792-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7793:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7794-\tif (priv-\u003estatus \u0026 STATUS_INITIALIZED)\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7801=static int ipw2100_wx_set_powermode(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7804-{\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7805:\tstruct ipw2100_priv *priv = libipw_priv(dev);\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7806-\tint err = 0, mode = *(int *)extra;\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c=7825=static int ipw2100_wx_get_powermode(struct net_device *dev,\n--\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c-7832-\ndrivers/net/wireless/intel/ipw2x00/ipw2100.c:7833:\tstruct ipw2100_priv *priv = libipw_priv(dev);\n\n"
} |
| 7/2 | 2026/08/12 20:41 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 19997 output: 106 thoughts: 186 Thoughts: **My Assessment of libipw's Fuzzing Potential** Okay, so I'm looking at `libipw` and its relationship to the `ipw2100` and `ipw2200` drivers. I immediately recognize those as older Intel wireless drivers. My initial thought is, "Are there any other drivers leveraging `libipw` that might be relevant?" I need to confirm the scope of its use. Let's quickly check the `drivers/net/wireless/intel/ipw2x00/Makefile` to verify. Aha, the makefile clearly shows: * `obj-$(CONFIG_IPW2100) += ipw2100.o` * `obj-$(CONFIG_IPW2200) += ipw2200.o` * `obj-$(CONFIG_LIBIPW) += libipw.o` Perfect, so `libipw` is indeed *only* used by `ipw2100` and `ipw2200`. Since those are both physical hardware drivers and not virtualized, their code is essentially unreachable within a virtualized environment. Consequently, fuzzing these drivers, and by extension `libipw`, in a virtualized context is not a productive path for me to pursue. Time to move on. I will return WorthFuzzing=false. |
| 8/2 | 2026/08/12 20:41 | tool | set-results |
0mArgs:{
"EnableConfigs": [],
"FocusSymbols": [],
"Reasoning": "The patch modifies the ipw2100 and ipw2200 drivers, which are for physical Intel PRO/Wireless 2100 and 2200 mini-PCI cards. These devices are not emulated in standard QEMU or other virtualized environments, meaning the modified packet processing code paths cannot be reached or fuzzed.",
"WorthFuzzing": false
}Results: {
"EnableConfigs": null,
"FocusSymbols": [],
"Reasoning": "The patch modifies the ipw2100 and ipw2200 drivers, which are for physical Intel PRO/Wireless 2100 and 2200 mini-PCI cards. These devices are not emulated in standard QEMU or other virtualized environments, meaning the modified packet processing code paths cannot be reached or fuzzed.",
"WorthFuzzing": false
} |
| 9/1 | 2026/08/12 20:41 | 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) |
|---|