struct iwl_fw_error_dump_file *dump_file;
        struct scatterlist *sg_dump_data;
        u32 file_len;
+       u32 dump_mask = fwrt->fw->dbg.dump_mask;
 
        IWL_DEBUG_INFO(fwrt, "WRT dump start\n");
 
                goto out;
        }
 
-       fw_error_dump->trans_ptr = iwl_trans_dump_data(fwrt->trans,
-                                                      fwrt->dump.monitor_only);
+       if (fwrt->dump.monitor_only)
+               dump_mask &= IWL_FW_ERROR_DUMP_FW_MONITOR;
+
+       fw_error_dump->trans_ptr = iwl_trans_dump_data(fwrt->trans, dump_mask);
        file_len = le32_to_cpu(dump_file->file_len);
        fw_error_dump->fwrt_len = file_len;
        if (fw_error_dump->trans_ptr) {
 
        void (*resume)(struct iwl_trans *trans);
 
        struct iwl_trans_dump_data *(*dump_data)(struct iwl_trans *trans,
-                                                bool monitor_only);
+                                                u32 dump_mask);
 };
 
 /**
        const struct iwl_fw_dbg_dest_tlv_v1 *dbg_dest_tlv;
        const struct iwl_fw_dbg_conf_tlv *dbg_conf_tlv[FW_DBG_CONF_MAX];
        struct iwl_fw_dbg_trigger_tlv * const *dbg_trigger_tlv;
-       u32 dbg_dump_mask;
        u8 dbg_n_dest_reg;
        int num_blocks;
        struct iwl_dram_data fw_mon[IWL_MAX_DEBUG_ALLOCATIONS];
 }
 
 static inline struct iwl_trans_dump_data *
-iwl_trans_dump_data(struct iwl_trans *trans, bool monitor_only)
+iwl_trans_dump_data(struct iwl_trans *trans, u32 dump_mask)
 {
        if (!trans->ops->dump_data)
                return NULL;
-       return trans->ops->dump_data(trans, monitor_only);
+       return trans->ops->dump_data(trans, dump_mask);
 }
 
 static inline struct iwl_device_cmd *
 
 
 static struct iwl_trans_dump_data
 *iwl_trans_pcie_dump_data(struct iwl_trans *trans,
-                         bool monitor_only)
+                         u32 dump_mask)
 {
        struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
        struct iwl_fw_error_dump_data *data;
        int i, ptr;
        bool dump_rbs = test_bit(STATUS_FW_ERROR, &trans->status) &&
                        !trans->cfg->mq_rx_supported &&
-                       trans->dbg_dump_mask & BIT(IWL_FW_ERROR_DUMP_RB);
+                       dump_mask & BIT(IWL_FW_ERROR_DUMP_RB);
+
+       if (!dump_mask)
+               return NULL;
 
        /* transport dump header */
        len = sizeof(*dump_data);
        /* FW monitor */
        monitor_len = iwl_trans_get_fw_monitor_len(trans, &len);
 
-       if (monitor_only) {
-               if (!(trans->dbg_dump_mask &
-                     BIT(IWL_FW_ERROR_DUMP_FW_MONITOR)))
-                       return NULL;
-
+       if (dump_mask == BIT(IWL_FW_ERROR_DUMP_FW_MONITOR)) {
                dump_data = vzalloc(len);
                if (!dump_data)
                        return NULL;
        }
 
        /* CSR registers */
-       if (trans->dbg_dump_mask & BIT(IWL_FW_ERROR_DUMP_CSR))
+       if (dump_mask & BIT(IWL_FW_ERROR_DUMP_CSR))
                len += sizeof(*data) + IWL_CSR_TO_DUMP;
 
        /* FH registers */
-       if (trans->dbg_dump_mask & BIT(IWL_FW_ERROR_DUMP_FH_REGS)) {
+       if (dump_mask & BIT(IWL_FW_ERROR_DUMP_FH_REGS)) {
                if (trans->cfg->gen2)
                        len += sizeof(*data) +
                               (FH_MEM_UPPER_BOUND_GEN2 -
        }
 
        /* Paged memory for gen2 HW */
-       if (trans->cfg->gen2 &&
-           trans->dbg_dump_mask & BIT(IWL_FW_ERROR_DUMP_PAGING))
+       if (trans->cfg->gen2 && dump_mask & BIT(IWL_FW_ERROR_DUMP_PAGING))
                for (i = 0; i < trans_pcie->init_dram.paging_cnt; i++)
                        len += sizeof(*data) +
                               sizeof(struct iwl_fw_error_dump_paging) +
        len = 0;
        data = (void *)dump_data->data;
 
-       if (trans->dbg_dump_mask & BIT(IWL_FW_ERROR_DUMP_TXCMD)) {
+       if (dump_mask & BIT(IWL_FW_ERROR_DUMP_TXCMD)) {
                u16 tfd_size = trans_pcie->tfd_size;
 
                data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_TXCMD);
                data = iwl_fw_error_next_data(data);
        }
 
-       if (trans->dbg_dump_mask & BIT(IWL_FW_ERROR_DUMP_CSR))
+       if (dump_mask & BIT(IWL_FW_ERROR_DUMP_CSR))
                len += iwl_trans_pcie_dump_csr(trans, &data);
-       if (trans->dbg_dump_mask & BIT(IWL_FW_ERROR_DUMP_FH_REGS))
+       if (dump_mask & BIT(IWL_FW_ERROR_DUMP_FH_REGS))
                len += iwl_trans_pcie_fh_regs_dump(trans, &data);
        if (dump_rbs)
                len += iwl_trans_pcie_dump_rbs(trans, &data, num_rbs);
 
        /* Paged memory for gen2 HW */
-       if (trans->cfg->gen2 &&
-           trans->dbg_dump_mask & BIT(IWL_FW_ERROR_DUMP_PAGING)) {
+       if (trans->cfg->gen2 && dump_mask & BIT(IWL_FW_ERROR_DUMP_PAGING)) {
                for (i = 0; i < trans_pcie->init_dram.paging_cnt; i++) {
                        struct iwl_fw_error_dump_paging *paging;
                        dma_addr_t addr =
                        len += sizeof(*data) + sizeof(*paging) + page_len;
                }
        }
-       if (trans->dbg_dump_mask & BIT(IWL_FW_ERROR_DUMP_FW_MONITOR))
+       if (dump_mask & BIT(IWL_FW_ERROR_DUMP_FW_MONITOR))
                len += iwl_trans_pcie_dump_monitor(trans, &data, monitor_len);
 
        dump_data->len = len;