Linux wireless drivers development
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev, stable@vger.kernel.org
Cc: Emmanuel Grumbach <emmanuel.grumbach@intel.com>,
	Daniel Gabay <daniel.gabay@intel.com>,
	Miri Korenblit <miriam.rachel.korenblit@intel.com>,
	Sasha Levin <sashal@kernel.org>,
	linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH AUTOSEL 6.18] wifi: iwlwifi: fix the access to CNVR TOP registers
Date: Mon, 31 Aug 2026 09:27:49 -0400	[thread overview]
Message-ID: <20260831133314.4125787-441-sashal@kernel.org> (raw)
In-Reply-To: <20260831133314.4125787-1-sashal@kernel.org>

From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>

[ Upstream commit c73869c1df2a27dc3c928e94b42660124318f727 ]

For Dr and Sc, we need to wait until the TOP is ready to gets its
registers read by the host.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Daniel Gabay <daniel.gabay@intel.com>
Link: https://patch.msgid.link/20260511203428.09778340db51.I28d678ad404bbf8068f139666d38e29be5aa063b@changeid
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

# Stable Backport Analysis: `wifi: iwlwifi: fix the access to CNVR TOP
registers`

**Local tree:** Linux **6.18.44** (`git describe HEAD` → `v6.18.44`)

---

## PHASE 1: COMMIT MESSAGE FORENSICS

### Step 1.1: PARSE THE SUBJECT LINE
**Record:** `[wifi: iwlwifi]` `[fix]` — Correct premature access to CNVR
TOP peripheral registers on DR and SC device families during early
hardware identification.

### Step 1.2: PARSE ALL COMMIT MESSAGE TAGS
**Record:**
- **Signed-off-by:** Emmanuel Grumbach `<emmanuel.grumbach@intel.com>`
  (author)
- **Reviewed-by:** Daniel Gabay `<daniel.gabay@intel.com>` (Intel
  reviewer)
- **Link:** `https://patch.msgid.link/20260511203428...` (patch
  submission reference)
- **Signed-off-by:** Miri Korenblit
  `<miriam.rachel.korenblit@intel.com>` (maintainer committer)
- No `Fixes:`, `Reported-by:`, `Cc: stable@vger.kernel.org`, or syzbot
  tags
- Notable: Intel-internal review; part of `[PATCH 3/15]` iwlwifi update
  series (May 11, 2026)

### Step 1.3: ANALYZE THE COMMIT BODY TEXT
**Record:**
- **Bug:** On DR and SC families, the host reads CNVR TOP peripheral
  registers before the TOP block is ready.
- **Symptom:** Incorrect or unavailable peripheral register reads during
  `get_crf_id()` in the PCIe probe path; can lead to wrong/missing RF ID
  and probe failure.
- **Root cause:** Missing hardware-readiness wait before `WFPM_CTRL_REG`
  / peripheral register access.
- **Version info:** None explicit; hardware-specific to
  `IWL_DEVICE_FAMILY_DR` and `IWL_DEVICE_FAMILY_SC`.

### Step 1.4: DETECT HIDDEN BUG FIXES
**Record:** Not disguised — this is an explicit hardware-init timing bug
fix, not cleanup or optimization.

---

## PHASE 2: DIFF ANALYSIS

### Step 2.1: INVENTORY THE CHANGES
**Record:**
| File | Change |
|------|--------|
| `iwl-io.c` | +18 lines (new poll helper) |
| `iwl-io.h` | +2 lines (declaration) |
| `iwl-prph.h` | +5 lines (register/bit defines) |
| `pcie/gen1_2/trans.c` | +24 lines (wait logic in `get_crf_id()`) |

- **Functions modified:** `get_crf_id()`; new
  `iwl_poll_umac_prph_bits_no_grab()`
- **Scope:** Single-subsystem, 4-file surgical fix (~51 lines total
  including copyright year bumps)

### Step 2.2: UNDERSTAND THE CODE FLOW CHANGE
**Record:**
- **Hunk 1 (`iwl-io.c` / `iwl-io.h`):** Adds
  `iwl_poll_umac_prph_bits_no_grab()` — mirrors `iwl_poll_prph_bit()`
  but uses `iwl_read_umac_prph_no_grab()` for contexts where NIC access
  is already held.
