Kernel patch that fixes WiFi stuck at 54 Mbps when your card has fewer spatial streams than the AP's basic MCS set requires.
Some access points (e.g. Xfinity XB8, other 4x4 MIMO routers) include 3 or 4 spatial stream MCS indexes in their basic HT-MCS set. Linux's mac80211 checks if your card supports all basic MCS rates — if it doesn't (e.g. a 2x2 card like MediaTek MT7922), HT is disabled entirely and you're stuck at 802.11a/g rates (54 Mbps max).
$ dmesg | grep HT
wlan0: required MCSes not supported, disabling HT
The card works fine using its own 2-stream rates for data — mac80211 is just being overly strict about an AP misconfiguration you can't control.
A one-line patch to ieee80211_verify_sta_ht_mcs_support() in net/mac80211/mlme.c that skips the basic MCS set validation.
Before: 54 Mbps, no HT After: ~960 Mbps, HE-MCS 9, 80MHz, 2 NSS
Requires linux-headers and base-devel:
git clone https://github.com/WoodyWoodster/mac80211-mcs-patch.git
cd mac80211-mcs-patch
sudo ./install.shThis copies the script and patch to /usr/local/share/mac80211-mcs-patch/, installs a pacman hook for auto-rebuild on kernel updates, and builds the module for your current kernel.
Load it now (drops WiFi for ~2 seconds):
sudo bash -c 'rmmod mt7921e mt7921_common mt792x_lib mt76_connac_lib mt76 mac80211 && modprobe mac80211 && modprobe mt7921e'Or just reboot.
git clone https://github.com/WoodyWoodster/mac80211-mcs-patch.git
cd mac80211-mcs-patch
sudo ./rebuild-mac80211.shThe rebuild script downloads the matching kernel source, applies the patch, builds, and installs the module. You'll need to re-run it after kernel updates (or set up your own hook).
dmesg | grep "required MCSes not supported"If that shows disabling HT, this patch is for you.
- Card: MediaTek MT7922 (mt7921e) — 2x2 WiFi 6E
- AP: Xfinity XB8 — 4x4 MIMO
- Kernel: 6.19.x
Should help any 1x1/2x2 card paired with a 3x3/4x4 AP that sets aggressive basic MCS rates. The patch is in generic mac80211, not driver-specific.
skip-basic-mcs-check.patch # The kernel patch
rebuild-mac80211.sh # Downloads source, patches, builds, installs
install.sh # Arch Linux installer (copies files + pacman hook)
91-mac80211-patch.hook # Pacman hook for auto-rebuild on kernel updates
MIT