diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2011-11-17 19:05:09 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-11-21 16:20:47 -0500 |
commit | 08d1700da05a2246ee0d9d2440d5c165615c352c (patch) | |
tree | 0a87a629a5d2cec30bddf1ea4cb57dae8a307e46 | |
parent | 1f1d528977162a1a04aaecdc7f08a5b715a58810 (diff) |
iwlwifi: check the HW when a queue is stuck
Add more information when a queue is stuck and actually get
information from the scheduler instead of looking at internal
variables.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c index a1a58330273f..3f2ceb2033dc 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | |||
@@ -1515,8 +1515,12 @@ static int iwl_trans_pcie_check_stuck_queue(struct iwl_trans *trans, int cnt) | |||
1515 | if (time_after(jiffies, timeout)) { | 1515 | if (time_after(jiffies, timeout)) { |
1516 | IWL_ERR(trans, "Queue %d stuck for %u ms.\n", q->id, | 1516 | IWL_ERR(trans, "Queue %d stuck for %u ms.\n", q->id, |
1517 | hw_params(trans).wd_timeout); | 1517 | hw_params(trans).wd_timeout); |
1518 | IWL_ERR(trans, "Current read_ptr %d write_ptr %d\n", | 1518 | IWL_ERR(trans, "Current SW read_ptr %d write_ptr %d\n", |
1519 | q->read_ptr, q->write_ptr); | 1519 | q->read_ptr, q->write_ptr); |
1520 | IWL_ERR(trans, "Current HW read_ptr %d write_ptr %d\n", | ||
1521 | iwl_read_prph(bus(trans), SCD_QUEUE_RDPTR(cnt)) | ||
1522 | & (TFD_QUEUE_SIZE_MAX - 1), | ||
1523 | iwl_read_prph(bus(trans), SCD_QUEUE_WRPTR(cnt))); | ||
1520 | return 1; | 1524 | return 1; |
1521 | } | 1525 | } |
1522 | 1526 | ||