AW: b43: ac rev1 captured packets with ampdu

andreas.wendleder andreas.wendleder at proton.me
Sat Oct 10 05:59:10 PDT 2026


Hi Alessio,

Three findings on the MacBookAir6,1 (2.4 GHz, ucode 832.127), all thanks to your code and captures:

1. RX level. Your rxgainctrl write 0x1726 = 0x000c is worth 26 dB here. With it my remaining PHY table replay is gone.
2. Second TX chain. The chipcontrol |= 0x8 at the end of your fem2_sub1_setup is what turns on TX on core 1. I had ported the two PHY writes but not that one: core 1 did not radiate and MCS 8–15 failed completely. The bit survives a module reload, so it only shows after a cold boot.
3. A-MPDU TX works, with the microcode building the aggregates as in your notes. What it needed beyond 0x45c0 and the cache info:
   - the frame's seq_ctrl in the header's sequence field;
   - cache info bytes 0–1 zero when encrypting in software. The stock 50 04 makes the microcode encrypt again: the AP acks the frame and drops it;
   - session frames reported to mac80211 with IEEE80211_TX_STAT_AMPDU, or minstrel_ht ignores them;
   - the attempt count of a status (word 2, bits 7:0) divided by its MPDU count;
   - a requeue in the driver for MPDUs the microcode reports unacked. It gives up after a few attempts, and without the requeue TCP collapses.

   Result: about 30 Mbit/s up at HT20 over 15 minutes, against 20 at legacy rates.

One question: my TX gain sits at index 64 of acphy_txgain_epa_2g_2069rev4 (the reset value), and going to index 96 collapses the link at 1 m from the AP. Have you seen what a healthy board transmits with on 2.4 GHz, or is there more to the PA/FEM setup than fem2_sub1_setup?

Thanks, Andreas



More information about the b43-dev mailing list