MT7996 (BE14): per-band WiFi 7 LEDs under single-wiphy MLO — mt76 fix

Sharing a fix that's been a long-standing annoyance on MT7996/BE14 cards: only the 2.4 GHz LED ever worked — the 5/6 GHz band LEDs stayed dark, and a WARN_ON() fired at probe.

Root cause (single-wiphy MLO model): all bands register their own LED classdev (mt76-phy0/1/2) against the same ieee80211_hw. Two driver issues:

  • The throughput LED trigger is one-per-ieee80211_hwieee80211_create_tpt_led_trigger() warns and returns NULL on the second band, so secondary bands got a NULL trigger.
  • mt7996 assigned the LED brightness_set/blink_set callbacks only to the primary (2.4 GHz) PHY, so mt76_led_init() bailed for 5/6 GHz and never registered their classdevs.

Fix — two generic mt76 driver patches (mac80211.c + mt7996/init.c, ~25 lines):

  • wifi: mt76: share the throughput LED trigger across bands
  • wifi: mt76: mt7996: register a LED classdev for every band

With both, all three per-band LEDs come up and blink on their own band's traffic — verified with single-band and active MLO clients.

Scope: this is a generic mt76/mt7996 fix, not board-specific — any MT7996/BE14 device benefits (the per-band hardware blink path already existed; only the classdev registration was missing). To light up on a given board you still need the DT to wire the gphy LED pins. Verified on BPI-R4 (incl. MLO).

Mainline (linux-wireless):
Series: [PATCH 0/2] wifi: mt76: fix per-band LEDs under single-wiphy MLO
lore: https://lore.kernel.org/linux-wireless/20260628095313.7790-1-petr.wozniak@gmail.com/
patchwork: https://patchwork.kernel.org/project/linux-wireless/list/?series=1117621

3 Likes