- **Hunk 2 (`iwl-prph.h`):** Defines `WFPM_RSRCS_4PHS_REQ_STTS`,
  `WFPM_RSRCS_4PHS_ACK_STTS`, and CNVR TOP request/ack bits.
- **Hunk 3 (`trans.c` / `get_crf_id()`):**
  - **Before:** Immediately reads/writes UMAC peripheral registers.
  - **After (DR/SC only):** Checks REQ bit 6; polls ACK bit 6 (50 ms
    timeout); then proceeds with peripheral access.
  - **Path:** Early probe, inside `iwl_pci_gen1_2_probe()` →
    `get_crf_id()` with NIC access held.

### Step 2.3: IDENTIFY THE BUG MECHANISM
**Record:**
- **Category:** Logic / hardware-init correctness fix
  (timing/sequencing).
- **Mechanism:** `get_crf_id()` reads `WFPM_CTRL_REG`,
  `sd_reg_ver_addr`, and `CNVI_AUX_MISC_CHIP` before CNVR TOP signals
  readiness via `WFPM_RSRCS_4PHS_ACK_STTS` bit 6. On DR/SC this yields
  garbage or zero `hw_crf_id`, causing `map_crf_id()` to fail and probe
  to return `-EINVAL`.

### Step 2.4: ASSESS THE FIX QUALITY
**Record:**
- Follows existing `iwl_poll_prph_bit()` / `iwl_poll_umac_prph_bit()`
  patterns.
- Minimal, device-family-gated (`DR` and `SC` only).
- **Minor concern:** On ACK poll timeout, code logs `IWL_ERR` but still
  proceeds (best-effort, same as many iwlwifi init paths). REQ-bit-clear
  path returns early from `get_crf_id()` without reading registers.
- **Regression risk:** Low — change is gated to two families and adds a
  wait before existing reads.

---

## PHASE 3: GIT HISTORY INVESTIGATION

### Step 3.1: BLAME THE CHANGED LINES
**Record:** `get_crf_id()` at lines 3990–4040 in `trans.c` is present in
this tree. Git blame in this checkout is shallow (single squashed commit
per file), so the exact introduction commit could not be determined from
local history.

### Step 3.2: FOLLOW THE FIXES: TAG
**Record:** No `Fixes:` tag present — not applicable.

### Step 3.3: CHECK FILE HISTORY FOR RELATED CHANGES
**Record:** Local git history for `drivers/net/wireless/intel/iwlwifi/`
is extremely shallow (no meaningful per-file history). Patch is **3/15**
in the May 2026 iwlwifi series; this commit is standalone and does not
depend on patches 1/15 or 2/15.

### Step 3.4: CHECK THE AUTHOR'S OTHER COMMITS
**Record:** Emmanuel Grumbach is a long-standing iwlwifi maintainer.
Series cover letter lists him as author of this fix among other iwlwifi
changes. Cannot verify author history in this shallow tree.

### Step 3.5: CHECK FOR DEPENDENT/PREREQUISITE COMMITS
**Record:** No prerequisites identified. Required symbols
(`iwl_read_umac_prph_no_grab`, `IWL_DEVICE_FAMILY_DR`,
`IWL_DEVICE_FAMILY_SC`, `get_crf_id`) all exist in this tree. Patch
should apply cleanly.

---

## PHASE 4: MAILING LIST AND EXTERNAL RESEARCH

### Step 4.1: FIND THE ORIGINAL PATCH DISCUSSION
**Record:** Patch found in local mbox
`20260511_miriam_rachel_korenblit_wifi_iwlwifi_updates_2026_05_11.mbx`
as `[PATCH 3/15]`. Cover letter classifies it under "Features, cleanups
and **fixes**". `b4 dig -c HEAD` did not match (HEAD is the stable
release tag, not this commit). `b4 dig` by subject failed (wrong
invocation). Link fetch blocked by bot protection — could not read full
lore thread.

### Step 4.2: CHECK WHO REVIEWED THE PATCH
**Record:** `Reviewed-by: Daniel Gabay <daniel.gabay@intel.com>`. Series
addressed to iwlwifi maintainers. Full `-w` recipient list not
retrieved.

