From d850a8f0fe6b5ce125df09a03f20bed520c33625 Mon Sep 17 00:00:00 2001 From: Markus Fritsche Date: Thu, 23 Apr 2026 20:42:22 +0200 Subject: [PATCH] patches: add pm-timeout-silence (c2.1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Demote 'wait pm ind timeout' from bes_err() to bes_devel() in bes2600_pwr_enter_lp_mode(). The cascade this used to warn about is already suppressed by c2 (pm-gate-on-handshake); the remaining log line is benign steady-state noise (3-9 events per 10-min uptime on PineTab2). Deployed + verified on ohm (srcversion ED89A26…): err-priority count 0, WiFi associated, no regression. 1-line patch. --- ...ait-pm-ind-timeout-from-bes_err-to-b.patch | 53 +++++++++++++++++++ ...ait-pm-ind-timeout-from-bes_err-to-b.patch | 53 +++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 patches/pm-timeout-silence-danctnix/0001-bes2600-demote-wait-pm-ind-timeout-from-bes_err-to-b.patch create mode 100644 patches/pm-timeout-silence/0001-bes2600-demote-wait-pm-ind-timeout-from-bes_err-to-b.patch diff --git a/patches/pm-timeout-silence-danctnix/0001-bes2600-demote-wait-pm-ind-timeout-from-bes_err-to-b.patch b/patches/pm-timeout-silence-danctnix/0001-bes2600-demote-wait-pm-ind-timeout-from-bes_err-to-b.patch new file mode 100644 index 000000000..77291f2bb --- /dev/null +++ b/patches/pm-timeout-silence-danctnix/0001-bes2600-demote-wait-pm-ind-timeout-from-bes_err-to-b.patch @@ -0,0 +1,53 @@ +From ab9e0ad6b4bbb1196c448ed000c8c152b0f04683 Mon Sep 17 00:00:00 2001 +From: Markus Fritsche +Date: Thu, 23 Apr 2026 20:35:17 +0200 +Subject: [PATCH] bes2600: demote 'wait pm ind timeout' from bes_err to + bes_devel + +bes2600_pwr_enter_lp_mode() logs 'wait pm ind timeout' at bes_err +level every time wait_for_completion_timeout() on the firmware's +PM-change indication returns 0. The preceding patch ('bes2600: +gate device LP-mode entry on successful per-VIF firmware +handshake') already handles this case correctly: the per-VIF +timeouts counter is incremented, the function returns +-ETIMEDOUT, and the device-side LP transition is skipped -- the +cascade into sdio_tx_work splats and [RX] Receive failure +messages is prevented. + +The timeout itself is benign steady-state noise on the PineTab2 +(BES2600WM). Firmware occasionally misses the 5 s PM-change +deadline when mac80211 flips power-save rapidly during +association or roaming; observed rate on a quiet, associated +ohm is roughly 3-10 events per 10 min of uptime, with no +user-visible effect. Keeping it at bes_err() level (== KERN_ERR, +priority 3) floods dmesg with what is already a handled +condition and makes real SDIO / PM errors harder to spot. + +Demote to bes_devel() (== KERN_DEBUG gated on the driver's debug +flag). The gate in the caller is unchanged, so the downstream +suppression behaviour introduced by the earlier patch remains. +Real pathologies -- bes_err("set operation mode fail") on the +same path, and the timeouts != 0 / -ETIMEDOUT return consumed +by callers -- still surface at bes_err() / return-value level. + +Signed-off-by: Markus Fritsche +--- + bes2600/bes_pwr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/bes2600/bes_pwr.c b/drivers/staging/bes2600/bes_pwr.c +index f62ae22..474b6f1 100644 +--- a/drivers/staging/bes2600/bes_pwr.c ++++ b/drivers/staging/bes2600/bes_pwr.c +@@ -538,7 +538,7 @@ static int bes2600_pwr_enter_lp_mode(struct bes2600_common *hw_priv) + atomic_set(&hw_priv->bes_power.pm_set_in_process, 0); + reinit_completion(&hw_priv->bes_power.pm_enter_cmpl); + if (!status) { +- bes_err("%s, wait pm ind timeout\n", __func__); ++ bes_devel("%s, wait pm ind timeout\n", __func__); + timeouts++; + } + } else { +-- +2.53.0 + diff --git a/patches/pm-timeout-silence/0001-bes2600-demote-wait-pm-ind-timeout-from-bes_err-to-b.patch b/patches/pm-timeout-silence/0001-bes2600-demote-wait-pm-ind-timeout-from-bes_err-to-b.patch new file mode 100644 index 000000000..4ad3ceb79 --- /dev/null +++ b/patches/pm-timeout-silence/0001-bes2600-demote-wait-pm-ind-timeout-from-bes_err-to-b.patch @@ -0,0 +1,53 @@ +From ab9e0ad6b4bbb1196c448ed000c8c152b0f04683 Mon Sep 17 00:00:00 2001 +From: Markus Fritsche +Date: Thu, 23 Apr 2026 20:35:17 +0200 +Subject: [PATCH] bes2600: demote 'wait pm ind timeout' from bes_err to + bes_devel + +bes2600_pwr_enter_lp_mode() logs 'wait pm ind timeout' at bes_err +level every time wait_for_completion_timeout() on the firmware's +PM-change indication returns 0. The preceding patch ('bes2600: +gate device LP-mode entry on successful per-VIF firmware +handshake') already handles this case correctly: the per-VIF +timeouts counter is incremented, the function returns +-ETIMEDOUT, and the device-side LP transition is skipped -- the +cascade into sdio_tx_work splats and [RX] Receive failure +messages is prevented. + +The timeout itself is benign steady-state noise on the PineTab2 +(BES2600WM). Firmware occasionally misses the 5 s PM-change +deadline when mac80211 flips power-save rapidly during +association or roaming; observed rate on a quiet, associated +ohm is roughly 3-10 events per 10 min of uptime, with no +user-visible effect. Keeping it at bes_err() level (== KERN_ERR, +priority 3) floods dmesg with what is already a handled +condition and makes real SDIO / PM errors harder to spot. + +Demote to bes_devel() (== KERN_DEBUG gated on the driver's debug +flag). The gate in the caller is unchanged, so the downstream +suppression behaviour introduced by the earlier patch remains. +Real pathologies -- bes_err("set operation mode fail") on the +same path, and the timeouts != 0 / -ETIMEDOUT return consumed +by callers -- still surface at bes_err() / return-value level. + +Signed-off-by: Markus Fritsche +--- + bes2600/bes_pwr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bes2600/bes_pwr.c b/bes2600/bes_pwr.c +index f62ae22..474b6f1 100644 +--- a/bes2600/bes_pwr.c ++++ b/bes2600/bes_pwr.c +@@ -538,7 +538,7 @@ static int bes2600_pwr_enter_lp_mode(struct bes2600_common *hw_priv) + atomic_set(&hw_priv->bes_power.pm_set_in_process, 0); + reinit_completion(&hw_priv->bes_power.pm_enter_cmpl); + if (!status) { +- bes_err("%s, wait pm ind timeout\n", __func__); ++ bes_devel("%s, wait pm ind timeout\n", __func__); + timeouts++; + } + } else { +-- +2.53.0 +