aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwmc3200wifi/debugfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/debugfs.c')
-rw-r--r--drivers/net/wireless/iwmc3200wifi/debugfs.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/debugfs.c b/drivers/net/wireless/iwmc3200wifi/debugfs.c
index 1465379f900a..cbb81befdb55 100644
--- a/drivers/net/wireless/iwmc3200wifi/debugfs.c
+++ b/drivers/net/wireless/iwmc3200wifi/debugfs.c
@@ -21,6 +21,7 @@
21 * 21 *
22 */ 22 */
23 23
24#include <linux/slab.h>
24#include <linux/kernel.h> 25#include <linux/kernel.h>
25#include <linux/bitops.h> 26#include <linux/bitops.h>
26#include <linux/debugfs.h> 27#include <linux/debugfs.h>
@@ -89,7 +90,7 @@ static int iwm_debugfs_dbg_modules_write(void *data, u64 val)
89 for (i = 0; i < __IWM_DM_NR; i++) 90 for (i = 0; i < __IWM_DM_NR; i++)
90 iwm->dbg.dbg_module[i] = 0; 91 iwm->dbg.dbg_module[i] = 0;
91 92
92 for_each_bit(bit, &iwm->dbg.dbg_modules, __IWM_DM_NR) 93 for_each_set_bit(bit, &iwm->dbg.dbg_modules, __IWM_DM_NR)
93 iwm->dbg.dbg_module[bit] = iwm->dbg.dbg_level; 94 iwm->dbg.dbg_module[bit] = iwm->dbg.dbg_level;
94 95
95 return 0; 96 return 0;
@@ -158,6 +159,29 @@ static ssize_t iwm_debugfs_txq_read(struct file *filp, char __user *buffer,
158 } 159 }
159 160
160 spin_unlock_irqrestore(&txq->queue.lock, flags); 161 spin_unlock_irqrestore(&txq->queue.lock, flags);
162
163 spin_lock_irqsave(&txq->stopped_queue.lock, flags);
164
165 len += snprintf(buf + len, buf_len - len,
166 "\tStopped Queue len: %d\n",
167 skb_queue_len(&txq->stopped_queue));
168 for (j = 0; j < skb_queue_len(&txq->stopped_queue); j++) {
169 struct iwm_tx_info *tx_info;
170
171 skb = skb->next;
172 tx_info = skb_to_tx_info(skb);
173
174 len += snprintf(buf + len, buf_len - len,
175 "\tSKB #%d\n", j);
176 len += snprintf(buf + len, buf_len - len,
177 "\t\tsta: %d\n", tx_info->sta);
178 len += snprintf(buf + len, buf_len - len,
179 "\t\tcolor: %d\n", tx_info->color);
180 len += snprintf(buf + len, buf_len - len,
181 "\t\ttid: %d\n", tx_info->tid);
182 }
183
184 spin_unlock_irqrestore(&txq->stopped_queue.lock, flags);
161 } 185 }
162 186
163 ret = simple_read_from_buffer(buffer, len, ppos, buf, buf_len); 187 ret = simple_read_from_buffer(buffer, len, ppos, buf, buf_len);