### Step 4.3: SEARCH FOR THE BUG REPORT
**Record:** No external bug report, syzbot link, or user `Reported-by:`
— internal Intel discovery/fix.

### Step 4.4: CHECK FOR RELATED PATCHES AND SERIES
**Record:** Part of 15-patch series; patches 1/15 (debugfs PE naming)
and 2/15 (firmware core bump) are independent. This fix is self-
contained.

### Step 4.5: CHECK STABLE MAILING LIST HISTORY
**Record:** Not searched on lore stable list (no stable nomination found
in available sources). Absence of `Cc: stable` is expected per review
instructions.

---

## PHASE 5: CODE SEMANTIC ANALYSIS

### Step 5.1: IDENTIFY KEY FUNCTIONS IN THE DIFF
**Record:** `iwl_poll_umac_prph_bits_no_grab()` (new), `get_crf_id()`
(modified), callers of `get_crf_id()`.

### Step 5.2: TRACE CALLERS
**Record:** `get_crf_id()` is called from `iwl_pci_gen1_2_probe()` at
line 4195, during early PCIe probe after `iwl_trans_activate_nic()` and
`iwl_trans_grab_nic_access()`. This runs for every iwlwifi PCIe gen1/2
device, including all SC PCI IDs (`0xE440`, `0xE340`, `0xD340`,
`0x6E70`, `0xD240` in `pcie/drv.c`).

### Step 5.3: TRACE CALLEES
**Record:** Uses `iwl_read_umac_prph_no_grab()`,
`iwl_write_umac_prph_no_grab()`, `iwl_read_prph_no_grab()`,
`udelay(IWL_POLL_INTERVAL)` — standard iwlwifi register I/O.

### Step 5.4: FOLLOW THE CALL CHAIN
**Record:** PCI probe → `iwl_pci_gen1_2_probe()` → `get_crf_id()` →
`map_crf_id()` (if `hw_rf_id` is zero). Reachable on every boot/module
load for affected hardware. Not userspace-triggerable directly, but
affects all users of SC (and future DR) WiFi hardware.

### Step 5.5: SEARCH FOR SIMILAR PATTERNS
**Record:** `iwl_poll_umac_prph_bit()` exists in `iwl-io.h` (uses
`iwl_poll_prph_bit` with grab). `rx.c` uses `iwl_poll_umac_prph_bit()`
for RFH status. New `no_grab` variant is needed because `get_crf_id()`
runs with NIC access already held — verified: no existing
`poll_*_no_grab` helper before this patch.

---

## PHASE 6: CROSS-REFERENCING AGAINST THE LOCAL TREE

### Step 6.1: DOES THE BUGGY CODE EXIST IN THIS TREE?
**Record:** **YES.** `get_crf_id()` in `trans.c` (lines 3990–4040)
accesses peripheral registers without CNVR TOP readiness wait.
`IWL_DEVICE_FAMILY_SC` and `IWL_DEVICE_FAMILY_DR` are defined; SC PCI
IDs are present in `pcie/drv.c`. DR config (`cfg/dr.c`) exists but has
no PCI ID table entry yet in this tree. The buggy code path is live for
SC devices today.

### Step 6.2: CHECK FOR BACKPORT COMPLICATIONS
**Record:** Expected **clean apply**. Target functions and register-
access helpers exist unchanged. No conflicting recent changes found
(shallow history). Only copyright year lines differ cosmetically.

### Step 6.3: CHECK IF RELATED FIXES ARE ALREADY HERE
**Record:** **No.** `iwl_poll_umac_prph_bits_no_grab`,
`WFPM_RSRCS_4PHS_*`, and `RSRC_*_CNVR_TOP` are absent from this tree
(grep confirmed).

---

## PHASE 7: SUBSYSTEM AND MAINTAINER CONTEXT

### Step 7.1: IDENTIFY THE SUBSYSTEM AND ITS CRITICALITY
**Record:** `drivers/net/wireless/intel/iwlwifi` — **IMPORTANT** (widely
deployed Intel WiFi driver; probe/init path).

### Step 7.2: ASSESS SUBSYSTEM ACTIVITY
**Record:** Actively developed; DR family added recently (cfg copyright
2024–2025). SC family has been present longer (2015+). Cannot assess
commit frequency from shallow local history.

