← Back

Linux Wireless Kernel Patch

C Linux Kernel Wireless Networking mac80211
View on GitHub ↗

What it is

My Wi-Fi was stuck at 54 Mbps when it should have been hitting 1 Gbps. The kernel was silently picking the slower mode with no indication anything was wrong. Went into the driver to find out why, then patched it.

The problem

Intel AX200 cards and Rogers XB10 routers have a beacon frame incompatibility that causes the mac80211 driver to silently downgrade from 802.11ac to 802.11n. The result is a 54 Mbps connection instead of 1000+ Mbps. No error, no log entry, nothing.

Before & after

Before patch — 54 Mbps
Before — 54 Mbps · click to enlarge
After patch — 1020 Mbps
After — 1020 Mbps · click to enlarge

How I fixed it

Traced through the mac80211 wireless stack until I found where the speed negotiation breaks. The driver was accepting the downgrade without validating it. Patched it to hold the correct HT mode.