static void
 __ath_reg_apply_beaconing_flags(struct wiphy *wiphy,
+                               struct ath_regulatory *reg,
                                enum nl80211_reg_initiator initiator,
                                struct ieee80211_channel *ch)
 {
        case NL80211_REGDOM_SET_BY_COUNTRY_IE:
                ath_force_clear_no_ir_chan(wiphy, ch);
                break;
+       case NL80211_REGDOM_SET_BY_USER:
+               if (ath_reg_dyn_country_user_allow(reg))
+                       ath_force_clear_no_ir_chan(wiphy, ch);
+               break;
        default:
                if (ch->beacon_found)
                        ch->flags &= ~IEEE80211_CHAN_NO_IR;
  */
 static void
 ath_reg_apply_beaconing_flags(struct wiphy *wiphy,
+                             struct ath_regulatory *reg,
                              enum nl80211_reg_initiator initiator)
 {
        enum ieee80211_band band;
                sband = wiphy->bands[band];
                for (i = 0; i < sband->n_channels; i++) {
                        ch = &sband->channels[i];
-                       __ath_reg_apply_beaconing_flags(wiphy, initiator, ch);
-
+                       __ath_reg_apply_beaconing_flags(wiphy, reg,
+                                                       initiator, ch);
                }
        }
 }
  */
 static void
 ath_reg_apply_ir_flags(struct wiphy *wiphy,
-                               enum nl80211_reg_initiator initiator)
+                      struct ath_regulatory *reg,
+                      enum nl80211_reg_initiator initiator)
 {
        struct ieee80211_supported_band *sband;
 
                ath_force_clear_no_ir_freq(wiphy, 2467);
                ath_force_clear_no_ir_freq(wiphy, 2472);
                break;
+       case NL80211_REGDOM_SET_BY_USER:
+               if (!ath_reg_dyn_country_user_allow(reg))
+                       break;
+               ath_force_clear_no_ir_freq(wiphy, 2467);
+               ath_force_clear_no_ir_freq(wiphy, 2472);
+               break;
        default:
                ath_force_no_ir_freq(wiphy, 2467);
                ath_force_no_ir_freq(wiphy, 2472);
        case 0x66:
        case 0x67:
        case 0x6C:
-               ath_reg_apply_beaconing_flags(wiphy, initiator);
+               ath_reg_apply_beaconing_flags(wiphy, reg, initiator);
                break;
        case 0x68:
-               ath_reg_apply_beaconing_flags(wiphy, initiator);
-               ath_reg_apply_ir_flags(wiphy, initiator);
+               ath_reg_apply_beaconing_flags(wiphy, reg, initiator);
+               ath_reg_apply_ir_flags(wiphy, reg, initiator);
                break;
+       default:
+               if (ath_reg_dyn_country_user_allow(reg))
+                       ath_reg_apply_beaconing_flags(wiphy, reg, initiator);
        }
 }