* [PATCH 1/5] ath9k: remove ath9k_sta_remove_debugfs
@ 2013-08-13 10:33 Felix Fietkau
2013-08-13 10:33 ` [PATCH 2/5] ath9k: simplify debugfs chainmask handling Felix Fietkau
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Felix Fietkau @ 2013-08-13 10:33 UTC (permalink / raw)
To: linux-wireless; +Cc: linville
mac80211 uses debugfs_remove_recursive, so there's no need for the
driver to do an explicit cleanup of its sta debugfs entry.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
---
drivers/net/wireless/ath/ath9k/ath9k.h | 4 ----
drivers/net/wireless/ath/ath9k/debug.c | 12 +-----------
drivers/net/wireless/ath/ath9k/debug.h | 4 ----
drivers/net/wireless/ath/ath9k/main.c | 1 -
4 files changed, 1 insertion(+), 20 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 7b1d036..df1c495 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -262,10 +262,6 @@ struct ath_node {
bool sleeping;
bool no_ps_filter;
-
-#if defined(CONFIG_MAC80211_DEBUGFS) && defined(CONFIG_ATH9K_DEBUGFS)
- struct dentry *node_stat;
-#endif
};
struct ath_tx_control {
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index c10cec5..e5c8333 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1725,17 +1725,7 @@ void ath9k_sta_add_debugfs(struct ieee80211_hw *hw,
struct dentry *dir)
{
struct ath_node *an = (struct ath_node *)sta->drv_priv;
- an->node_stat = debugfs_create_file("node_stat", S_IRUGO,
- dir, an, &fops_node_stat);
-}
-
-void ath9k_sta_remove_debugfs(struct ieee80211_hw *hw,
- struct ieee80211_vif *vif,
- struct ieee80211_sta *sta,
- struct dentry *dir)
-{
- struct ath_node *an = (struct ath_node *)sta->drv_priv;
- debugfs_remove(an->node_stat);
+ debugfs_create_file("node_stat", S_IRUGO, dir, an, &fops_node_stat);
}
/* Ethtool support for get-stats */
diff --git a/drivers/net/wireless/ath/ath9k/debug.h b/drivers/net/wireless/ath/ath9k/debug.h
index 01c5c6a..6e1556f 100644
--- a/drivers/net/wireless/ath/ath9k/debug.h
+++ b/drivers/net/wireless/ath/ath9k/debug.h
@@ -292,10 +292,6 @@ void ath9k_sta_add_debugfs(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_sta *sta,
struct dentry *dir);
-void ath9k_sta_remove_debugfs(struct ieee80211_hw *hw,
- struct ieee80211_vif *vif,
- struct ieee80211_sta *sta,
- struct dentry *dir);
void ath_debug_send_fft_sample(struct ath_softc *sc,
struct fft_sample_tlv *fft_sample);
void ath9k_debug_stat_ant(struct ath_softc *sc,
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 911744f..0bee105 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -2364,7 +2364,6 @@ struct ieee80211_ops ath9k_ops = {
#if defined(CONFIG_MAC80211_DEBUGFS) && defined(CONFIG_ATH9K_DEBUGFS)
.sta_add_debugfs = ath9k_sta_add_debugfs,
- .sta_remove_debugfs = ath9k_sta_remove_debugfs,
#endif
.sw_scan_start = ath9k_sw_scan_start,
.sw_scan_complete = ath9k_sw_scan_complete,
--
1.8.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 2/5] ath9k: simplify debugfs chainmask handling 2013-08-13 10:33 [PATCH 1/5] ath9k: remove ath9k_sta_remove_debugfs Felix Fietkau @ 2013-08-13 10:33 ` Felix Fietkau 2013-08-13 10:33 ` [PATCH 3/5] ath9k: avoid accessing MRC registers on single-chain devices Felix Fietkau ` (2 subsequent siblings) 3 siblings, 0 replies; 6+ messages in thread From: Felix Fietkau @ 2013-08-13 10:33 UTC (permalink / raw) To: linux-wireless; +Cc: linville Writing to that file is unnecessary and quirky, the antenna API should be used instead. Use debugfs_create_u8 to allow reading the values. Signed-off-by: Felix Fietkau <nbd@openwrt.org> --- drivers/net/wireless/ath/ath9k/debug.c | 92 ++-------------------------------- 1 file changed, 4 insertions(+), 88 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c index e5c8333..c088744 100644 --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c @@ -88,90 +88,6 @@ static const struct file_operations fops_debug = { #define DMA_BUF_LEN 1024 -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_hw *ah = sc->sc_ah; - char buf[32]; - unsigned int len; - - len = sprintf(buf, "0x%08x\n", ah->txchainmask); - 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_hw *ah = 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 -EFAULT; - - buf[len] = '\0'; - if (kstrtoul(buf, 0, &mask)) - return -EINVAL; - - ah->txchainmask = mask; - 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 = simple_open, - .owner = THIS_MODULE, - .llseek = default_llseek, -}; - - -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_hw *ah = sc->sc_ah; - char buf[32]; - unsigned int len; - - len = sprintf(buf, "0x%08x\n", ah->rxchainmask); - 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_hw *ah = 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 -EFAULT; - - buf[len] = '\0'; - if (kstrtoul(buf, 0, &mask)) - return -EINVAL; - - ah->rxchainmask = mask; - 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 = simple_open, - .owner = THIS_MODULE, - .llseek = default_llseek, -}; static ssize_t read_file_ani(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) @@ -1896,10 +1812,10 @@ int ath9k_init_debug(struct ath_hw *ah) &fops_reset); debugfs_create_file("recv", S_IRUSR, sc->debug.debugfs_phy, sc, &fops_recv); - debugfs_create_file("rx_chainmask", S_IRUSR | S_IWUSR, - sc->debug.debugfs_phy, sc, &fops_rx_chainmask); - debugfs_create_file("tx_chainmask", S_IRUSR | S_IWUSR, - sc->debug.debugfs_phy, sc, &fops_tx_chainmask); + debugfs_create_u8("rx_chainmask", S_IRUSR, sc->debug.debugfs_phy, + &ah->rxchainmask); + debugfs_create_u8("tx_chainmask", S_IRUSR, sc->debug.debugfs_phy, + &ah->txchainmask); debugfs_create_file("ani", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, sc, &fops_ani); debugfs_create_bool("paprd", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, -- 1.8.0.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/5] ath9k: avoid accessing MRC registers on single-chain devices 2013-08-13 10:33 [PATCH 1/5] ath9k: remove ath9k_sta_remove_debugfs Felix Fietkau 2013-08-13 10:33 ` [PATCH 2/5] ath9k: simplify debugfs chainmask handling Felix Fietkau @ 2013-08-13 10:33 ` Felix Fietkau 2013-08-13 12:49 ` Sujith Manoharan 2013-08-13 10:33 ` [PATCH 4/5] ath9k: simplify ath_tid_drain Felix Fietkau 2013-08-13 10:33 ` [PATCH 5/5] ath9k: reset buffer stale flag in ath_tx_get_tid_subframe Felix Fietkau 3 siblings, 1 reply; 6+ messages in thread From: Felix Fietkau @ 2013-08-13 10:33 UTC (permalink / raw) To: linux-wireless; +Cc: linville They are not implemented, and accessing them might trigger errors Cc: stable@vger.kernel.org Signed-off-by: Felix Fietkau <nbd@openwrt.org> --- drivers/net/wireless/ath/ath9k/ar9003_phy.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c index 39c3730..18a5aa4 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c @@ -1172,6 +1172,10 @@ skip_ws_det: * is_on == 0 means MRC CCK is OFF (more noise imm) */ bool is_on = param ? 1 : 0; + + if (ah->caps.rx_chainmask == 1) + break; + REG_RMW_FIELD(ah, AR_PHY_MRC_CCK_CTRL, AR_PHY_MRC_CCK_ENABLE, is_on); REG_RMW_FIELD(ah, AR_PHY_MRC_CCK_CTRL, -- 1.8.0.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 3/5] ath9k: avoid accessing MRC registers on single-chain devices 2013-08-13 10:33 ` [PATCH 3/5] ath9k: avoid accessing MRC registers on single-chain devices Felix Fietkau @ 2013-08-13 12:49 ` Sujith Manoharan 0 siblings, 0 replies; 6+ messages in thread From: Sujith Manoharan @ 2013-08-13 12:49 UTC (permalink / raw) To: Felix Fietkau; +Cc: linux-wireless, linville Felix Fietkau wrote: > They are not implemented, and accessing them might trigger errors > > Cc: stable@vger.kernel.org > Signed-off-by: Felix Fietkau <nbd@openwrt.org> > --- > drivers/net/wireless/ath/ath9k/ar9003_phy.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c > index 39c3730..18a5aa4 100644 > --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c > +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c > @@ -1172,6 +1172,10 @@ skip_ws_det: > * is_on == 0 means MRC CCK is OFF (more noise imm) > */ > bool is_on = param ? 1 : 0; > + > + if (ah->caps.rx_chainmask == 1) > + break; > + This is done in ath9k_hw_set_cck_nil(). All the 1-chain devices are handled except AR9330. Maybe the chainmask check can be moved there ? Sujith ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 4/5] ath9k: simplify ath_tid_drain 2013-08-13 10:33 [PATCH 1/5] ath9k: remove ath9k_sta_remove_debugfs Felix Fietkau 2013-08-13 10:33 ` [PATCH 2/5] ath9k: simplify debugfs chainmask handling Felix Fietkau 2013-08-13 10:33 ` [PATCH 3/5] ath9k: avoid accessing MRC registers on single-chain devices Felix Fietkau @ 2013-08-13 10:33 ` Felix Fietkau 2013-08-13 10:33 ` [PATCH 5/5] ath9k: reset buffer stale flag in ath_tx_get_tid_subframe Felix Fietkau 3 siblings, 0 replies; 6+ messages in thread From: Felix Fietkau @ 2013-08-13 10:33 UTC (permalink / raw) To: linux-wireless; +Cc: linville ath_tid_drain is only called when a station entry is being removed, so there is no point in still tracking BAW state. Remove some unnecessary code and a bogus TODO comment related to this. Signed-off-by: Felix Fietkau <nbd@openwrt.org> --- drivers/net/wireless/ath/ath9k/xmit.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 4fc80e3..cb06c1c 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c @@ -312,12 +312,6 @@ static void ath_tx_addto_baw(struct ath_softc *sc, struct ath_atx_tid *tid, } } -/* - * TODO: For frame(s) that are in the retry state, we will reuse the - * sequence number(s) without setting the retry bit. The - * alternative is to give up on these and BAR the receiver's window - * forward. - */ static void ath_tid_drain(struct ath_softc *sc, struct ath_txq *txq, struct ath_atx_tid *tid) @@ -341,14 +335,8 @@ static void ath_tid_drain(struct ath_softc *sc, struct ath_txq *txq, } list_add_tail(&bf->list, &bf_head); - - ath_tx_update_baw(sc, tid, bf->bf_state.seqno); ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0); } - - tid->seq_next = tid->seq_start; - tid->baw_tail = tid->baw_head; - tid->bar_index = -1; } static void ath_tx_set_retry(struct ath_softc *sc, struct ath_txq *txq, -- 1.8.0.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/5] ath9k: reset buffer stale flag in ath_tx_get_tid_subframe 2013-08-13 10:33 [PATCH 1/5] ath9k: remove ath9k_sta_remove_debugfs Felix Fietkau ` (2 preceding siblings ...) 2013-08-13 10:33 ` [PATCH 4/5] ath9k: simplify ath_tid_drain Felix Fietkau @ 2013-08-13 10:33 ` Felix Fietkau 3 siblings, 0 replies; 6+ messages in thread From: Felix Fietkau @ 2013-08-13 10:33 UTC (permalink / raw) To: linux-wireless; +Cc: linville If that flag stays set for a buffer that already ran through the tx path once, it might cause issues in tx completion processing. Better clear it early to ensure that this does not happen Signed-off-by: Felix Fietkau <nbd@openwrt.org> --- drivers/net/wireless/ath/ath9k/xmit.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index cb06c1c..7223e30 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c @@ -888,6 +888,8 @@ ath_tx_get_tid_subframe(struct ath_softc *sc, struct ath_txq *txq, bf = fi->bf; if (!fi->bf) bf = ath_tx_setup_buffer(sc, txq, tid, skb); + else + bf->bf_state.stale = false; if (!bf) { __skb_unlink(skb, *q); -- 1.8.0.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-08-13 12:53 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-08-13 10:33 [PATCH 1/5] ath9k: remove ath9k_sta_remove_debugfs Felix Fietkau 2013-08-13 10:33 ` [PATCH 2/5] ath9k: simplify debugfs chainmask handling Felix Fietkau 2013-08-13 10:33 ` [PATCH 3/5] ath9k: avoid accessing MRC registers on single-chain devices Felix Fietkau 2013-08-13 12:49 ` Sujith Manoharan 2013-08-13 10:33 ` [PATCH 4/5] ath9k: simplify ath_tid_drain Felix Fietkau 2013-08-13 10:33 ` [PATCH 5/5] ath9k: reset buffer stale flag in ath_tx_get_tid_subframe Felix Fietkau
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox