The per-band LED callbacks (brightness_set/blink_set) were only assigned to the primary PHY (dev->mphy) in mt7996_init_wiphy(). The 5/6 GHz bands are brought up later through mt7996_register_phy() -> mt7996_init_wiphy_band(), which never set those callbacks, so mt76_led_init() bailed out early for them and only the 2.4 GHz LED was ever registered. The hardware path is already per band: mt7996_led_set_config() indexes MT_LED_EN()/MT_LED_CTRL()/MT_LED_TX_BLINK() by mphy->band_idx, so per-band hardware TX-blink works as soon as the classdev exists. Move the callback assignment into mt7996_init_wiphy_band(), which runs for every band, so a LED classdev is registered for each band. Signed-off-by: Petr Wozniak --- .../net/wireless/mediatek/mt76/mt7996/init.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/init.c b/drivers/net/wireless/mediatek/mt76/mt7996/init.c index d6f9aa1ab..b77b85654 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7996/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7996/init.c @@ -472,6 +472,18 @@ mt7996_init_wiphy_band(struct ieee80211_hw *hw, struct mt7996_phy *phy) mt7996_set_stream_vht_txbf_caps(phy); mt7996_set_stream_he_eht_caps(phy); mt7996_init_txpower(phy); + + /* Register a LED classdev for every band, not just the primary one. + * Under single-wiphy MLO the 5/6 GHz bands are brought up through + * mt7996_register_phy(); without these callbacks mt76_led_init() skips + * them and only the 2.4 GHz LED is exposed. The hardware TX-blink path + * is already indexed by band_idx, so per-band blink works once the + * classdev exists. + */ + if (IS_ENABLED(CONFIG_MT76_LEDS)) { + phy->mt76->leds.cdev.brightness_set = mt7996_led_set_brightness; + phy->mt76->leds.cdev.blink_set = mt7996_led_set_blink; + } } static void @@ -542,12 +554,6 @@ mt7996_init_wiphy(struct ieee80211_hw *hw, struct mtk_wed_device *wed) hw->max_tx_fragments = 4; wiphy->txq_memory_limit = 32 << 20; /* 32 MiB */ - /* init led callbacks */ - if (IS_ENABLED(CONFIG_MT76_LEDS)) { - dev->mphy.leds.cdev.brightness_set = mt7996_led_set_brightness; - dev->mphy.leds.cdev.blink_set = mt7996_led_set_blink; - } - wiphy->max_scan_ssids = 4; wiphy->max_scan_ie_len = IEEE80211_MAX_DATA_LEN; -- 2.51.0