/*
  * Returns true for the channel numbers used without all_channels modparam.
  */
-static bool ath5k_is_standard_channel(short chan)
+static bool ath5k_is_standard_channel(short chan, enum ieee80211_band band)
 {
-       return ((chan <= 14) ||
-               /* UNII 1,2 */
-               ((chan & 3) == 0 && chan >= 36 && chan <= 64) ||
+       if (band == IEEE80211_BAND_2GHZ && chan <= 14)
+               return true;
+
+       return  /* UNII 1,2 */
+               (((chan & 3) == 0 && chan >= 36 && chan <= 64) ||
                /* midband */
                ((chan & 3) == 0 && chan >= 100 && chan <= 140) ||
                /* UNII-3 */
-               ((chan & 3) == 1 && chan >= 149 && chan <= 165));
+               ((chan & 3) == 1 && chan >= 149 && chan <= 165) ||
+               /* 802.11j 5.030-5.080 GHz (20MHz) */
+               (chan == 8 || chan == 12 || chan == 16) ||
+               /* 802.11j 4.9GHz (20MHz) */
+               (chan == 184 || chan == 188 || chan == 192 || chan == 196));
 }
 
 static unsigned int
                if (!ath5k_channel_ok(ah, freq, chfreq))
                        continue;
 
-               if (!modparam_all_channels && !ath5k_is_standard_channel(ch))
+               if (!modparam_all_channels &&
+                   !ath5k_is_standard_channel(ch, band))
                        continue;
 
                /* Write channel info and increment counter */