---

## PHASE 8: IMPACT AND RISK ASSESSMENT

### Step 8.1: DETERMINE WHO IS AFFECTED
**Record:** Users with Intel WiFi **SC-family** hardware (PCI IDs in
`drv.c`). **DR-family** users when PCI IDs are added. Config-dependent
(`CONFIG_IWLWIFI`).

### Step 8.2: DETERMINE THE TRIGGER CONDITIONS
**Record:** Every probe/resume path where blank OTP requires reading CRF
ID from peripheral registers. Timing-dependent on DR/SC silicon — CNVR
TOP not ready at the moment `get_crf_id()` runs. Common on boot; not
privilege-dependent.

### Step 8.3: DETERMINE THE FAILURE MODE SEVERITY
**Record:**
- Wrong/zero `hw_crf_id` → `map_crf_id()` returns `-EIO` → probe fails
  with `-EINVAL` at line 4211–4214
- **Severity: HIGH** — WiFi completely non-functional on affected
  hardware (not a kernel panic, but total device failure)
- No data corruption or security exposure identified

### Step 8.4: CALCULATE RISK-BENEFIT RATIO
**Record:**
- **Benefit:** HIGH for SC (and future DR) users — restores reliable
  probe/hardware identification
- **Risk:** LOW — ~30 lines of functional code, family-gated, follows
  established polling pattern
- **Ratio:** Strongly favorable

---

## PHASE 9: FINAL SYNTHESIS

### Step 9.1: COMPILE THE EVIDENCE

**FOR backport:**
- Real hardware-init bug on DR/SC silicon
- Probe failure (`-EINVAL`) when RF ID cannot be read correctly
- Small, surgical, Intel-reviewed fix
- Buggy code confirmed present in 6.18.44
- SC PCI IDs actively supported in this tree
- Follows existing iwlwifi polling conventions
- Standalone within a larger series

**AGAINST backport:**
- No external user/syzbot report (internal Intel fix)
- DR PCI IDs not yet in `drv.c` (fix most immediately benefits SC)
- On ACK timeout, driver still proceeds (mitigation is wait, not hard
  abort)
- Shallow git history limits introduction-date analysis

**Unresolved:**
- Exact lore thread review discussion (link blocked)
- Whether SC devices in the field routinely hit this without the fix
  (Intel says they need the wait)

### Step 9.2: STABLE RULES CHECKLIST
1. Obviously correct and tested? **PASS** — standard poll-before-read
   pattern; Intel reviewed
2. Fixes a real bug affecting users? **PASS** — probe failure on SC
   hardware
3. Important issue? **PASS** — HIGH severity (device completely non-
   functional)
4. Small and contained? **PASS** — 4 files, ~30 lines functional code
5. No new features or APIs? **PASS** — internal driver helper only
6. Can apply to local tree? **PASS** — all prerequisites present

### Step 9.3: EXCEPTION CATEGORIES
**Record:** Hardware workaround / hardware-init quirk for specific Intel
WiFi silicon (DR/SC CNVR TOP sequencing).

### Step 9.4: DECISION RATIONALE

For **Linux 6.18.44**, this commit should be backported. The tree
contains SC-family PCI device support and the buggy `get_crf_id()` path
that reads CNVR TOP peripheral registers without waiting for hardware
readiness. Without the fix, affected Intel WiFi hardware can fail probe
entirely when blank OTP requires CRF-ID-based RF identification. The fix
is minimal, gated to the affected families, reviewed by Intel, and
introduces no userspace-visible changes.

---

## Verification

- **[Phase 1]** Parsed subject, tags, body from provided commit message
  and local mbox
- **[Phase 2]** Analyzed full diff: 4 files, new poll helper +
  `get_crf_id()` wait logic
- **[Phase 3]** `git blame` on `get_crf_id()`: present in tree; shallow
  history limits introduction commit
- **[Phase 3]** No `Fixes:` tag to follow
- **[Phase 3]** Mbox confirms patch 3/15, standalone
- **[Phase 4]** Local mbox `20260511_miriam_rachel_korenblit_wifi_iwlwif
  i_updates_2026_05_11.mbx`: found patch 3/15 and cover letter
