| Seq | Timestamp | Type | Name | Duration |
|---|---|---|---|---|
| 0/0 | 2026/07/22 17:52 | flow | patch-triage |
0mArgs:null Results: {
"EnableConfigs": [
"MAC80211"
],
"FocusSymbols": [
"sta_apply_auth_flags",
"sta_apply_parameters",
"ieee80211_add_station",
"ieee80211_change_station"
],
"Reasoning": "The patch adds a validation check in `sta_apply_auth_flags` to prevent an invalid state when rate control is not initialized for non-MLD interfaces. This is reachable via nl80211 commands (e.g., NEW_STATION, SET_STATION) and modifies core mac80211 logic.",
"WorthFuzzing": true
} |
| 1/1 | 2026/07/22 17:52 | action | read-patch-diff |
0mArgs:null Results: {
"PatchDiff": "commit b73374df3843a8398ea24518a1331760268a950b\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate: Wed Jul 22 17:52:18 2026 +0000\n\n syz-cluster: applied patch under review\n\ndiff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c\nindex 3b58af59f7e429..830c9fc95df228 100644\n--- a/net/mac80211/cfg.c\n+++ b/net/mac80211/cfg.c\n@@ -2148,8 +2148,13 @@ static int sta_apply_auth_flags(struct ieee80211_local *local,\n \t\t * well. Some drivers require rate control initialized\n \t\t * before drv_sta_state() is called.\n \t\t */\n-\t\tif (!test_sta_flag(sta, WLAN_STA_RATE_CONTROL))\n+\t\tif (!test_sta_flag(sta, WLAN_STA_RATE_CONTROL)) {\n+\t\t\tif (!ieee80211_vif_is_mld(\u0026sta-\u003esdata-\u003evif) \u0026\u0026\n+\t\t\t !rcu_access_pointer(sta-\u003esdata-\u003evif.bss_conf.chanctx_conf))\n+\t\t\t\treturn -EINVAL;\n+\n \t\t\trate_control_rate_init_all_links(sta);\n+\t\t}\n \n \t\tret = sta_info_move_state(sta, IEEE80211_STA_ASSOC);\n \t\tif (ret)\n"
} |
| 2/1 | 2026/07/22 17:52 | agent | patch-evaluator |
0mModel:best-expensive Args: null Results: {
"EnableConfigs": [
"MAC80211"
],
"FocusSymbols": [
"sta_apply_auth_flags",
"sta_apply_parameters",
"ieee80211_add_station",
"ieee80211_change_station"
],
"Reasoning": "The patch adds a validation check in `sta_apply_auth_flags` to prevent an invalid state when rate control is not initialized for non-MLD interfaces. This is reachable via nl80211 commands (e.g., NEW_STATION, SET_STATION) and modifies core mac80211 logic.",
"WorthFuzzing": true
}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 b73374df3843a8398ea24518a1331760268a950b
Author: syz-cluster <triage@syzkaller.com>
Date: Wed Jul 22 17:52:18 2026 +0000
syz-cluster: applied patch under review
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 3b58af59f7e429..830c9fc95df228 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2148,8 +2148,13 @@ static int sta_apply_auth_flags(struct ieee80211_local *local,
* well. Some drivers require rate control initialized
* before drv_sta_state() is called.
*/
- if (!test_sta_flag(sta, WLAN_STA_RATE_CONTROL))
+ if (!test_sta_flag(sta, WLAN_STA_RATE_CONTROL)) {
+ if (!ieee80211_vif_is_mld(&sta->sdata->vif) &&
+ !rcu_access_pointer(sta->sdata->vif.bss_conf.chanctx_conf))
+ return -EINVAL;
+
rate_control_rate_init_all_links(sta);
+ }
ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC);
if (ret)
|
| 3/2 | 2026/07/22 17:52 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 2028 output: 39 thoughts: 217 Thoughts: **Analyzing a Vulnerability in `net/mac80211`** Okay, so I'm looking at this patch in `net/mac80211/cfg.c`. It seems they've added a check within the `sta_apply_auth_flags` function. Specifically, it's checking the `WLAN_STA_RATE_CONTROL` flag on a station (`sta`). My first instinct is to understand the context. `mac80211` is notoriously well-fuzzed, particularly with `mac80211_hwsim`, so any changes here immediately grab my attention. The new code block is interesting: if the `WLAN_STA_RATE_CONTROL` flag isn't set, then a check is performed. If the Virtual Interface (`vif`) isn't a Mesh Local Decision (MLD) interface, and there is no channel context configuration attached, then it returns `-EINVAL`. Otherwise, it proceeds to initialize the rate control via `rate_control_rate_init_all_links`. My immediate question is: what scenarios trigger this specific code path? And what are the implications of the `-EINVAL` return? We need to dig into the surrounding code in `sta_apply_auth_flags` to fully understand what's happening and how this condition can be met. I'm going to carefully analyze the call sites and related data structures to get a complete picture. This `-EINVAL` could be a vulnerability mitigation, or it could potentially introduce unexpected behavior. The initialization of the rate control is obviously an important aspect that I'll need to explore as well. |
| 4/2 | 2026/07/22 17:52 | tool | grepper |
0mArgs:{
"Expression": "sta_apply_auth_flags",
"PathPrefix": "net/mac80211/cfg.c"
}Results: {
"Output": "net/mac80211/cfg.c=2010=static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev,\n--\nnet/mac80211/cfg.c-2128-\nnet/mac80211/cfg.c:2129:static int sta_apply_auth_flags(struct ieee80211_local *local,\nnet/mac80211/cfg.c-2130-\t\t\t\tstruct sta_info *sta,\n--\nnet/mac80211/cfg.c=2454=static int sta_apply_parameters(struct ieee80211_local *local,\n--\nnet/mac80211/cfg.c-2499-\t (set \u0026 BIT(NL80211_STA_FLAG_ASSOCIATED)))) {\nnet/mac80211/cfg.c:2500:\t\tret = sta_apply_auth_flags(local, sta, mask, set);\nnet/mac80211/cfg.c-2501-\t\tif (ret)\n--\nnet/mac80211/cfg.c-2622-\t set \u0026 BIT(NL80211_STA_FLAG_ASSOCIATED)) {\nnet/mac80211/cfg.c:2623:\t\tret = sta_apply_auth_flags(local, sta, mask, set);\nnet/mac80211/cfg.c-2624-\t\tif (ret)\n"
} |
| 5/2 | 2026/07/22 17:52 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 3032 output: 36 thoughts: 72 Thoughts: **Analyzing the `sta_apply_auth_flags` Function** Okay, so I see that `sta_apply_auth_flags` is a key function, and it's being called from at least two critical locations: `sta_apply_parameters` and, likely, either `ieee80211_add_station` or `ieee80211_change_station`. My immediate thought is, let's drill down into the context surrounding those calls. I need to understand *why* `sta_apply_auth_flags` is being invoked where it is. I'm especially interested in the different paths leading into it. Is it being used to set up initial authentication parameters, modify existing ones, or maybe both? This context is crucial to grasping the intended behavior. I need to figure out what data is being passed in, the state of the system when it's called, and what the function is actually *doing* to the station's authorization flags. I suspect this will illuminate some key aspects of how authentication is handled in this driver. |
| 6/2 | 2026/07/22 17:52 | tool | grepper |
0mArgs:{
"Expression": "sta_apply_auth_flags",
"PathPrefix": "net/mac80211/"
}Results: {
"Output": "net/mac80211/cfg.c=2010=static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev,\n--\nnet/mac80211/cfg.c-2128-\nnet/mac80211/cfg.c:2129:static int sta_apply_auth_flags(struct ieee80211_local *local,\nnet/mac80211/cfg.c-2130-\t\t\t\tstruct sta_info *sta,\n--\nnet/mac80211/cfg.c=2454=static int sta_apply_parameters(struct ieee80211_local *local,\n--\nnet/mac80211/cfg.c-2499-\t (set \u0026 BIT(NL80211_STA_FLAG_ASSOCIATED)))) {\nnet/mac80211/cfg.c:2500:\t\tret = sta_apply_auth_flags(local, sta, mask, set);\nnet/mac80211/cfg.c-2501-\t\tif (ret)\n--\nnet/mac80211/cfg.c-2622-\t set \u0026 BIT(NL80211_STA_FLAG_ASSOCIATED)) {\nnet/mac80211/cfg.c:2623:\t\tret = sta_apply_auth_flags(local, sta, mask, set);\nnet/mac80211/cfg.c-2624-\t\tif (ret)\n"
} |
| 7/2 | 2026/07/22 17:52 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 3767 output: 37 thoughts: 29 Thoughts: Here's my analysis of the situation: **Investigating a Specific Function in mac80211 Configuration** Okay, so I need to dive into the `net/mac80211/cfg.c` file. Specifically, I'm interested in the function defined at line 2622. Given my understanding of mac80211's architecture, pinpointing a specific line number usually suggests I'm looking for a particular configuration setting, a function call related to a specific feature's configuration, or perhaps a section dealing with a particular regulatory domain or hardware interface setup. I'm likely trying to debug a configuration issue, understand a behavior, or maybe even identify a potential optimization or a security vulnerability that may have arisen. Let's see what that function is about. |
| 8/2 | 2026/07/22 17:52 | tool | grepper |
0mArgs:{
"Expression": "^static int.*sta",
"PathPrefix": "net/mac80211/cfg.c"
}Results: {
"Output": "net/mac80211/cfg.c=259=static int ieee80211_change_iface(struct wiphy *wiphy,\n--\nnet/mac80211/cfg.c-305-\nnet/mac80211/cfg.c:306:static int ieee80211_start_p2p_device(struct wiphy *wiphy,\nnet/mac80211/cfg.c-307-\t\t\t\t struct wireless_dev *wdev)\n--\nnet/mac80211/cfg.c=351=static int ieee80211_nan_conf_copy(struct cfg80211_nan_conf *dst,\n--\nnet/mac80211/cfg.c-408-\nnet/mac80211/cfg.c:409:static int ieee80211_start_nan(struct wiphy *wiphy,\nnet/mac80211/cfg.c-410-\t\t\t struct wireless_dev *wdev,\n--\nnet/mac80211/cfg.c=967=void sta_set_rate_info_tx(struct sta_info *sta,\n--\nnet/mac80211/cfg.c-998-\nnet/mac80211/cfg.c:999:static int ieee80211_dump_station(struct wiphy *wiphy, struct wireless_dev *wdev,\nnet/mac80211/cfg.c-1000-\t\t\t\t int idx, u8 *mac, struct station_info *sinfo)\n--\nnet/mac80211/cfg.c=1026=static int ieee80211_dump_survey(struct wiphy *wiphy, struct net_device *dev,\n--\nnet/mac80211/cfg.c-1033-\nnet/mac80211/cfg.c:1034:static int ieee80211_get_station(struct wiphy *wiphy,\nnet/mac80211/cfg.c-1035-\t\t\t\t struct wireless_dev *wdev,\n--\nnet/mac80211/cfg.c=1606=static u8 ieee80211_num_beaconing_links(struct ieee80211_sub_if_data *sdata)\n--\nnet/mac80211/cfg.c-1629-\nnet/mac80211/cfg.c:1630:static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,\nnet/mac80211/cfg.c-1631-\t\t\t struct cfg80211_ap_settings *params)\n--\nnet/mac80211/cfg.c=2010=static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev,\n--\nnet/mac80211/cfg.c-2128-\nnet/mac80211/cfg.c:2129:static int sta_apply_auth_flags(struct ieee80211_local *local,\nnet/mac80211/cfg.c-2130-\t\t\t\tstruct sta_info *sta,\n--\nnet/mac80211/cfg.c=2259=enum sta_link_apply_mode {\n--\nnet/mac80211/cfg.c-2264-\nnet/mac80211/cfg.c:2265:static int sta_link_apply_parameters(struct ieee80211_local *local,\nnet/mac80211/cfg.c-2266-\t\t\t\t struct sta_info *sta,\n--\nnet/mac80211/cfg.c-2453-\nnet/mac80211/cfg.c:2454:static int sta_apply_parameters(struct ieee80211_local *local,\nnet/mac80211/cfg.c-2455-\t\t\t\tstruct sta_info *sta,\n--\nnet/mac80211/cfg.c-2634-\nnet/mac80211/cfg.c:2635:static int ieee80211_add_station(struct wiphy *wiphy, struct wireless_dev *wdev,\nnet/mac80211/cfg.c-2636-\t\t\t\t const u8 *mac,\n--\nnet/mac80211/cfg.c-2714-\nnet/mac80211/cfg.c:2715:static int ieee80211_del_station(struct wiphy *wiphy, struct wireless_dev *wdev,\nnet/mac80211/cfg.c-2716-\t\t\t\t struct station_del_parameters *params)\n--\nnet/mac80211/cfg.c-2728-\nnet/mac80211/cfg.c:2729:static int ieee80211_set_sta_4addr(struct ieee80211_local *local,\nnet/mac80211/cfg.c-2730-\t\t\t\t struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/cfg.c-2787-\nnet/mac80211/cfg.c:2788:static int ieee80211_change_station(struct wiphy *wiphy,\nnet/mac80211/cfg.c-2789-\t\t\t\t struct wireless_dev *wdev, const u8 *mac,\n--\nnet/mac80211/cfg.c=4174=static bool ieee80211_is_scan_ongoing(struct wiphy *wiphy,\n--\nnet/mac80211/cfg.c-4210-\nnet/mac80211/cfg.c:4211:static int ieee80211_start_radar_detection(struct wiphy *wiphy,\nnet/mac80211/cfg.c-4212-\t\t\t\t\t struct net_device *dev,\n--\nnet/mac80211/cfg.c=5335=void ieee80211_fill_txq_stats(struct cfg80211_txq_stats *txqstats,\n--\nnet/mac80211/cfg.c-5383-\nnet/mac80211/cfg.c:5384:static int ieee80211_get_txq_stats(struct wiphy *wiphy,\nnet/mac80211/cfg.c-5385-\t\t\t\t struct wireless_dev *wdev,\n--\nnet/mac80211/cfg.c=5898=ieee80211_del_link_station(struct wiphy *wiphy, struct net_device *dev,\n--\nnet/mac80211/cfg.c-5921-\nnet/mac80211/cfg.c:5922:static int ieee80211_set_hw_timestamp(struct wiphy *wiphy,\nnet/mac80211/cfg.c-5923-\t\t\t\t struct net_device *dev,\n"
} |
| 9/2 | 2026/07/22 17:52 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 5891 output: 38 thoughts: 220 Thoughts: **Analyzing the Authentication Flags Patch** Okay, so I'm looking at this patch that tweaks `sta_apply_auth_flags`. I see that this function's called from `sta_apply_parameters`, and also from `ieee80211_add_station` and `ieee80211_change_station`. Right away, that raises a flag: those latter two functions are directly exposed to userspace through nl80211 commands – specifically, `NL80211_CMD_NEW_STATION` and `NL80211_CMD_SET_STATION`. Good. The meat of the patch adds a check. Specifically, it's checking `ieee80211_vif_is_mld(&sta->sdata->vif)` and `rcu_access_pointer(sta->sdata->vif.bss_conf.chanctx_conf)`. Functionally, this looks sound. It's clearly reachable, and I'm confident I can trigger it using mac80211_hwsim. That's a solid start. Now, let's look at the bigger picture. I need to know what configuration options are involved. `MAC80211` is obviously a given. No need to overthink that one. But, is there anything else that it touches? Let's dive into the `net/mac80211/Kconfig` file and take a look. Need to know if there's any other dependency. |
| 10/2 | 2026/07/22 17:52 | tool | grepper |
0mArgs:{
"Expression": "config MAC80211",
"PathPrefix": "net/mac80211/Kconfig"
}Results: {
"Output": "net/mac80211/Kconfig-1-# SPDX-License-Identifier: GPL-2.0-only\nnet/mac80211/Kconfig:2:config MAC80211\nnet/mac80211/Kconfig-3-\ttristate \"Generic IEEE 802.11 Networking Stack (mac80211)\"\n--\nnet/mac80211/Kconfig=19=if MAC80211 != n\nnet/mac80211/Kconfig-20-\nnet/mac80211/Kconfig:21:config MAC80211_HAS_RC\nnet/mac80211/Kconfig-22-\tbool\nnet/mac80211/Kconfig-23-\nnet/mac80211/Kconfig:24:config MAC80211_RC_MINSTREL\nnet/mac80211/Kconfig-25-\tbool \"Minstrel\" if EXPERT\n--\nnet/mac80211/Kconfig=31=choice\n--\nnet/mac80211/Kconfig-40-\nnet/mac80211/Kconfig:41:config MAC80211_RC_DEFAULT_MINSTREL\nnet/mac80211/Kconfig-42-\tbool \"Minstrel\"\n--\nnet/mac80211/Kconfig=48=endchoice\nnet/mac80211/Kconfig-49-\nnet/mac80211/Kconfig:50:config MAC80211_RC_DEFAULT\nnet/mac80211/Kconfig-51-\tstring\n--\nnet/mac80211/Kconfig=57=comment \"Some wireless drivers require a rate control algorithm\"\n--\nnet/mac80211/Kconfig-59-\nnet/mac80211/Kconfig:60:config MAC80211_KUNIT_TEST\nnet/mac80211/Kconfig-61-\ttristate \"KUnit tests for mac80211\" if !KUNIT_ALL_TESTS\n--\nnet/mac80211/Kconfig-69-\nnet/mac80211/Kconfig:70:config MAC80211_MESH\nnet/mac80211/Kconfig-71-\tbool \"Enable mac80211 mesh networking support\"\n--\nnet/mac80211/Kconfig-78-\nnet/mac80211/Kconfig:79:config MAC80211_LEDS\nnet/mac80211/Kconfig-80-\tbool \"Enable LED triggers\"\n--\nnet/mac80211/Kconfig-87-\nnet/mac80211/Kconfig:88:config MAC80211_DEBUGFS\nnet/mac80211/Kconfig-89-\tbool \"Export mac80211 internals in DebugFS\"\n--\nnet/mac80211/Kconfig-96-\nnet/mac80211/Kconfig:97:config MAC80211_MESSAGE_TRACING\nnet/mac80211/Kconfig-98-\tbool \"Trace all mac80211 debug messages\"\n--\nnet/mac80211/Kconfig-109-\nnet/mac80211/Kconfig:110:menuconfig MAC80211_DEBUG_MENU\nnet/mac80211/Kconfig-111-\tbool \"Select mac80211 debugging features\"\n--\nnet/mac80211/Kconfig-115-\nnet/mac80211/Kconfig:116:config MAC80211_NOINLINE\nnet/mac80211/Kconfig-117-\tbool \"Do not inline TX/RX handlers\"\n--\nnet/mac80211/Kconfig-131-\nnet/mac80211/Kconfig:132:config MAC80211_VERBOSE_DEBUG\nnet/mac80211/Kconfig-133-\tbool \"Verbose debugging output\"\n--\nnet/mac80211/Kconfig-142-\nnet/mac80211/Kconfig:143:config MAC80211_MLME_DEBUG\nnet/mac80211/Kconfig-144-\tbool \"Verbose managed MLME output\"\n--\nnet/mac80211/Kconfig-153-\nnet/mac80211/Kconfig:154:config MAC80211_STA_DEBUG\nnet/mac80211/Kconfig-155-\tbool \"Verbose station debugging\"\n--\nnet/mac80211/Kconfig-162-\nnet/mac80211/Kconfig:163:config MAC80211_HT_DEBUG\nnet/mac80211/Kconfig-164-\tbool \"Verbose HT debugging\"\n--\nnet/mac80211/Kconfig-174-\nnet/mac80211/Kconfig:175:config MAC80211_OCB_DEBUG\nnet/mac80211/Kconfig-176-\tbool \"Verbose OCB debugging\"\n--\nnet/mac80211/Kconfig-185-\nnet/mac80211/Kconfig:186:config MAC80211_IBSS_DEBUG\nnet/mac80211/Kconfig-187-\tbool \"Verbose IBSS debugging\"\n--\nnet/mac80211/Kconfig-196-\nnet/mac80211/Kconfig:197:config MAC80211_PS_DEBUG\nnet/mac80211/Kconfig-198-\tbool \"Verbose powersave mode debugging\"\n--\nnet/mac80211/Kconfig-208-\nnet/mac80211/Kconfig:209:config MAC80211_MPL_DEBUG\nnet/mac80211/Kconfig-210-\tbool \"Verbose mesh peer link debugging\"\n--\nnet/mac80211/Kconfig-221-\nnet/mac80211/Kconfig:222:config MAC80211_MPATH_DEBUG\nnet/mac80211/Kconfig-223-\tbool \"Verbose mesh path debugging\"\n--\nnet/mac80211/Kconfig-234-\nnet/mac80211/Kconfig:235:config MAC80211_MHWMP_DEBUG\nnet/mac80211/Kconfig-236-\tbool \"Verbose mesh HWMP routing debugging\"\n--\nnet/mac80211/Kconfig-247-\nnet/mac80211/Kconfig:248:config MAC80211_MESH_SYNC_DEBUG\nnet/mac80211/Kconfig-249-\tbool \"Verbose mesh synchronization debugging\"\n--\nnet/mac80211/Kconfig-258-\nnet/mac80211/Kconfig:259:config MAC80211_MESH_CSA_DEBUG\nnet/mac80211/Kconfig-260-\tbool \"Verbose mesh channel switch debugging\"\n--\nnet/mac80211/Kconfig-269-\nnet/mac80211/Kconfig:270:config MAC80211_MESH_PS_DEBUG\nnet/mac80211/Kconfig-271-\tbool \"Verbose mesh powersave debugging\"\n--\nnet/mac80211/Kconfig-280-\nnet/mac80211/Kconfig:281:config MAC80211_TDLS_DEBUG\nnet/mac80211/Kconfig-282-\tbool \"Verbose TDLS debugging\"\n--\nnet/mac80211/Kconfig-292-\nnet/mac80211/Kconfig:293:config MAC80211_DEBUG_COUNTERS\nnet/mac80211/Kconfig-294-\tbool \"Extra statistics for TX/RX debugging\"\n--\nnet/mac80211/Kconfig-307-\nnet/mac80211/Kconfig:308:config MAC80211_STA_HASH_MAX_SIZE\nnet/mac80211/Kconfig-309-\tint \"Station hash table maximum size\" if MAC80211_DEBUG_MENU\n"
} |
| 11/2 | 2026/07/22 17:52 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 8665 output: 44 thoughts: 64 Thoughts: Okay, here's my take on those thoughts, framed as my own: **Analyzing the MAC80211 Context** Right, MAC80211 should be sufficient for the basic understanding, I think. Let's dig in a bit further, though. We want to be thorough. The code's using `ieee80211_vif_is_mld(&sta->sdata->vif)`. I need to figure out what, if any, specific configuration or implications that particular function call brings into play within this context. That function call is key here. I'll need to check the relevant documentation or source to see if we require special configurations. |
| 12/2 | 2026/07/22 17:52 | tool | grepper |
0mArgs:{
"Expression": "ieee80211_vif_is_mld",
"PathPrefix": "net/mac80211/"
}Results: {
"Output": "net/mac80211/ap.c=51=ieee80211_rx_eml_op_mode_notif(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/ap.c-68-\nnet/mac80211/ap.c:69:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/ap.c-70-\t\treturn;\n--\nnet/mac80211/cfg.c=27=ieee80211_link_or_deflink(struct ieee80211_sub_if_data *sdata, int link_id,\n--\nnet/mac80211/cfg.c-37-\t\t */\nnet/mac80211/cfg.c:38:\t\tif (require_valid \u0026\u0026 ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/cfg.c-39-\t\t\treturn ERR_PTR(-EINVAL);\n--\nnet/mac80211/cfg.c=2129=static int sta_apply_auth_flags(struct ieee80211_local *local,\n--\nnet/mac80211/cfg.c-2151-\t\tif (!test_sta_flag(sta, WLAN_STA_RATE_CONTROL)) {\nnet/mac80211/cfg.c:2152:\t\t\tif (!ieee80211_vif_is_mld(\u0026sta-\u003esdata-\u003evif) \u0026\u0026\nnet/mac80211/cfg.c-2153-\t\t\t !rcu_access_pointer(sta-\u003esdata-\u003evif.bss_conf.chanctx_conf))\n--\nnet/mac80211/cfg.c=3911=int __ieee80211_request_smps_mgd(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/cfg.c-3973-\t\t\t\t\t ap, ap,\nnet/mac80211/cfg.c:3974:\t\t\t\t\t ieee80211_vif_is_mld(\u0026sdata-\u003evif) ?\nnet/mac80211/cfg.c-3975-\t\t\t\t\t link-\u003elink_id : -1);\n--\nnet/mac80211/cfg.c=4957=static int ieee80211_probe_client(struct wiphy *wiphy, struct net_device *dev,\n--\nnet/mac80211/cfg.c-4986-\nnet/mac80211/cfg.c:4987:\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/cfg.c-4988-\t\tif (sta-\u003esta.mlo) {\n--\nnet/mac80211/cfg.c-5041-\tmemcpy(nullfunc-\u003eaddr1, sta-\u003esta.addr, ETH_ALEN);\nnet/mac80211/cfg.c:5042:\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif) \u0026\u0026 !sta-\u003esta.mlo) {\nnet/mac80211/cfg.c-5043-\t\tmemcpy(nullfunc-\u003eaddr2, conf-\u003eaddr, ETH_ALEN);\n--\nnet/mac80211/debug.h=125=do {\t\t\t\t\t\t\t\t\t\\\n--\nnet/mac80211/debug.h-139-\tdo {\t\t\t\t\t\t\t\t\\\nnet/mac80211/debug.h:140:\t\tif (ieee80211_vif_is_mld(\u0026(link)-\u003esdata-\u003evif)) \\\nnet/mac80211/debug.h-141-\t\t\t_sdata_info((link)-\u003esdata, \"[link %d] \" fmt,\t\\\n--\nnet/mac80211/debug.h-148-\tdo {\t\t\t\t\t\t\t\t\\\nnet/mac80211/debug.h:149:\t\tif (ieee80211_vif_is_mld(\u0026(link)-\u003esdata-\u003evif)) \\\nnet/mac80211/debug.h-150-\t\t\t_sdata_err((link)-\u003esdata, \"[link %d] \" fmt,\t\\\n--\nnet/mac80211/debug.h-159-\tdo {\t\t\t\t\t\t\t\t\\\nnet/mac80211/debug.h:160:\t\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif))\t\t\t\\\nnet/mac80211/debug.h-161-\t\t\t_sdata_info(sdata, \"[link %d] \" fmt, link_id,\t\\\n--\nnet/mac80211/debug.h-167-\tdo {\t\t\t\t\t\t\t\t\\\nnet/mac80211/debug.h:168:\t\tif (ieee80211_vif_is_mld(\u0026(sdata)-\u003evif))\t\t\\\nnet/mac80211/debug.h-169-\t\t\t_sdata_dbg(print, sdata, \"[link %d] \" fmt,\t\\\n--\nnet/mac80211/ieee80211_i.h=1739=ieee80211_get_sband(struct ieee80211_sub_if_data *sdata)\n--\nnet/mac80211/ieee80211_i.h-1744-\nnet/mac80211/ieee80211_i.h:1745:\tWARN_ON(ieee80211_vif_is_mld(\u0026sdata-\u003evif));\nnet/mac80211/ieee80211_i.h-1746-\n--\nnet/mac80211/iface.c=479=static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, bool going_down)\n--\nnet/mac80211/iface.c-562-\nnet/mac80211/iface.c:563:\tWARN(ieee80211_vif_is_mld(\u0026sdata-\u003evif),\nnet/mac80211/iface.c-564-\t \"destroying interface with valid links 0x%04x\\n\",\n--\nnet/mac80211/iface.c=1974=static int ieee80211_runtime_change_iftype(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/iface.c-1987-\t/* for now, don't support changing while links exist */\nnet/mac80211/iface.c:1988:\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/iface.c-1989-\t\treturn -EBUSY;\n--\nnet/mac80211/main.c=336=void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/main.c-342-\nnet/mac80211/main.c:343:\tWARN_ON_ONCE(ieee80211_vif_is_mld(\u0026sdata-\u003evif));\nnet/mac80211/main.c-344-\n--\nnet/mac80211/mlme.c=2414=ieee80211_assoc_add_ml_elem(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-2428-\nnet/mac80211/mlme.c:2429:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/mlme.c-2430-\t\treturn;\n--\nnet/mac80211/mlme.c=2582=static int ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)\n--\nnet/mac80211/mlme.c-2639-\nnet/mac80211/mlme.c:2640:\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/mlme.c-2641-\t\t/* consider the multi-link element with STA profile */\n--\nnet/mac80211/mlme.c=4394=static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-4414-\nnet/mac80211/mlme.c:4415:\t\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif) \u0026\u0026\nnet/mac80211/mlme.c-4416-\t\t !(ieee80211_vif_usable_links(\u0026sdata-\u003evif) \u0026 BIT(link_id)))\n--\nnet/mac80211/mlme.c-4436-\nnet/mac80211/mlme.c:4437:\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/mlme.c-4438-\t\tfor (link_id = 0;\n--\nnet/mac80211/mlme.c-4468-\t/* leave this here to not change ordering in non-MLO cases */\nnet/mac80211/mlme.c:4469:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/mlme.c-4470-\t\tieee80211_recalc_smps(sdata, \u0026sdata-\u003edeflink);\n--\nnet/mac80211/mlme.c=4476=static void ieee80211_ml_reconf_reset(struct ieee80211_sub_if_data *sdata)\n--\nnet/mac80211/mlme.c-4480-\nnet/mac80211/mlme.c:4481:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif) ||\nnet/mac80211/mlme.c-4482-\t !(sdata-\u003eu.mgd.reconf.added_links |\n--\nnet/mac80211/mlme.c=4508=static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-4632-\t/* finally reset all BSS / config parameters */\nnet/mac80211/mlme.c:4633:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/mlme.c-4634-\t\tchanged |= ieee80211_reset_erp_info(sdata);\n--\nnet/mac80211/mlme.c-4657-\t sizeof(sdata-\u003evif.bss_conf.mu_group.position));\nnet/mac80211/mlme.c:4658:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/mlme.c-4659-\t\tchanged |= BSS_CHANGED_MU_GROUPS;\n--\nnet/mac80211/mlme.c-4671-\tsdata-\u003evif.bss_conf.qos = false;\nnet/mac80211/mlme.c:4672:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/mlme.c-4673-\t\tchanged |= BSS_CHANGED_QOS;\n--\nnet/mac80211/mlme.c=4972=struct sk_buff *ieee80211_ap_probereq_get(struct ieee80211_hw *hw,\n--\nnet/mac80211/mlme.c-4984-\tif (WARN_ON(sdata-\u003evif.type != NL80211_IFTYPE_STATION ||\nnet/mac80211/mlme.c:4985:\t\t ieee80211_vif_is_mld(\u0026sdata-\u003evif)))\nnet/mac80211/mlme.c-4986-\t\treturn NULL;\n--\nnet/mac80211/mlme.c=5300=static void ieee80211_destroy_assoc_data(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-5335-\nnet/mac80211/mlme.c:5336:\t\t\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/mlme.c-5337-\t\t\t\tdata.ap_mld_addr = assoc_data-\u003eap_addr;\n--\nnet/mac80211/mlme.c=6924=static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-6948-\nnet/mac80211/mlme.c:6949:\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/mlme.c-6950-\t\tif (!elems-\u003eml_basic)\n--\nnet/mac80211/mlme.c-7010-\nnet/mac80211/mlme.c:7011:\t\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/mlme.c-7012-\t\t\tlink_info(link,\n--\nnet/mac80211/mlme.c=7135=static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-7272-\nnet/mac80211/mlme.c:7273:\t\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/mlme.c-7274-\t\t\tstruct ieee80211_mle_basic_common_info *common;\n--\nnet/mac80211/mlme.c-7339-\nnet/mac80211/mlme.c:7340:\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/mlme.c-7341-\t\tether_addr_copy(ap_mld_addr, sdata-\u003evif.cfg.ap_addr);\n--\nnet/mac80211/mlme.c=7631=static void ieee80211_ml_reconfiguration(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-7639-\nnet/mac80211/mlme.c:7640:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif) || !elems-\u003eml_reconf)\nnet/mac80211/mlme.c-7641-\t\treturn;\n--\nnet/mac80211/mlme.c=7801=static void ieee80211_process_adv_ttlm(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-7807-\nnet/mac80211/mlme.c:7808:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/mlme.c-7809-\t\treturn;\n--\nnet/mac80211/mlme.c=8056=static void ieee80211_rx_mgmt_beacon(struct ieee80211_link_data *link,\n--\nnet/mac80211/mlme.c-8117-\tif (ifmgd-\u003eassoc_data \u0026\u0026 ifmgd-\u003eassoc_data-\u003eneed_beacon \u0026\u0026\nnet/mac80211/mlme.c:8118:\t !WARN_ON(ieee80211_vif_is_mld(\u0026sdata-\u003evif)) \u0026\u0026\nnet/mac80211/mlme.c-8119-\t ieee80211_rx_our_beacon(bssid, ifmgd-\u003eassoc_data-\u003elink[0].bss)) {\n--\nnet/mac80211/mlme.c=8541=int ieee80211_req_neg_ttlm(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-8546-\nnet/mac80211/mlme.c:8547:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif) ||\nnet/mac80211/mlme.c-8548-\t !(sdata-\u003evif.cfg.mld_capa_op \u0026\n--\nnet/mac80211/mlme.c=8709=static void ieee80211_process_neg_ttlm_req(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-8720-\nnet/mac80211/mlme.c:8721:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/mlme.c-8722-\t\treturn;\n--\nnet/mac80211/mlme.c=8773=static void ieee80211_process_neg_ttlm_res(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-8776-{\nnet/mac80211/mlme.c:8777:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif) ||\nnet/mac80211/mlme.c-8778-\t mgmt-\u003eu.action.ttlm_res.dialog_token != sdata-\u003eu.mgd.dialog_token_alloc)\n--\nnet/mac80211/mlme.c=8895=static int ieee80211_auth(struct ieee80211_sub_if_data *sdata)\n--\nnet/mac80211/mlme.c-8912-\tif (auth_data-\u003ealgorithm == WLAN_AUTH_EPPKE \u0026\u0026\nnet/mac80211/mlme.c:8913:\t ieee80211_vif_is_mld(\u0026sdata-\u003evif) \u0026\u0026\nnet/mac80211/mlme.c-8914-\t !cfg80211_find_ext_elem(WLAN_EID_EXT_EHT_MULTI_LINK,\n--\nnet/mac80211/mlme.c=9842=int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-10040- err_clear:\nnet/mac80211/mlme.c:10041:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/mlme.c-10042-\t\teth_zero_addr(sdata-\u003edeflink.u.mgd.bssid);\n--\nnet/mac80211/mlme.c=10868=ieee80211_process_ml_reconf_resp(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-10884-\nnet/mac80211/mlme.c:10885:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif) ||\nnet/mac80211/mlme.c-10886-\t len \u003c IEEE80211_MIN_ACTION_SIZE(ml_reconf_resp) ||\n--\nnet/mac80211/mlme.c=11330=int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-11341-\nnet/mac80211/mlme.c:11342:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif) ||\nnet/mac80211/mlme.c-11343-\t !(sdata-\u003evif.cfg.mld_capa_op \u0026\n--\nnet/mac80211/mlme.c=11554=static bool ieee80211_mgd_epcs_supp(struct ieee80211_sub_if_data *sdata)\n--\nnet/mac80211/mlme.c-11560-\nnet/mac80211/mlme.c:11561:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/mlme.c-11562-\t\treturn false;\n--\nnet/mac80211/mlme.c=11628=static void ieee80211_ml_epcs(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-11636-\nnet/mac80211/mlme.c:11637:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif) || !elems-\u003eml_epcs)\nnet/mac80211/mlme.c-11638-\t\treturn;\n--\nnet/mac80211/mlme.c=11746=static void ieee80211_process_epcs_teardown(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/mlme.c-11749-{\nnet/mac80211/mlme.c:11750:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif) ||\nnet/mac80211/mlme.c-11751-\t !sdata-\u003eu.mgd.epcs.enabled)\n--\nnet/mac80211/rate.c=31=void rate_control_rate_init(struct link_sta_info *link_sta)\n--\nnet/mac80211/rate.c-44-\t/* SW rate control isn't supported with MLO right now */\nnet/mac80211/rate.c:45:\tif (WARN_ON(ieee80211_vif_is_mld(\u0026sta-\u003esdata-\u003evif)))\nnet/mac80211/rate.c-46-\t\treturn;\n--\nnet/mac80211/rx.c=1521=ieee80211_rx_h_check_dup(struct ieee80211_rx_data *rx)\n--\nnet/mac80211/rx.c-1550-\nnet/mac80211/rx.c:1551:\t\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif) ||\nnet/mac80211/rx.c-1552-\t\t sdata-\u003evif.type != NL80211_IFTYPE_STATION)\n--\nnet/mac80211/rx.c=2684=bool ieee80211_is_our_addr(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/rx.c-2692-\nnet/mac80211/rx.c:2693:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/rx.c-2694-\t\treturn false;\n--\nnet/mac80211/rx.c=4341=static bool ieee80211_rx_data_set_sta(struct ieee80211_rx_data *rx,\n--\nnet/mac80211/rx.c-4356-\tif (link_id \u003c 0) {\nnet/mac80211/rx.c:4357:\t\tif (ieee80211_vif_is_mld(\u0026rx-\u003esdata-\u003evif) \u0026\u0026\nnet/mac80211/rx.c-4358-\t\t sta \u0026\u0026 !sta-\u003esta.valid_links)\n--\nnet/mac80211/rx.c=5296=static bool ieee80211_rx_for_interface(struct ieee80211_rx_data *rx,\n--\nnet/mac80211/rx.c-5319-\t\t\tlink_id = status-\u003elink_id;\nnet/mac80211/rx.c:5320:\t\t} else if (ieee80211_vif_is_mld(\u0026rx-\u003esdata-\u003evif) \u0026\u0026\nnet/mac80211/rx.c-5321-\t\t\t status-\u003efreq) {\n--\nnet/mac80211/scan.c=168=ieee80211_bss_info_update(struct ieee80211_local *local,\n--\nnet/mac80211/scan.c-205-\t\t */\nnet/mac80211/scan.c:206:\t\tif (ieee80211_vif_is_mld(\u0026scan_sdata-\u003evif)) {\nnet/mac80211/scan.c-207-\t\t\tif (rx_status-\u003elink_valid) {\n--\nnet/mac80211/scan.c=731=static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/scan.c-745-\t */\nnet/mac80211/scan.c:746:\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif) \u0026\u0026 req-\u003etsf_report_link_id \u003e= 0 \u0026\u0026\nnet/mac80211/scan.c-747-\t !(sdata-\u003evif.active_links \u0026 BIT(req-\u003etsf_report_link_id)))\n--\nnet/mac80211/tx.c=820=ieee80211_tx_h_sequence(struct ieee80211_tx_data *tx)\n--\nnet/mac80211/tx.c-847-\tif (unlikely(is_multicast_ether_addr(hdr-\u003eaddr1) \u0026\u0026\nnet/mac80211/tx.c:848:\t\t ieee80211_vif_is_mld(info-\u003econtrol.vif) \u0026\u0026\nnet/mac80211/tx.c-849-\t\t info-\u003econtrol.vif-\u003etype == NL80211_IFTYPE_AP)) {\n--\nnet/mac80211/tx.c=2631=static struct sk_buff *ieee80211_build_hdr(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/tx.c-2667-\nnet/mac80211/tx.c:2668:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/tx.c-2669-\t\tchanctx_conf =\n--\nnet/mac80211/tx.c-2684-\t\t}\nnet/mac80211/tx.c:2685:\t\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/tx.c-2686-\t\t\tstruct ieee80211_sub_if_data *ap_sdata;\n--\nnet/mac80211/tx.c-2702-\nnet/mac80211/tx.c:2703:\t\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif) \u0026\u0026 sta \u0026\u0026 !sta-\u003esta.mlo) {\nnet/mac80211/tx.c-2704-\t\t\tstruct ieee80211_link_data *link;\n--\nnet/mac80211/tx.c-2881-\t\t\tband = NUM_NL80211_BANDS;\nnet/mac80211/tx.c:2882:\t\t} else if (!ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/tx.c-2883-\t\t\tret = -ENOTCONN;\n--\nnet/mac80211/tx.c=3078=void ieee80211_check_fast_xmit(struct sta_info *sta)\n--\nnet/mac80211/tx.c-3127-\nnet/mac80211/tx.c:3128:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/tx.c-3129-\t\trcu_read_lock();\n--\nnet/mac80211/tx.c-3206-\t\tbuild.da_offs = offsetof(struct ieee80211_hdr, addr1);\nnet/mac80211/tx.c:3207:\t\tif (sta-\u003esta.mlo || !ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/tx.c-3208-\t\t\tmemcpy(hdr-\u003eaddr2, sdata-\u003evif.addr, ETH_ALEN);\n--\nnet/mac80211/tx.c=4561=netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,\n--\nnet/mac80211/tx.c-4583-\t\t\t\t\t\t NULL);\nnet/mac80211/tx.c:4584:\t} else if (ieee80211_vif_is_mld(\u0026sdata-\u003evif) \u0026\u0026\nnet/mac80211/tx.c-4585-\t\t ((sdata-\u003evif.type == NL80211_IFTYPE_AP \u0026\u0026\n--\nnet/mac80211/tx.c=4751=static bool ieee80211_check_mcast_offload(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/tx.c-4755-\nnet/mac80211/tx.c:4756:\tif ((ieee80211_vif_is_mld(\u0026sdata-\u003evif) \u0026\u0026\nnet/mac80211/tx.c-4757-\t (sdata-\u003evif.type == NL80211_IFTYPE_AP \u0026\u0026\n--\nnet/mac80211/tx.c=4911=static bool ieee80211_tx_pending_skb(struct ieee80211_local *local,\n--\nnet/mac80211/tx.c-4924-\t\t/* update band only for non-MLD */\nnet/mac80211/tx.c:4925:\t\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/tx.c-4926-\t\t\tchanctx_conf =\n--\nnet/mac80211/tx.c=6396=void __ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/tx.c-6413-\nnet/mac80211/tx.c:6414:\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/tx.c-6415-\t\tlink = 0;\n--\nnet/mac80211/tx.c=6453=void ieee80211_tx_skb_tid(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/tx.c-6462-\t\tband = NUM_NL80211_BANDS;\nnet/mac80211/tx.c:6463:\t} else if (!ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/tx.c-6464-\t\tWARN_ON(link_id \u003e= 0);\n--\nnet/mac80211/util.c=1134=void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata,\n--\nnet/mac80211/util.c-1142-\tstruct ieee80211_mgmt *mgmt;\nnet/mac80211/util.c:1143:\tbool multi_link = ieee80211_vif_is_mld(\u0026sdata-\u003evif);\nnet/mac80211/util.c-1144-\tstruct {\n--\nnet/mac80211/util.c=1882=int ieee80211_reconfig(struct ieee80211_local *local)\n--\nnet/mac80211/util.c-2071-\nnet/mac80211/util.c:2072:\t\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/util.c-2073-\t\t\tstruct ieee80211_bss_conf *old[IEEE80211_MLD_MAX_NUM_LINKS] = {\n--\nnet/mac80211/util.c-2128-\nnet/mac80211/util.c:2129:\t\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/util.c-2130-\t\t\tchanged |= BSS_CHANGED_IDLE;\n--\nnet/mac80211/util.c-2133-\t\tcase NL80211_IFTYPE_STATION:\nnet/mac80211/util.c:2134:\t\t\tif (!ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/util.c-2135-\t\t\t\tchanged |= BSS_CHANGED_ASSOC |\n--\nnet/mac80211/util.c-2171-\nnet/mac80211/util.c:2172:\t\t\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif))\nnet/mac80211/util.c-2173-\t\t\t\tieee80211_vif_cfg_change_notify(sdata,\n--\nnet/mac80211/util.c-2185-\nnet/mac80211/util.c:2186:\t\t\t\tif (ieee80211_vif_is_mld(\u0026sdata-\u003evif)) {\nnet/mac80211/util.c-2187-\t\t\t\t\tieee80211_reconfig_ap_links(local,\n"
} |
| 13/2 | 2026/07/22 17:52 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 18791 output: 33 thoughts: 45 Thoughts: Okay, here's my take on those thoughts, framed as an expert's internal monologue: **Investigating the MLO Link** Alright, so `ieee80211_vif_is_mld`... that seems pretty clearly tied to Multi-Link Operation, right? No surprises there. But I need to get a better handle on the specifics of this implementation. The question that really jumps out is, is there a dedicated configuration flag or setting specifically dedicated to MLO that I need to be aware of? I need to check the relevant configuration files, maybe some kernel documentation, and the broader wireless driver codebase. I'm going to dig in and see what configuration parameters might be impacting this function, or even utilizing the function. |
| 14/2 | 2026/07/22 17:53 | tool | grepper |
0mError:no matches Args: {
"Expression": "MLO",
"PathPrefix": "net/mac80211/Kconfig"
}Results: {
"error": "no matches"
} |
| 15/2 | 2026/07/22 17:53 | llm | patch-evaluator |
0mModel:gemini-3.1-pro-preview Args: null Results: null Tokens: input: 19041 output: 155 thoughts: 467 Thoughts: **My Assessment of the mac80211 Patch**
Okay, so there's no specific configuration item directly related to MLO in mac80211, which isn't a surprise. That being said, I've reviewed this patch, and I'm pretty confident it's functional and absolutely worth fuzzing. I've pinpointed a few focus symbols for the fuzzing campaign: `sta_apply_auth_flags`, `sta_apply_parameters`, `ieee80211_add_station`, and `ieee80211_change_station`. Initially, I was a bit concerned about including `sta_apply_auth_flags` because it's a static function, but it's fine.
Now, a quick check to see if we've got the necessary configuration is in order. Yeah, `MAC80211` alone will suffice for this patch.
Let me just double-check the code snippet again:
```c
if (!test_sta_flag(sta, WLAN_STA_RATE_CONTROL)) {
if (!ieee80211_vif_is_mld(&sta->sdata->vif) &&
!rcu_access_pointer(sta->sdata->vif.bss_conf.chanctx_conf))
return -EINVAL;
rate_control_rate_init_all_links(sta);
}
```
Right, it's a minor bug fix. It introduces a check that returns `-EINVAL` if `chanctx_conf` is NULL for non-MLD interfaces when rate control isn't initialized. This is all about preventing a potential NULL pointer dereference or a similar issue down the line, specifically in `rate_control_rate_init_all_links` or related functions. This is a subtle but important piece of validation.
So, here's what I'm going to set:
* **WorthFuzzing**: `true`
* **FocusSymbols**: `["sta_apply_auth_flags", "sta_apply_parameters", "ieee80211_add_station", "ieee80211_change_station"]`
* **EnableConfigs**: `["MAC80211"]`
* **Reasoning**: "The patch adds a crucial validation check in `sta_apply_auth_flags` to prevent an invalid state when rate control is not initialized for non-MLD interfaces. This functionality is accessible via nl80211 commands, such as `NEW_STATION` and `SET_STATION`, and modifies core mac80211 logic. This means that, despite the apparent simplicity, fuzzing is very valuable here."
|
| 16/2 | 2026/07/22 17:53 | tool | set-results |
0mArgs:{
"EnableConfigs": [
"MAC80211"
],
"FocusSymbols": [
"sta_apply_auth_flags",
"sta_apply_parameters",
"ieee80211_add_station",
"ieee80211_change_station"
],
"Reasoning": "The patch adds a validation check in `sta_apply_auth_flags` to prevent an invalid state when rate control is not initialized for non-MLD interfaces. This is reachable via nl80211 commands (e.g., NEW_STATION, SET_STATION) and modifies core mac80211 logic.",
"WorthFuzzing": true
}Results: {
"EnableConfigs": [
"MAC80211"
],
"FocusSymbols": [
"sta_apply_auth_flags",
"sta_apply_parameters",
"ieee80211_add_station",
"ieee80211_change_station"
],
"Reasoning": "The patch adds a validation check in `sta_apply_auth_flags` to prevent an invalid state when rate control is not initialized for non-MLD interfaces. This is reachable via nl80211 commands (e.g., NEW_STATION, SET_STATION) and modifies core mac80211 logic.",
"WorthFuzzing": true
} |
| Total Calls | Total Tokens | Avg Tokens | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|
| Total Calls | Total Duration (Seconds) | Avg Duration (Seconds) |
|---|