* @IWL_UCODE_TLV_CAPA_SPP_AMSDU_SUPPORT: Support SPP (signaling and payload
  *     protected) A-MSDU.
  * @IWL_UCODE_TLV_CAPA_SECURE_LTF_SUPPORT: Support secure LTF measurement.
+ * @IWL_UCODE_TLV_CAPA_MONITOR_PASSIVE_CHANS: Support monitor mode on otherwise
+ *     passive channels
  *
  * @NUM_IWL_UCODE_TLV_CAPA: number of bits used
  */
        IWL_UCODE_TLV_CAPA_SNIFF_VALIDATE_SUPPORT       = (__force iwl_ucode_tlv_capa_t)116,
        IWL_UCODE_TLV_CAPA_CHINA_22_REG_SUPPORT         = (__force iwl_ucode_tlv_capa_t)117,
        IWL_UCODE_TLV_CAPA_SECURE_LTF_SUPPORT           = (__force iwl_ucode_tlv_capa_t)121,
+       IWL_UCODE_TLV_CAPA_MONITOR_PASSIVE_CHANS        = (__force iwl_ucode_tlv_capa_t)122,
        NUM_IWL_UCODE_TLV_CAPA
 /*
  * This construction make both sparse (which cannot increment the previous
 
        return NL80211_BAND_2GHZ;
 }
 
-static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg,
+static int iwl_init_channel_map(struct iwl_trans *trans,
+                               const struct iwl_fw *fw,
                                struct iwl_nvm_data *data,
                                const void * const nvm_ch_flags,
                                u32 sbands_flags, bool v4)
 {
+       const struct iwl_cfg *cfg = trans->cfg;
+       struct device *dev = trans->dev;
        int ch_idx;
        int n_channels = 0;
        struct ieee80211_channel *channel;
                else
                        channel->flags = 0;
 
+               if (fw_has_capa(&fw->ucode_capa,
+                               IWL_UCODE_TLV_CAPA_MONITOR_PASSIVE_CHANS))
+                       channel->flags |= IEEE80211_CHAN_CAN_MONITOR;
+
                iwl_nvm_print_channel_flags(dev, IWL_DL_EEPROM,
                                            channel->hw_value, ch_flags);
                IWL_DEBUG_EEPROM(dev, "Ch. %d: %ddBm\n",
                            const struct iwl_fw *fw)
 {
        struct device *dev = trans->dev;
-       const struct iwl_cfg *cfg = trans->cfg;
        int n_channels;
        int n_used = 0;
        struct ieee80211_supported_band *sband;
 
-       n_channels = iwl_init_channel_map(dev, cfg, data, nvm_ch_flags,
+       n_channels = iwl_init_channel_map(trans, fw, data, nvm_ch_flags,
                                          sbands_flags, v4);
        sband = &data->bands[NL80211_BAND_2GHZ];
        sband->band = NL80211_BAND_2GHZ;