aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath5k
diff options
context:
space:
mode:
authorAlina Friedrichsen <x-alina@gmx.net>2009-01-24 01:09:59 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-01-29 16:01:46 -0500
commit3b5d665b51cda73ef1a774b515afd879a38e3674 (patch)
tree68d71f6ac09f638b65ca1e256a17dfdb6c5b12b4 /drivers/net/wireless/ath5k
parent3978e5bce63484789891c67413372da3915bcbd6 (diff)
mac80211: Generic TSF debugging
This patch enables low-level driver independent debugging of the TSF and remove the driver specific things of ath5k and ath9k from the debugfs. Signed-off-by: Alina Friedrichsen <x-alina@gmx.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath5k')
-rw-r--r--drivers/net/wireless/ath5k/base.c10
-rw-r--r--drivers/net/wireless/ath5k/debug.c48
-rw-r--r--drivers/net/wireless/ath5k/debug.h1
3 files changed, 10 insertions, 49 deletions
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index fa39f21c36c3..b3f41acb9065 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -239,6 +239,7 @@ static int ath5k_get_stats(struct ieee80211_hw *hw,
239static int ath5k_get_tx_stats(struct ieee80211_hw *hw, 239static int ath5k_get_tx_stats(struct ieee80211_hw *hw,
240 struct ieee80211_tx_queue_stats *stats); 240 struct ieee80211_tx_queue_stats *stats);
241static u64 ath5k_get_tsf(struct ieee80211_hw *hw); 241static u64 ath5k_get_tsf(struct ieee80211_hw *hw);
242static void ath5k_set_tsf(struct ieee80211_hw *hw, u64 tsf);
242static void ath5k_reset_tsf(struct ieee80211_hw *hw); 243static void ath5k_reset_tsf(struct ieee80211_hw *hw);
243static int ath5k_beacon_update(struct ath5k_softc *sc, 244static int ath5k_beacon_update(struct ath5k_softc *sc,
244 struct sk_buff *skb); 245 struct sk_buff *skb);
@@ -261,6 +262,7 @@ static struct ieee80211_ops ath5k_hw_ops = {
261 .conf_tx = NULL, 262 .conf_tx = NULL,
262 .get_tx_stats = ath5k_get_tx_stats, 263 .get_tx_stats = ath5k_get_tx_stats,
263 .get_tsf = ath5k_get_tsf, 264 .get_tsf = ath5k_get_tsf,
265 .set_tsf = ath5k_set_tsf,
264 .reset_tsf = ath5k_reset_tsf, 266 .reset_tsf = ath5k_reset_tsf,
265 .bss_info_changed = ath5k_bss_info_changed, 267 .bss_info_changed = ath5k_bss_info_changed,
266}; 268};
@@ -3111,6 +3113,14 @@ ath5k_get_tsf(struct ieee80211_hw *hw)
3111} 3113}
3112 3114
3113static void 3115static void
3116ath5k_set_tsf(struct ieee80211_hw *hw, u64 tsf)
3117{
3118 struct ath5k_softc *sc = hw->priv;
3119
3120 ath5k_hw_set_tsf64(sc->ah, tsf);
3121}
3122
3123static void
3114ath5k_reset_tsf(struct ieee80211_hw *hw) 3124ath5k_reset_tsf(struct ieee80211_hw *hw)
3115{ 3125{
3116 struct ath5k_softc *sc = hw->priv; 3126 struct ath5k_softc *sc = hw->priv;
diff --git a/drivers/net/wireless/ath5k/debug.c b/drivers/net/wireless/ath5k/debug.c
index 129b72684daf..413ed689cd5f 100644
--- a/drivers/net/wireless/ath5k/debug.c
+++ b/drivers/net/wireless/ath5k/debug.c
@@ -193,50 +193,6 @@ static const struct file_operations fops_registers = {
193}; 193};
194 194
195 195
196/* debugfs: TSF */
197
198static ssize_t read_file_tsf(struct file *file, char __user *user_buf,
199 size_t count, loff_t *ppos)
200{
201 struct ath5k_softc *sc = file->private_data;
202 char buf[100];
203 snprintf(buf, sizeof(buf), "0x%016llx\n",
204 (unsigned long long)ath5k_hw_get_tsf64(sc->ah));
205 return simple_read_from_buffer(user_buf, count, ppos, buf, 19);
206}
207
208static ssize_t write_file_tsf(struct file *file,
209 const char __user *userbuf,
210 size_t count, loff_t *ppos)
211{
212 struct ath5k_softc *sc = file->private_data;
213 char buf[21];
214 unsigned long long tsf;
215
216 if (copy_from_user(buf, userbuf, min(count, sizeof(buf) - 1)))
217 return -EFAULT;
218 buf[sizeof(buf) - 1] = '\0';
219
220 if (strncmp(buf, "reset", 5) == 0) {
221 ath5k_hw_reset_tsf(sc->ah);
222 printk(KERN_INFO "debugfs reset TSF\n");
223 } else {
224 tsf = simple_strtoul(buf, NULL, 0);
225 ath5k_hw_set_tsf64(sc->ah, tsf);
226 printk(KERN_INFO "debugfs set TSF to %#018llx\n", tsf);
227 }
228
229 return count;
230}
231
232static const struct file_operations fops_tsf = {
233 .read = read_file_tsf,
234 .write = write_file_tsf,
235 .open = ath5k_debugfs_open,
236 .owner = THIS_MODULE,
237};
238
239
240/* debugfs: beacons */ 196/* debugfs: beacons */
241 197
242static ssize_t read_file_beacon(struct file *file, char __user *user_buf, 198static ssize_t read_file_beacon(struct file *file, char __user *user_buf,
@@ -430,9 +386,6 @@ ath5k_debug_init_device(struct ath5k_softc *sc)
430 sc->debug.debugfs_registers = debugfs_create_file("registers", S_IRUGO, 386 sc->debug.debugfs_registers = debugfs_create_file("registers", S_IRUGO,
431 sc->debug.debugfs_phydir, sc, &fops_registers); 387 sc->debug.debugfs_phydir, sc, &fops_registers);
432 388
433 sc->debug.debugfs_tsf = debugfs_create_file("tsf", S_IWUSR | S_IRUGO,
434 sc->debug.debugfs_phydir, sc, &fops_tsf);
435
436 sc->debug.debugfs_beacon = debugfs_create_file("beacon", S_IWUSR | S_IRUGO, 389 sc->debug.debugfs_beacon = debugfs_create_file("beacon", S_IWUSR | S_IRUGO,
437 sc->debug.debugfs_phydir, sc, &fops_beacon); 390 sc->debug.debugfs_phydir, sc, &fops_beacon);
438 391
@@ -451,7 +404,6 @@ ath5k_debug_finish_device(struct ath5k_softc *sc)
451{ 404{
452 debugfs_remove(sc->debug.debugfs_debug); 405 debugfs_remove(sc->debug.debugfs_debug);
453 debugfs_remove(sc->debug.debugfs_registers); 406 debugfs_remove(sc->debug.debugfs_registers);
454 debugfs_remove(sc->debug.debugfs_tsf);
455 debugfs_remove(sc->debug.debugfs_beacon); 407 debugfs_remove(sc->debug.debugfs_beacon);
456 debugfs_remove(sc->debug.debugfs_reset); 408 debugfs_remove(sc->debug.debugfs_reset);
457 debugfs_remove(sc->debug.debugfs_phydir); 409 debugfs_remove(sc->debug.debugfs_phydir);
diff --git a/drivers/net/wireless/ath5k/debug.h b/drivers/net/wireless/ath5k/debug.h
index ffc529393306..66f69f04e55e 100644
--- a/drivers/net/wireless/ath5k/debug.h
+++ b/drivers/net/wireless/ath5k/debug.h
@@ -72,7 +72,6 @@ struct ath5k_dbg_info {
72 struct dentry *debugfs_phydir; 72 struct dentry *debugfs_phydir;
73 struct dentry *debugfs_debug; 73 struct dentry *debugfs_debug;
74 struct dentry *debugfs_registers; 74 struct dentry *debugfs_registers;
75 struct dentry *debugfs_tsf;
76 struct dentry *debugfs_beacon; 75 struct dentry *debugfs_beacon;
77 struct dentry *debugfs_reset; 76 struct dentry *debugfs_reset;
78}; 77};