- **[Phase 4]** `b4 dig -c HEAD`: no match (HEAD is v6.18.44 tag, not
  this commit)
- **[Phase 4]** Link fetch to patch.msgid.link: blocked by bot
  protection
- **[Phase 4]** `Reviewed-by: Daniel Gabay` confirmed from commit
  message
- **[Phase 5]** `get_crf_id()` caller: `iwl_pci_gen1_2_probe()` line
  4195 in `trans.c`
- **[Phase 5]** Downstream: `map_crf_id()` at lines 4211–4214 can return
  `-EINVAL` on probe failure
- **[Phase 5]** Existing `iwl_poll_umac_prph_bit()` uses grab; new
  `no_grab` variant needed in held-access context
- **[Phase 6]** `git describe HEAD`: v6.18.44
- **[Phase 6]** Grep: `iwl_poll_umac_prph_bits_no_grab` /
  `WFPM_RSRCS_4PHS_*` absent — fix not yet applied
- **[Phase 6]** Grep: `IWL_DEVICE_FAMILY_DR` / `SC` present; SC PCI IDs
  in `pcie/drv.c` (5 devices); DR config exists but no PCI ID entry
- **[Phase 6]** Read `get_crf_id()` lines 3990–4040: buggy code (no CNVR
  TOP wait) confirmed
- **[Phase 8]** Failure mode traced: bad `hw_crf_id` → `map_crf_id()`
  `-EIO` → probe `-EINVAL`

**YES**

 drivers/net/wireless/intel/iwlwifi/iwl-io.c   | 18 ++++++++++++-
 drivers/net/wireless/intel/iwlwifi/iwl-io.h   |  4 ++-
 drivers/net/wireless/intel/iwlwifi/iwl-prph.h |  7 ++++-
 .../intel/iwlwifi/pcie/gen1_2/trans.c         | 26 ++++++++++++++++++-
 4 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-io.c b/drivers/net/wireless/intel/iwlwifi/iwl-io.c
index b1944584c6931..c4ccfffdf6af9 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-io.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-io.c
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
- * Copyright (C) 2003-2014, 2018-2022, 2024-2025 Intel Corporation
+ * Copyright (C) 2003-2014, 2018-2022, 2024-2026 Intel Corporation
  * Copyright (C) 2015-2016 Intel Deutschland GmbH
  */
 #include <linux/device.h>
@@ -168,6 +168,22 @@ int iwl_poll_prph_bit(struct iwl_trans *trans, u32 addr,
 	return -ETIMEDOUT;
 }
 
