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/530-ath9k_debugfs_chainmask.patch | |
parent | fee32f227e00406e2439d0313b76a21aa0e8a83f (diff) | |
download | upstream-6cdf436893d94eef9c3ee47814ea324c0ed4ce2f.tar.gz upstream-6cdf436893d94eef9c3ee47814ea324c0ed4ce2f.tar.bz2 upstream-6cdf436893d94eef9c3ee47814ea324c0ed4ce2f.zip |
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/530-ath9k_debugfs_chainmask.patch')
-rw-r--r-- | package/mac80211/patches/530-ath9k_debugfs_chainmask.patch | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/package/mac80211/patches/530-ath9k_debugfs_chainmask.patch b/package/mac80211/patches/530-ath9k_debugfs_chainmask.patch deleted file mode 100644 index a26b4dc8aa..0000000000 --- a/package/mac80211/patches/530-ath9k_debugfs_chainmask.patch +++ /dev/null @@ -1,130 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/debug.c -+++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -75,6 +75,90 @@ static const struct file_operations fops - - #endif - -+static ssize_t read_file_tx_chainmask(struct file *file, char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ struct ath_common *common = ath9k_hw_common(sc->sc_ah); -+ char buf[32]; -+ unsigned int len; -+ -+ len = snprintf(buf, sizeof(buf), "0x%08x\n", common->tx_chainmask); -+ return simple_read_from_buffer(user_buf, count, ppos, buf, len); -+} -+ -+static ssize_t write_file_tx_chainmask(struct file *file, const char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ struct ath_common *common = ath9k_hw_common(sc->sc_ah); -+ unsigned long mask; -+ 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, &mask)) -+ return -EINVAL; -+ -+ common->tx_chainmask = mask; -+ sc->sc_ah->caps.tx_chainmask = mask; -+ return count; -+} -+ -+static const struct file_operations fops_tx_chainmask = { -+ .read = read_file_tx_chainmask, -+ .write = write_file_tx_chainmask, -+ .open = ath9k_debugfs_open, -+ .owner = THIS_MODULE -+}; -+ -+ -+static ssize_t read_file_rx_chainmask(struct file *file, char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ struct ath_common *common = ath9k_hw_common(sc->sc_ah); -+ char buf[32]; -+ unsigned int len; -+ -+ len = snprintf(buf, sizeof(buf), "0x%08x\n", common->rx_chainmask); -+ return simple_read_from_buffer(user_buf, count, ppos, buf, len); -+} -+ -+static ssize_t write_file_rx_chainmask(struct file *file, const char __user *user_buf, -+ size_t count, loff_t *ppos) -+{ -+ struct ath_softc *sc = file->private_data; -+ struct ath_common *common = ath9k_hw_common(sc->sc_ah); -+ unsigned long mask; -+ 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, &mask)) -+ return -EINVAL; -+ -+ common->rx_chainmask = mask; -+ sc->sc_ah->caps.rx_chainmask = mask; -+ return count; -+} -+ -+static const struct file_operations fops_rx_chainmask = { -+ .read = read_file_rx_chainmask, -+ .write = write_file_rx_chainmask, -+ .open = ath9k_debugfs_open, -+ .owner = THIS_MODULE -+}; -+ -+ - static ssize_t read_file_dma(struct file *file, char __user *user_buf, - size_t count, loff_t *ppos) - { -@@ -574,6 +658,16 @@ int ath9k_init_debug(struct ath_hw *ah) - goto err; - #endif - -+ sc->debug.debugfs_rx_chainmask = debugfs_create_file("rx_chainmask", -+ S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, sc, &fops_rx_chainmask); -+ if (!sc->debug.debugfs_rx_chainmask) -+ goto err; -+ -+ sc->debug.debugfs_tx_chainmask = debugfs_create_file("tx_chainmask", -+ S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, sc, &fops_tx_chainmask); -+ if (!sc->debug.debugfs_tx_chainmask) -+ goto err; -+ - sc->debug.debugfs_dma = debugfs_create_file("dma", S_IRUSR, - sc->debug.debugfs_phy, sc, &fops_dma); - if (!sc->debug.debugfs_dma) -@@ -617,6 +711,8 @@ void ath9k_exit_debug(struct ath_hw *ah) - struct ath_common *common = ath9k_hw_common(ah); - struct ath_softc *sc = (struct ath_softc *) common->priv; - -+ debugfs_remove(sc->debug.debugfs_tx_chainmask); -+ debugfs_remove(sc->debug.debugfs_rx_chainmask); - 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 -@@ -123,6 +123,8 @@ struct ath_stats { - }; - - struct ath9k_debug { -+ struct dentry *debugfs_rx_chainmask; -+ struct dentry *debugfs_tx_chainmask; - struct dentry *debugfs_phy; - struct dentry *debugfs_debug; - struct dentry *debugfs_dma; |