The frequency range filtering added in commit acc152f9be20 was designed for split-phy devices where multiple radios with overlapping frequency ranges within the same band are combined into a single wiphy. Each radio in such setups handles only a subset of channels within a band (e.g., two 5GHz radios covering 5GHz-low and 5GHz-high separately). However, this filtering breaks single-phy devices like WCN7850 that use a single radio to handle both 2.4GHz and 5GHz bands. On these devices, the freq_range is set to cover the entire supported spectrum, but the filtering logic incorrectly restricts channels, causing 5GHz to become completely unusable. The issue manifests as: - All 5GHz channels filtered out during channel list updates - No 5GHz SSIDs visible in scans - Only 2.4GHz networks functional Remove the frequency range filtering entirely and rely on the firmware to handle frequency restrictions based on actual hardware capabilities. This approach works correctly for both split-phy and single-phy devices, as the firmware has complete knowledge of what the hardware supports. Fixes: acc152f9be20 ("wifi: ath12k: combine channel list for split-phy devices in single-wiphy") Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302 (Lenovo Yoga Slim 7x) Signed-off-by: Saikiran --- drivers/net/wireless/ath/ath12k/reg.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/reg.c b/drivers/net/wireless/ath/ath12k/reg.c index 7898f6981e5a..48c362a86524 100644 --- a/drivers/net/wireless/ath/ath12k/reg.c +++ b/drivers/net/wireless/ath/ath12k/reg.c @@ -153,12 +153,6 @@ int ath12k_reg_update_chan_list(struct ath12k *ar, bool wait) if (bands[band]->channels[i].flags & IEEE80211_CHAN_DISABLED) continue; - /* Skip Channels that are not in current radio's range */ - if (bands[band]->channels[i].center_freq < - KHZ_TO_MHZ(ar->freq_range.start_freq) || - bands[band]->channels[i].center_freq > - KHZ_TO_MHZ(ar->freq_range.end_freq)) - continue; num_channels++; } @@ -190,13 +184,6 @@ int ath12k_reg_update_chan_list(struct ath12k *ar, bool wait) if (channel->flags & IEEE80211_CHAN_DISABLED) continue; - /* Skip Channels that are not in current radio's range */ - if (bands[band]->channels[i].center_freq < - KHZ_TO_MHZ(ar->freq_range.start_freq) || - bands[band]->channels[i].center_freq > - KHZ_TO_MHZ(ar->freq_range.end_freq)) - continue; - /* TODO: Set to true/false based on some condition? */ ch->allow_ht = true; ch->allow_vht = true; -- 2.51.0