diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2012-06-13 07:16:40 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-06-18 04:46:03 -0400 |
commit | e9d364de1aed8f7e81b3e67fdf3015533bfc76b1 (patch) | |
tree | 210d79c06c707a6f113721f7488b49f4344ed010 /drivers/net/wireless/iwlwifi/pcie/trans.c | |
parent | 303e56f2d2868f1bcdd3b72c3296d02a7af28962 (diff) |
iwlwifi: print the scratch of all the buffers stuck in a queue
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/pcie/trans.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/trans.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c index cc935168ae52..c6f53af639c6 100644 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c | |||
@@ -296,6 +296,7 @@ static void iwlagn_free_dma_ptr(struct iwl_trans *trans, | |||
296 | static void iwl_trans_pcie_queue_stuck_timer(unsigned long data) | 296 | static void iwl_trans_pcie_queue_stuck_timer(unsigned long data) |
297 | { | 297 | { |
298 | struct iwl_tx_queue *txq = (void *)data; | 298 | struct iwl_tx_queue *txq = (void *)data; |
299 | struct iwl_queue *q = &txq->q; | ||
299 | struct iwl_trans_pcie *trans_pcie = txq->trans_pcie; | 300 | struct iwl_trans_pcie *trans_pcie = txq->trans_pcie; |
300 | struct iwl_trans *trans = iwl_trans_pcie_get_trans(trans_pcie); | 301 | struct iwl_trans *trans = iwl_trans_pcie_get_trans(trans_pcie); |
301 | u32 scd_sram_addr = trans_pcie->scd_base_addr + | 302 | u32 scd_sram_addr = trans_pcie->scd_base_addr + |
@@ -346,6 +347,14 @@ static void iwl_trans_pcie_queue_stuck_timer(unsigned long data) | |||
346 | iwl_read_prph(trans, SCD_QUEUE_WRPTR(i))); | 347 | iwl_read_prph(trans, SCD_QUEUE_WRPTR(i))); |
347 | } | 348 | } |
348 | 349 | ||
350 | for (i = q->read_ptr; i != q->write_ptr; | ||
351 | i = iwl_queue_inc_wrap(i, q->n_bd)) { | ||
352 | struct iwl_tx_cmd *tx_cmd = | ||
353 | (struct iwl_tx_cmd *)txq->entries[i].cmd->payload; | ||
354 | IWL_ERR(trans, "scratch %d = 0x%08x\n", i, | ||
355 | get_unaligned_le32(&tx_cmd->scratch)); | ||
356 | } | ||
357 | |||
349 | iwl_op_mode_nic_error(trans->op_mode); | 358 | iwl_op_mode_nic_error(trans->op_mode); |
350 | } | 359 | } |
351 | 360 | ||