Skip to content

kernel: fix ath10k status of bundled mgmt tx completions - #135

Open
shunnag wants to merge 1 commit into
commaai:masterfrom
shunnag:bundle-mgmt-status
Open

shunnag wants to merge 1 commit into
commaai:masterfrom
shunnag:bundle-mgmt-status

Conversation

@shunnag

@shunnag shunnag commented Oct 15, 2026

Copy link
Copy Markdown

Carries the one-line ath10k fix I posted to linux-wireless on 2026-09-27 (lore), not applied upstream yet. It is the wmi.c bug mentioned in #133.

Problem

ath10k_wmi_event_mgmt_tx_bundle_compl() reads each report's status from desc_ids[i] instead of status[i], so a bundled tx completion counts as ACKed if and only if its descriptor id is 0. In my runs, the WCN3990 firmware reported held Auth frames this way, and 6 of 15 such reports got the wrong ACK result with the current code. Once, two SAE commits that the AP had ACKed were reported as not ACKed, and that connection attempt failed.

Change

-		param.status = __le32_to_cpu(arg.desc_ids[i]);
+		param.status = __le32_to_cpu(arg.status[i]);

Numbered 0034 to stay clear of 0019-0033 on liberation-day-7.2. It applies to master and liberation-day-7.2.

Verification (comma four, liberation-day-7.2 kernel, stock firmware)

  • Debug build + sniffer, 6 runs: status[] matched the air in 39/39 bundled reports.
  • Only this patch, 6 runs: no warnings or crashes. One failed connect and one 85 s reconnect, for reasons also seen without the patch (AP not ACKing, firmware holding back Auth frames).
  • Connect/disconnect loop on the same WPA3-SAE AP. Both kernels also had 3 other ath10k patches of mine (not in vamOS); the only difference is this patch:
blocks (up to 20 connects) blocks with a failed connect warnings / crashes
without 1,093 3 0
with 1,030 0 0

The loops ran on different days and channels, and I left out 8 blocks while the AP was frozen. So this shows no sign of a regression, not a fix.

Note: I worked through this with Claude (AI). English is hard for me, so AI helped write the English. I ran all the device tests myself on my comma four.

Carry the ath10k fix posted to linux-wireless on 2026-09-27 (not
applied upstream yet):
https://lore.kernel.org/r/20260927-ath10k-bundle-status-v1-1-a1eea048ada9@nagashi.ma

ath10k_wmi_event_mgmt_tx_bundle_compl() takes each report's status from
desc_ids[i] instead of status[i], so a bundled report counts as acked
if and only if its descriptor id is 0. In my runs on a comma four, the
WCN3990 firmware completed held Auth frames in bundles, and mac80211
got the wrong ack result for some of them. Frames that were never sent
were reported as acked (too late to matter in my runs). SAE commits
that the AP acked were reported as not acked, and that connection
attempt failed.

The file is numbered 0034 so it does not clash with 0019-0033 on
liberation-day-7.2. It applies to both master and liberation-day-7.2
(same kernel/linux commit, and no other patch touches wmi.c).

I worked through this with Claude (AI). English is hard for me, so AI
helped write the English. I ran all the device tests myself on my
comma four (details in the PR).
@github-actions

Copy link
Copy Markdown

vamOS System Profile

Changes vs master

Metric Change
Used space 3438.4MB → 3558.1MB (+119.6MB)
Sparse image 3392.5MB → 3506.5MB (+114.0MB)
Package count 526 → 529

