diff options
author | Felix Fietkau <nbd@openwrt.org> | 2009-12-05 17:12:56 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2009-12-05 17:12:56 +0000 |
commit | 6cdf436893d94eef9c3ee47814ea324c0ed4ce2f (patch) | |
tree | 35ed81d367fb463fdf89733428a0aca2cb9ed3dc /package/mac80211/patches/540-ath9k_debugfs_regaccess.patch | |
parent | fee32f227e00406e2439d0313b76a21aa0e8a83f (diff) | |
download | mtk-20170518-6cdf436893d94eef9c3ee47814ea324c0ed4ce2f.zip mtk-20170518-6cdf436893d94eef9c3ee47814ea324c0ed4ce2f.tar.gz mtk-20170518-6cdf436893d94eef9c3ee47814ea324c0ed4ce2f.tar.bz2 |
mac80211: update to compat-wireless 2009-12-05 and fix a critical bug in ath9k tx status reporting
SVN-Revision: 18666
Diffstat (limited to 'package/mac80211/patches/540-ath9k_debugfs_regaccess.patch')
-rw-r--r-- | package/mac80211/patches/540-ath9k_debugfs_regaccess.patch | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/package/mac80211/patches/540-ath9k_debugfs_regaccess.patch b/package/mac80211/patches/540-ath9k_debugfs_regaccess.patch deleted file mode 100644 index b927b55..0000000 --- a/package/mac80211/patches/540-ath9k_debugfs_regaccess.patch +++ /dev/null @@ -1,128 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/debug.c -+++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -638,6 +638,86 @@ static const struct file_operations fops - .owner = THIS_MODULE - }; - -+static ssize_t read_file_regidx(struct file *file, char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ char buf[32]; -+ unsigned int len; -+ -+ len = snprintf(buf, sizeof(buf), "0x%08x\n", sc->debug.regidx); -+ return simple_read_from_buffer(user_buf, count, ppos, buf, len); -+} -+ -+static ssize_t write_file_regidx(struct file *file, const char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ unsigned long regidx; -+ char buf[32]; -+ ssize_t len; -+ -+ len = min(count, sizeof(buf) - 1); -+ if (copy_from_user(buf, user_buf, len)) -+ return -EINVAL; -+ -+ buf[len] = '\0'; -+ if (strict_strtoul(buf, 0, ®idx)) -+ return -EINVAL; -+ -+ sc->debug.regidx = regidx; -+ return count; -+} -+ -+static const struct file_operations fops_regidx = { -+ .read = read_file_regidx, -+ .write = write_file_regidx, -+ .open = ath9k_debugfs_open, -+ .owner = THIS_MODULE -+}; -+ -+static ssize_t read_file_regval(struct file *file, char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ struct ath_hw *ah = sc->sc_ah; -+ char buf[32]; -+ unsigned int len; -+ u32 regval; -+ -+ regval = REG_READ_D(ah, sc->debug.regidx); -+ len = snprintf(buf, sizeof(buf), "0x%08x\n", regval); -+ return simple_read_from_buffer(user_buf, count, ppos, buf, len); -+} -+ -+static ssize_t write_file_regval(struct file *file, const char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ struct ath_hw *ah = sc->sc_ah; -+ unsigned long regval; -+ char buf[32]; -+ ssize_t len; -+ -+ len = min(count, sizeof(buf) - 1); -+ if (copy_from_user(buf, user_buf, len)) -+ return -EINVAL; -+ -+ buf[len] = '\0'; -+ if (strict_strtoul(buf, 0, ®val)) -+ return -EINVAL; -+ -+ REG_WRITE_D(ah, sc->debug.regidx, regval); -+ return count; -+} -+ -+static const struct file_operations fops_regval = { -+ .read = read_file_regval, -+ .write = write_file_regval, -+ .open = ath9k_debugfs_open, -+ .owner = THIS_MODULE -+}; -+ - int ath9k_init_debug(struct ath_hw *ah) - { - struct ath_common *common = ath9k_hw_common(ah); -@@ -700,6 +780,17 @@ int ath9k_init_debug(struct ath_hw *ah) - if (!sc->debug.debugfs_xmit) - goto err; - -+ sc->debug.regidx = 0; -+ sc->debug.debugfs_regidx = debugfs_create_file("regidx", -+ S_IRUSR|S_IWUSR, sc->debug.debugfs_phy, sc, &fops_regidx); -+ if (!sc->debug.debugfs_regidx) -+ goto err; -+ -+ sc->debug.debugfs_regval = debugfs_create_file("regval", -+ S_IRUSR|S_IWUSR, sc->debug.debugfs_phy, sc, &fops_regval); -+ if (!sc->debug.debugfs_regval) -+ goto err; -+ - return 0; - err: - ath9k_exit_debug(ah); -@@ -713,6 +804,8 @@ void ath9k_exit_debug(struct ath_hw *ah) - - debugfs_remove(sc->debug.debugfs_tx_chainmask); - debugfs_remove(sc->debug.debugfs_rx_chainmask); -+ debugfs_remove(sc->debug.debugfs_regval); -+ debugfs_remove(sc->debug.debugfs_regidx); - debugfs_remove(sc->debug.debugfs_xmit); - debugfs_remove(sc->debug.debugfs_wiphy); - debugfs_remove(sc->debug.debugfs_rcstat); ---- a/drivers/net/wireless/ath/ath9k/debug.h -+++ b/drivers/net/wireless/ath/ath9k/debug.h -@@ -132,6 +132,9 @@ struct ath9k_debug { - struct dentry *debugfs_rcstat; - struct dentry *debugfs_wiphy; - struct dentry *debugfs_xmit; -+ struct dentry *debugfs_regidx; -+ struct dentry *debugfs_regval; -+ u32 regidx; - struct ath_stats stats; - }; - |