// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
- * Copyright (C) 2012-2014, 2018-2021 Intel Corporation
+ * Copyright (C) 2012-2014, 2018-2022 Intel Corporation
  * Copyright (C) 2013-2014 Intel Mobile Communications GmbH
  * Copyright (C) 2017 Intel Deutschland GmbH
  */
         * otherwise we might not be able to reuse this phy.
         */
        if (ctxt->ref == 0) {
-               struct ieee80211_channel *chan;
+               struct ieee80211_channel *chan = NULL;
                struct cfg80211_chan_def chandef;
-               struct ieee80211_supported_band *sband = NULL;
-               enum nl80211_band band = NL80211_BAND_2GHZ;
+               struct ieee80211_supported_band *sband;
+               enum nl80211_band band;
+               int channel;
 
-               while (!sband && band < NUM_NL80211_BANDS)
-                       sband = mvm->hw->wiphy->bands[band++];
+               for (band = NL80211_BAND_2GHZ; band < NUM_NL80211_BANDS; band++) {
+                       sband = mvm->hw->wiphy->bands[band];
 
-               if (WARN_ON(!sband))
-                       return;
+                       if (!sband)
+                               continue;
+
+                       for (channel = 0; channel < sband->n_channels; channel++)
+                               if (!(sband->channels[channel].flags &
+                                               IEEE80211_CHAN_DISABLED)) {
+                                       chan = &sband->channels[channel];
+                                       break;
+                               }
 
-               chan = &sband->channels[0];
+                       if (chan)
+                               break;
+               }
+
+               if (WARN_ON(!chan))
+                       return;
 
                cfg80211_chandef_create(&chandef, chan, NL80211_CHAN_NO_HT);
                iwl_mvm_phy_ctxt_changed(mvm, ctxt, &chandef, 1, 1);