Added packages: MesaLib-devel-26.2.5_1, SPIRV-LLVM-Translator22-22.1.6_1, Vulkan-Headers-1.4.357.0_1, clang21-21.1.8_1, clang21-headers-21.1.8_1, clang22-headers-22.1.8_1, cmake-4.2.2_3, compiler-rt21-21.1.8_1, curl-8.22.0_1, dhcpcd-10.3.2_4, dnssec-anchors-20261013_1, expat-2.9.0_1, expat-devel-2.9.0_1, f2fs-tools-1.17.0_1, foot-terminfo-1.28.0_1, fuse3-3.18.3_1, git-lfs-3.7.1_2, glib-2.88.3_1, glib-devel-2.88.3_1, groff-1.24.2_1, jsoncpp-1.9.8_1, kitty-terminfo-0.48.2_2, libbpf-1.8.0_1, libclang-cpp21-21.1.8_1, libclang-cpp22-22.1.8_1, libclang21-21.1.8_1, libcrypto3-3.6.5_1, libcurl-8.22.0_1, libcurl-devel-8.22.0_1, libgbm-26.2.5_1, libgbm-devel-26.2.5_1, libglib-devel-2.88.3_1, libharfbuzz-14.4.0_1, libllvm21-21.1.8_1, libllvm22-22.1.8_1, libnfsidmap-3.1.1_1, libomp21-21.1.8_1, libomp21-devel-21.1.8_1, libpcap-1.11.0_1, libpcre2-10.49_1, libpipewire-1.6.9_1, libpng-1.6.59_1, libpng-devel-1.6.59_1, libssl3-3.6.5_1, libthai-0.1.30_1, libtirpc-1.3.8_2, libunbound-1.26.1_1, llvm21-21.1.8_1, m4-1.4.21_1, mdocml-1.14.6_10, mesa-26.2.5_1, mesa-dri-26.2.5_1, mesa-libclc-22.1.8.3_1, mesa-libgallium-26.2.5_1, mesa-opencl-26.2.5_1, mlir21-21.1.8_1, nfs-utils-3.1.1_1, nspr-4.40_1, nss-3.130_1, openssh-10.6p1_1, openssl-3.6.5_1, openssl-devel-3.6.5_1, pcre2-devel-10.49_1, pipewire-devel-1.6.9_1, pv-1.12.0_1, python3-3.14.8_1, python3-Mako-1.4.1_1, python3-MarkupSafe-3.0.4_1, python3-Pygments-2.21.0_1, python3-parsing-3.3.3_1, rpcbind-1.3.1_2, rsync-3.5.1_1, runit-2.3.1_2, stress-ng-0.22.01_1, texinfo-7.3_2, tmux-3.7c_1, tzdata-2026e_1, vim-9.2.1031_1, vim-common-9.2.1031_1, vulkan-loader-1.4.357.0_1, vulkan-loader-devel-1.4.357.0_1, xorgproto-2026.1_1, xxd-9.2.1031_1

Removed packages: MesaLib-devel-26.1.8_1, SPIRV-LLVM-Translator21-21.1.7_1, Vulkan-Headers-1.4.350.1_1, clang21-21.1.7_1, clang21-headers-21.1.7_1, cmake-4.2.2_2, compiler-rt21-21.1.7_1, curl-8.21.0_1, dhcpcd-10.3.2_1, dnssec-anchors-20260505_1, expat-2.8.3_1, expat-devel-2.8.3_1, f2fs-tools-1.16.0_2, foot-terminfo-1.27.0_1, fuse3-3.18.2_2, git-lfs-3.7.1_1, glib-2.88.0_1, glib-devel-2.88.0_1, groff-1.23.0_1, jsoncpp-1.9.6_1, kitty-terminfo-0.48.2_1, libbpf-1.7.0_1, libclang-cpp21-21.1.7_1, libclang21-21.1.7_1, libclc21-21.1.7_1, libcrypto3-3.6.3_1, libcurl-8.21.0_1, libcurl-devel-8.21.0_1, libgbm-26.1.8_1, libgbm-devel-26.1.8_1, libglib-devel-2.88.0_1, libharfbuzz-14.3.1_1, libllvm21-21.1.7_1, libnfsidmap-2.9.2_1, libomp21-21.1.7_1, libomp21-devel-21.1.7_1, libpcap-1.10.6_1, libpcre2-10.47_1, libpipewire-1.6.7_1, libpng-1.6.58_1, libpng-devel-1.6.58_1, libssl3-3.6.3_1, libthai-0.1.29_1, libtirpc-1.3.7_2, libunbound-1.26.0_1, llvm21-21.1.7_1, m4-1.4.19_1, mdocml-1.14.6_8, mesa-26.1.8_1, mesa-dri-26.1.8_1, mesa-libgallium-26.1.8_1, mesa-opencl-26.1.8_1, mlir21-21.1.7_1, nfs-utils-2.9.2_1, nspr-4.39_1, nss-3.128_1, openssh-10.5p1_1, openssl-3.6.3_1, openssl-devel-3.6.3_1, pcre2-devel-10.47_1, pipewire-devel-1.6.7_1, pv-1.11.0_1, python3-3.14.6_1, python3-Mako-1.3.2_3, python3-MarkupSafe-3.0.3_2, python3-Pygments-2.20.0_1, python3-parsing-3.3.2_1, rpcbind-1.2.9_1, rsync-3.4.4_1, runit-2.3.1_1, stress-ng-0.22.00_1, texinfo-7.3_1, tmux-3.7b_1, tzdata-2026c_1, vim-9.2.0506_1, vim-common-9.2.0506_1, vulkan-loader-1.4.350.1_1, vulkan-loader-devel-1.4.350.1_1, xorgproto-2025.1_1, xxd-9.2.0506_1