+int iwl_poll_umac_prph_bits_no_grab(struct iwl_trans *trans, u32 addr,
+				    u32 bits, u32 mask, int timeout)
+{
+	int t = 0;
+
+	do {
+		if ((iwl_read_umac_prph_no_grab(trans, addr) & mask) ==
+		    (bits & mask))
+			return 0;
+		udelay(IWL_POLL_INTERVAL);
+		t += IWL_POLL_INTERVAL;
+	} while (t < timeout);
+
+	return -ETIMEDOUT;
+}
+
 void iwl_set_bits_prph(struct iwl_trans *trans, u32 ofs, u32 mask)
 {
 	if (iwl_trans_grab_nic_access(trans)) {
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-io.h b/drivers/net/wireless/intel/iwlwifi/iwl-io.h
index 5bcec239ffc4a..d920a32fc173c 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-io.h
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-io.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
 /*
- * Copyright (C) 2018-2021, 2025 Intel Corporation
+ * Copyright (C) 2018-2021, 2025-2026 Intel Corporation
  */
 #ifndef __iwl_io_h__
 #define __iwl_io_h__
@@ -51,6 +51,8 @@ static inline void iwl_write_prph(struct iwl_trans *trans, u32 ofs, u32 val)
 
 int iwl_poll_prph_bit(struct iwl_trans *trans, u32 addr,
 		      u32 bits, u32 mask, int timeout);
+int iwl_poll_umac_prph_bits_no_grab(struct iwl_trans *trans, u32 addr,
+				    u32 bits, u32 mask, int timeout);
 void iwl_set_bits_prph(struct iwl_trans *trans, u32 ofs, u32 mask);
 void iwl_set_bits_mask_prph(struct iwl_trans *trans, u32 ofs,
 			    u32 bits, u32 mask);
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-prph.h b/drivers/net/wireless/intel/iwlwifi/iwl-prph.h
index a7214ddcfaf56..6ca1f51b69a1c 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-prph.h
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-prph.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
 /*
- * Copyright (C) 2005-2014, 2018-2025 Intel Corporation
+ * Copyright (C) 2005-2014, 2018-2026 Intel Corporation
  * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
  * Copyright (C) 2016 Intel Deutschland GmbH
  */
@@ -411,6 +411,11 @@ enum {
 #define HPM_SECONDARY_DEVICE_STATE      0xa03404
 #define WFPM_MAC_OTP_CFG7_ADDR		0xa03338
 #define WFPM_MAC_OTP_CFG7_DATA		0xa0333c
+#define WFPM_RSRCS_4PHS_REQ_STTS	0xa033f8
+#define WFPM_RSRCS_4PHS_ACK_STTS	0xa033fc
+
+#define RSRC_REQ_CNVR_TOP BIT(6)
+#define RSRC_ACK_CNVR_TOP BIT(6)
 
 
 /* For UMAG_GEN_HW_STATUS reg check */
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
index 59307b5df4417..b003abf1fe2ce 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
- * Copyright (C) 2007-2015, 2018-2024 Intel Corporation
+ * Copyright (C) 2007-2015, 2018-2024, 2026 Intel Corporation
  * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
  * Copyright (C) 2016-2017 Intel Deutschland GmbH
  */
@@ -4000,6 +4000,30 @@ static void get_crf_id(struct iwl_trans *iwl_trans,
 	else
 		sd_reg_ver_addr = SD_REG_VER;
 
+	/* wait until the device is ready to access the prph registers */
+	if (iwl_trans->mac_cfg->device_family == IWL_DEVICE_FAMILY_DR ||
+	    iwl_trans->mac_cfg->device_family == IWL_DEVICE_FAMILY_SC) {
+		u32 req = iwl_read_umac_prph_no_grab(iwl_trans,
+						     WFPM_RSRCS_4PHS_REQ_STTS);
+		int ret;
+
+		if (!(req & RSRC_REQ_CNVR_TOP)) {
+			IWL_ERR(iwl_trans,
+				"WFPM_RSRCS_4PHS_REQ_STTS bit 6 is clear 0x%x\n",
+				req);
+			return;
+		}
+
+		ret = iwl_poll_umac_prph_bits_no_grab(iwl_trans,
+						      WFPM_RSRCS_4PHS_ACK_STTS,
+						      RSRC_ACK_CNVR_TOP,
+						      RSRC_ACK_CNVR_TOP,
+						      50 * 1000);
+		if (ret < 0)
+			IWL_ERR(iwl_trans,
+				"WFPM_RSRCS_4PHS_ACK_STTS bit 6 is clear\n");
+	}
+
 	/* Enable access to peripheral registers */
 	val = iwl_read_umac_prph_no_grab(iwl_trans, WFPM_CTRL_REG);
 	val |= WFPM_AUX_CTL_AUX_IF_MAC_OWNER_MSK;
-- 
2.53.0


  parent reply	other threads:[~2026-08-31 13:46 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-31 13:20 [PATCH AUTOSEL 6.18-5.10] wifi: cfg80211: validate IEs in cfg80211_wext_siwgenie() Sasha Levin
2026-08-31 13:20 ` [PATCH AUTOSEL 6.18-6.12] wifi: mt76: mt7925: handle 320MHz bandwidth in RXV and TXS Sasha Levin
2026-08-31 13:20 ` [PATCH AUTOSEL 6.18-6.12] wifi: iwlwifi: mvm: parse beacon notif per layout Sasha Levin
2026-08-31 13:21 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mvm: fix P2P-Device binding handling Sasha Levin
2026-08-31 13:21 ` [PATCH AUTOSEL 6.18] wifi: nl80211: check link is beaconing for color change Sasha Levin
2026-08-31 13:21 ` [PATCH AUTOSEL 6.18-5.10] wifi: nl80211: Increase ie_len size to prevent truncated IEs in new peer notifications Sasha Levin
2026-08-31 13:21 ` [PATCH AUTOSEL 6.18-6.12] wifi: iwlwifi: pcie: null RX pointers after free Sasha Levin
2026-08-31 13:21 ` [PATCH AUTOSEL 6.18] wifi: ath12k: Prevent incorrect vif chanctx switch when handling multi-radio contexts Sasha Levin
2026-08-31 13:21 ` [PATCH AUTOSEL 6.18-5.15] wifi: iwlwifi: mvm: fix sched scan IE sizing Sasha Levin
2026-08-31 13:21 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: add support for AX231 Sasha Levin
2026-08-31 13:22 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: pcie: add two LNL PCI IDs Sasha Levin
2026-08-31 13:22 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: fix an off-by-1 boundary check Sasha Levin
2026-08-31 13:22 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: adapt ND match notif sizing to fixed matches array Sasha Levin
2026-08-31 13:22 ` [PATCH AUTOSEL 6.18-6.12] wifi: iwlwifi: mvm: validate mac_link_id in session protect notif Sasha Levin
2026-08-31 13:22 ` [PATCH AUTOSEL 6.18-6.1] wifi: nl80211: reject beacons with bad HE operation Sasha Levin
2026-08-31 13:23 ` [PATCH AUTOSEL 6.18-6.1] wifi: iwlwifi: acpi: validate WGDS table revision index Sasha Levin
2026-08-31 13:23 ` [PATCH AUTOSEL 6.18-6.1] wifi: rtw89: pci: enable LTR based on pcie control register Sasha Levin
2026-08-31 13:23 ` [PATCH AUTOSEL 6.18] wifi: mac80211: unify link STA removal in vif link removal Sasha Levin
2026-08-31 13:24 ` [PATCH AUTOSEL 6.18-6.6] wifi: iwlwifi: mvm: validate sta_id in BA window status notif Sasha Levin
2026-08-31 13:24 ` [PATCH AUTOSEL 6.18] wifi: mac80211: avoid out-of-bounds access in monitor Sasha Levin
2026-08-31 13:24 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: fw: validate SMEM response size Sasha Levin
2026-08-31 13:24 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: purge async notifications upon nic error Sasha Levin
2026-08-31 13:24 ` [PATCH AUTOSEL 6.18] wifi: mac80211: use chandef in ieee80211_get_sta_bw() Sasha Levin
2026-08-31 13:24 ` [PATCH AUTOSEL 6.18-5.10] wifi: iwlwifi: mvm: fix an off-by-1 boundary check Sasha Levin
2026-08-31 13:24 ` [PATCH AUTOSEL 6.18-6.12] wifi: iwlwifi: mvm: validate TX_CMD response layout Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: honor BSS_CHANGED_BEACON_ENABLED Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-5.10] wifi: ralink: RT2X00: init EEPROM properly Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-6.1] wifi: rtw88: Add NULL check for chip->edcca_th in rtw_fw_adaptivity_result() Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-5.15] wifi: cfg80211: validate rx/tx MLME callback frame lengths before access Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-5.10] wifi: mt76: transform aspm_conf for pci_disable_link_state Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-6.6] wifi: iwlwifi: mvm: fix a possible underflow Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-6.12] wifi: mt76: mt7925: add Netgear A8500 USB device ID Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-5.10] wifi: rsi: avoid reading TKIP MIC keys for non-TKIP ciphers Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-5.10] wifi: mac80211: validate deauth frame length before reason access Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-5.10] wifi: mwifiex: replace one-element arrays with flexible array members Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mvm: validate sta_id in TLC notif Sasha Levin
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-6.12] wifi: mt76: mt7925: add 320MHz bandwidth to bss_rlm_tlv Sasha Levin
2026-08-31 13:26 ` [PATCH AUTOSEL 6.18-6.12] wifi: mt76: mt7925: populate EHT 320MHz MCS map in sta_rec Sasha Levin
2026-08-31 13:26 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: disallow puncturing in US/CA for WH Sasha Levin
2026-08-31 13:26 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: don't WARN on WoWLAN suspend w/o netdetect Sasha Levin
2026-08-31 13:26 ` [PATCH AUTOSEL 6.18-6.12] wifi: cfg80211: reject duplicate wiphy cipher suite entries Sasha Levin
2026-09-03  8:09   ` Yuqi Xu
2026-08-31 13:26 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: validate SEC_RT TLV minimum size Sasha Levin
2026-08-31 13:26 ` [PATCH AUTOSEL 6.18-5.10] wifi: mac80211: always allow transmitting null-data on TXQs Sasha Levin
2026-08-31 13:26 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: validate reorder BAID Sasha Levin
2026-08-31 13:26 ` [PATCH AUTOSEL 6.18-5.10] wifi: mac80211_hwsim: reject undersized HWSIM_ATTR_TX_INFO Sasha Levin
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18] wifi: rtw89: disable HTC field in AP mode Sasha Levin
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18-6.12] wifi: mac80211: explicitly disable FTM responder on AP stop Sasha Levin
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18-6.6] wifi: iwlwifi: mvm: add a check on the tid coming from the firmware Sasha Levin
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18] wifi: rtw89: suspend DIG when remain-on-channel Sasha Levin
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: clear tzone on fail Sasha Levin
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mvm: validate MCC header before n_channels Sasha Levin
2026-08-31 13:27 ` Sasha Levin [this message]
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18-6.12] wifi: mac80211: ibss: wait for in-flight TX on disconnect Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: pcie: fix ACPI DSM check Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18] wifi: mac80211: clarify beacon parsing with MBSSID/EMA Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18] wifi: cfg80211: harden cfg80211_defragment_element() Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: call iwl_mld_free_ap_early_key() for AP only Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18-6.6] wifi: rtw89: phy: check length before parsing PHY status IE Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18-5.10] wifi: rsi: validate beacon length before fixed buffer copy Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18-5.10] wifi: iwlwifi: bound aligned TLV advance in FW parser Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18-6.12] wifi: rtw89: disable CSI STBC for VHT 160MHz Sasha Levin
2026-08-31 13:28 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: Transition to basic uAPSD with MAC_PM_POWER_TABLE API VER_3 Sasha Levin
2026-08-31 13:29 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mvm: d3: validate D3 resume notification payloads Sasha Levin
2026-08-31 13:29 ` [PATCH AUTOSEL 6.18] wifi: rtw89: mlo: rearrange MLSR link decision flow Sasha Levin
2026-08-31 13:29 ` [PATCH AUTOSEL 6.18-6.1] wifi: cfg80211: validate assoc response length before status and IE access Sasha Levin
2026-08-31 13:29 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: validate txq_id in TX response handler Sasha Levin
2026-08-31 13:29 ` [PATCH AUTOSEL 6.18-5.10] wifi: libertas: reject short monitor TX frames Sasha Levin
2026-08-31 13:30 ` [PATCH AUTOSEL 6.18-5.10] wifi: mac80211: don't call ieee80211_handle_reconfig_failure when not needed Sasha Levin
2026-08-31 13:30 ` [PATCH AUTOSEL 6.18] wifi: rtw89: 8851bu: add Mercusys MA60XNB (2c4e:0128) Sasha Levin
2026-08-31 13:30 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mvm: verify scan id reported by firmware Sasha Levin
2026-08-31 13:30 ` [PATCH AUTOSEL 6.18-5.10] wifi: libipw: fix key index receive bound checks Sasha Levin
2026-08-31 13:30 ` [PATCH AUTOSEL 6.18-6.1] wifi: ath11k: fix invalid data access in ath11k_dp_rx_h_undecap_nwifi Sasha Levin
2026-08-31 13:30 ` [PATCH AUTOSEL 6.18-6.6] wifi: iwlwifi: mvm: fix out-of-bounds tid_data access in BA notif Sasha Levin
2026-08-31 13:31 ` [PATCH AUTOSEL 6.18] wifi: mt76: route TDLS-peer frames as 3-addr non-DS in HW encap Sasha Levin
2026-08-31 13:31 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: don't parse a notif before checking its length Sasha Levin
2026-08-31 13:31 ` [PATCH AUTOSEL 6.18] wifi: iwlwifi: mld: keep healthy link on EMLSR missed beacon exit Sasha Levin
2026-08-31 13:31 ` [PATCH AUTOSEL 6.18] wifi: ath9k: Obtain system GPIOS from descriptors Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260831133314.4125787-441-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=daniel.gabay@intel.com \
    --cc=emmanuel.grumbach@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=miriam.rachel.korenblit@intel.com \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox