iwlwifi: pcie: support page dumping in wrt in gen2
In gen2, page dumping needs to be done in the trans layer, as it is the one with access to the paging pointers. Signed-off-by: Liad Kaufman <liad.kaufman@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
2ba57c8bf9
commit
5538409ba3
1 changed files with 29 additions and 0 deletions
|
@ -2754,6 +2754,13 @@ static struct iwl_trans_dump_data
|
|||
(PAGE_SIZE << trans_pcie->rx_page_order));
|
||||
}
|
||||
|
||||
/* Paged memory for gen2 HW */
|
||||
if (trans->cfg->gen2)
|
||||
for (i = 0; i < trans_pcie->init_dram.paging_cnt; i++)
|
||||
len += sizeof(*data) +
|
||||
sizeof(struct iwl_fw_error_dump_paging) +
|
||||
trans_pcie->init_dram.paging[i].size;
|
||||
|
||||
dump_data = vzalloc(len);
|
||||
if (!dump_data)
|
||||
return NULL;
|
||||
|
@ -2793,6 +2800,28 @@ static struct iwl_trans_dump_data
|
|||
if (dump_rbs)
|
||||
len += iwl_trans_pcie_dump_rbs(trans, &data, num_rbs);
|
||||
|
||||
/* Paged memory for gen2 HW */
|
||||
if (trans->cfg->gen2) {
|
||||
for (i = 0; i < trans_pcie->init_dram.paging_cnt; i++) {
|
||||
struct iwl_fw_error_dump_paging *paging;
|
||||
dma_addr_t addr =
|
||||
trans_pcie->init_dram.paging[i].physical;
|
||||
u32 page_len = trans_pcie->init_dram.paging[i].size;
|
||||
|
||||
data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_PAGING);
|
||||
data->len = cpu_to_le32(sizeof(*paging) + page_len);
|
||||
paging = (void *)data->data;
|
||||
paging->index = cpu_to_le32(i);
|
||||
dma_sync_single_for_cpu(trans->dev, addr, page_len,
|
||||
DMA_BIDIRECTIONAL);
|
||||
memcpy(paging->data,
|
||||
trans_pcie->init_dram.paging[i].block, page_len);
|
||||
data = iwl_fw_error_next_data(data);
|
||||
|
||||
len += sizeof(*data) + sizeof(*paging) + page_len;
|
||||
}
|
||||
}
|
||||
|
||||
len += iwl_trans_pcie_dump_monitor(trans, &data, monitor_len);
|
||||
|
||||
dump_data->len = len;
|
||||
|
|
Loading…
Add table
Reference in a new issue