Directory size changes (>1MB)
Directory Change

Metric Value
Used space 3558.1MB / 5959.5MB
Files 54833
Directories 4694
Symlinks 3493
Packages 529

Top 10 Directories

Directory Size

Category Breakdown

Category Size %
xbps packages 2650.8MB 74.5%
Python venv 591.8MB 16.6%
Firmware 11.2MB .3%
Other 304.2MB 8.5%

Top 10 Packages by Size

Package Size
mit-krb5-libs-1.21.3_1 270.4MB
gawk-5.3.2_1 210.3MB
llvm-21_3 141.5MB
libllvm21-21.1.8_1 134.6MB
libldns-1.9.2_1 124.3MB
pd-mapper-1.0_1 74MB
glib-2.88.3_1 67.4MB
gcc-14.2.1+20250405_4 66.6MB
libclang-cpp21-21.1.8_1 58.4MB
libcap-progs-2.78_1 56MB

Top 30 Files by Size

File Size
/usr/lib/llvm/22/lib/libLLVM.so.22.1 134.5MB
/usr/lib/llvm/21/lib/libLLVM.so.21.1 124.3MB
/usr/lib/llvm/21/lib/libMLIR.so.21.1 89.7MB
/usr/lib/llvm/21/bin/mlir-transform-opt 82.9MB
/usr/lib/llvm/22/lib/libclang-cpp.so.22.1 58.4MB
/usr/lib/llvm/21/lib/libclang-cpp.so.21.1 56MB
/usr/lib/llvm/21/bin/mlir-translate 53.2MB
/usr/lib/llvm/21/bin/llvm-exegesis 52MB
/usr/lib/llvm/21/bin/llvm-bolt-binary-analysis 50.6MB
/usr/lib/gcc/aarch64-linux-gnu/14.2/gnat1 40.1MB
/usr/bin/gdb 39.1MB
/usr/lib/libgallium-26.2.5.so 38.5MB
/usr/lib/gcc/aarch64-linux-gnu/14.2/cc1plus 37.3MB
/usr/lib/libRusticlOpenCL.so.1.0.0 35.5MB
/usr/lib/libllvm-qcom.so 35.2MB
/usr/lib/gcc/aarch64-linux-gnu/14.2/cc1 35.2MB
/usr/lib/gcc/aarch64-linux-gnu/14.2/lto1 33.9MB
/usr/bin/lto-dump 33.9MB
/usr/local/venv/bin/ruff 31.8MB
/usr/share/icu/78.3/icudt78l.dat 31.5MB
/usr/bin/uv 30.4MB
/usr/lib/llvm/21/lib/libclang.so.21.1.8 30.2MB
/usr/lib/libz3.so 28.8MB
/usr/lib/llvm/21/bin/c-index-test 28.6MB
/usr/local/venv/lib/python3.12/site-packages/gcc_arm_none_eabi/toolchain/libexec/gcc/arm-none-eabi/13.2.1/cc1 28.2MB
/usr/bin/run 26.7MB
/usr/local/venv/lib/python3.12/site-packages/numpy.libs/libscipy_openblas64_-71e1b124.so 23.6MB
/usr/comma/updater 23.5MB
/usr/comma/setup 23.5MB
/usr/comma/reset 23.5MB

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant