diff options
author | Liad Kaufman <liad.kaufman@intel.com> | 2014-12-01 10:44:18 +0200 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2014-12-28 10:17:41 +0200 |
commit | f53bf4c758c0fbe728c031621f4c5f9979cdb044 (patch) | |
tree | ff3f15552349eba7c62c4b052deb7d24efe7bfe5 /drivers/net/wireless/iwlwifi/mvm/mac80211.c | |
parent | e32ec12fd11fbccc1cb4656e34f35ad457e19e29 (diff) | |
download | blackbird-op-linux-f53bf4c758c0fbe728c031621f4c5f9979cdb044.tar.gz blackbird-op-linux-f53bf4c758c0fbe728c031621f4c5f9979cdb044.zip |
iwlwifi: mvm: add fw runtime stack to dump data
The allocation of the DCCM between the data and the stack
can theoretically change without notice to the driver, but
the total size is HW-fixed. Since the stack CCM (runtime
stack) has also data important to the FW - this patch allows
pulling the whole DCCM in one piece and adds it to the dump
data.
If the size isn't known - just use the data part of the
DCCM as it appears in the FW TLVs.
Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/mac80211.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 31a5b3f4266c..2d62b5617a56 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c @@ -767,7 +767,6 @@ void iwl_mvm_fw_error_dump(struct iwl_mvm *mvm) struct iwl_fw_error_dump_data *dump_data; struct iwl_fw_error_dump_info *dump_info; struct iwl_mvm_dump_ptrs *fw_error_dump; - const struct fw_img *img; u32 sram_len, sram_ofs; u32 file_len, rxf_len; unsigned long flags; @@ -779,9 +778,17 @@ void iwl_mvm_fw_error_dump(struct iwl_mvm *mvm) if (!fw_error_dump) return; - img = &mvm->fw->img[mvm->cur_ucode]; - sram_ofs = img->sec[IWL_UCODE_SECTION_DATA].offset; - sram_len = img->sec[IWL_UCODE_SECTION_DATA].len; + /* SRAM - include stack CCM if driver knows the values for it */ + if (!mvm->cfg->dccm_offset || !mvm->cfg->dccm_len) { + const struct fw_img *img; + + img = &mvm->fw->img[mvm->cur_ucode]; + sram_ofs = img->sec[IWL_UCODE_SECTION_DATA].offset; + sram_len = img->sec[IWL_UCODE_SECTION_DATA].len; + } else { + sram_ofs = mvm->cfg->dccm_offset; + sram_len = mvm->cfg->dccm_len; + } /* reading buffer size */ reg_val = iwl_trans_read_prph(mvm->trans, RXF_SIZE_ADDR); |