From: "John W. Linville" <linville@tuxdriver.com>
To: Sujith Manoharan <sujith@msujith.org>
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH v2 8/8] ath9k: Add statistics for antenna diversity
Date: Thu, 1 Aug 2013 15:44:18 -0400 [thread overview]
Message-ID: <20130801194418.GE13922@tuxdriver.com> (raw)
In-Reply-To: <1375370826-1387-1-git-send-email-sujith@msujith.org>
I can't get this one to apply. Please check the latest tree and fix
it up?
Thanks,
John
On Thu, Aug 01, 2013 at 08:57:06PM +0530, Sujith Manoharan wrote:
> From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
>
> Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
> ---
> drivers/net/wireless/ath/ath9k/antenna.c | 18 ++++---
> drivers/net/wireless/ath/ath9k/debug.c | 85 ++++++++++++++++++++++++++------
> drivers/net/wireless/ath/ath9k/debug.h | 20 +++++---
> 3 files changed, 95 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/antenna.c b/drivers/net/wireless/ath/ath9k/antenna.c
> index 42f3b87..391d557 100644
> --- a/drivers/net/wireless/ath/ath9k/antenna.c
> +++ b/drivers/net/wireless/ath/ath9k/antenna.c
> @@ -734,15 +734,18 @@ void ath_ant_comb_scan(struct ath_softc *sc, struct ath_rx_status *rs)
> antcomb->main_total_rssi += main_rssi;
> antcomb->alt_total_rssi += alt_rssi;
>
> - if (main_ant_conf == rx_ant_conf) {
> + if (main_ant_conf == rx_ant_conf)
> antcomb->main_recv_cnt++;
> - ANT_STAT_INC(ANT_MAIN, recv_cnt);
> - ANT_LNA_INC(ANT_MAIN, rx_ant_conf);
> - } else {
> + else
> antcomb->alt_recv_cnt++;
> - ANT_STAT_INC(ANT_ALT, recv_cnt);
> - ANT_LNA_INC(ANT_ALT, rx_ant_conf);
> - }
> + }
> +
> + if (main_ant_conf == rx_ant_conf) {
> + ANT_STAT_INC(ANT_MAIN, recv_cnt);
> + ANT_LNA_INC(ANT_MAIN, rx_ant_conf);
> + } else {
> + ANT_STAT_INC(ANT_ALT, recv_cnt);
> + ANT_LNA_INC(ANT_ALT, rx_ant_conf);
> }
>
> /* Short scan check */
> @@ -821,6 +824,7 @@ void ath_ant_comb_scan(struct ath_softc *sc, struct ath_rx_status *rs)
> div_comb_done:
> ath_ant_div_conf_fast_divbias(&div_ant_conf, antcomb, alt_ratio);
> ath9k_hw_antdiv_comb_conf_set(sc->sc_ah, &div_ant_conf);
> + ath9k_debug_stat_ant(sc, &div_ant_conf, main_rssi_avg, alt_rssi_avg);
>
> antcomb->scan_start_time = jiffies;
> antcomb->total_pkt_count = 0;
> diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
> index 56cbe5d..a43bd8c 100644
> --- a/drivers/net/wireless/ath/ath9k/debug.c
> +++ b/drivers/net/wireless/ath/ath9k/debug.c
> @@ -321,6 +321,20 @@ static const struct file_operations fops_bt_ant_diversity = {
> .llseek = default_llseek,
> };
>
> +void ath9k_debug_stat_ant(struct ath_softc *sc,
> + struct ath_hw_antcomb_conf *div_ant_conf,
> + int main_rssi_avg, int alt_rssi_avg)
> +{
> + struct ath_antenna_stats *as_main = &sc->debug.stats.ant_stats[ANT_MAIN];
> + struct ath_antenna_stats *as_alt = &sc->debug.stats.ant_stats[ANT_ALT];
> +
> + as_main->lna_attempt_cnt[div_ant_conf->main_lna_conf]++;
> + as_alt->lna_attempt_cnt[div_ant_conf->alt_lna_conf]++;
> +
> + as_main->rssi_avg = main_rssi_avg;
> + as_alt->rssi_avg = alt_rssi_avg;
> +}
> +
> static ssize_t read_file_antenna_diversity(struct file *file,
> char __user *user_buf,
> size_t count, loff_t *ppos)
> @@ -330,9 +344,14 @@ static ssize_t read_file_antenna_diversity(struct file *file,
> struct ath9k_hw_capabilities *pCap = &ah->caps;
> struct ath_antenna_stats *as_main = &sc->debug.stats.ant_stats[ANT_MAIN];
> struct ath_antenna_stats *as_alt = &sc->debug.stats.ant_stats[ANT_ALT];
> + struct ath_hw_antcomb_conf div_ant_conf;
> unsigned int len = 0, size = 1024;
> ssize_t retval = 0;
> char *buf;
> + char *lna_conf_str[4] = {"LNA1_MINUS_LNA2",
> + "LNA2",
> + "LNA1",
> + "LNA1_PLUS_LNA2"};
>
> buf = kzalloc(size, GFP_KERNEL);
> if (buf == NULL)
> @@ -344,28 +363,66 @@ static ssize_t read_file_antenna_diversity(struct file *file,
> goto exit;
> }
>
> + ath9k_ps_wakeup(sc);
> + ath9k_hw_antdiv_comb_conf_get(ah, &div_ant_conf);
> + len += snprintf(buf + len, size - len, "Current MAIN config : %s\n",
> + lna_conf_str[div_ant_conf.main_lna_conf]);
> + len += snprintf(buf + len, size - len, "Current ALT config : %s\n",
> + lna_conf_str[div_ant_conf.alt_lna_conf]);
> + len += snprintf(buf + len, size - len, "Average MAIN RSSI : %d\n",
> + as_main->rssi_avg);
> + len += snprintf(buf + len, size - len, "Average ALT RSSI : %d\n\n",
> + as_alt->rssi_avg);
> + ath9k_ps_restore(sc);
> +
> + len += snprintf(buf + len, size - len, "Packet Receive Cnt:\n");
> + len += snprintf(buf + len, size - len, "-------------------\n");
> +
> len += snprintf(buf + len, size - len, "%30s%15s\n",
> "MAIN", "ALT");
> - len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
> - "RECV CNT",
> + len += snprintf(buf + len, size - len, "%-14s:%15d%15d\n",
> + "TOTAL COUNT",
> as_main->recv_cnt,
> as_alt->recv_cnt);
> - len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
> + len += snprintf(buf + len, size - len, "%-14s:%15d%15d\n",
> + "LNA1",
> + as_main->lna_recv_cnt[ATH_ANT_DIV_COMB_LNA1],
> + as_alt->lna_recv_cnt[ATH_ANT_DIV_COMB_LNA1]);
> + len += snprintf(buf + len, size - len, "%-14s:%15d%15d\n",
> + "LNA2",
> + as_main->lna_recv_cnt[ATH_ANT_DIV_COMB_LNA2],
> + as_alt->lna_recv_cnt[ATH_ANT_DIV_COMB_LNA2]);
> + len += snprintf(buf + len, size - len, "%-14s:%15d%15d\n",
> + "LNA1 + LNA2",
> + as_main->lna_recv_cnt[ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2],
> + as_alt->lna_recv_cnt[ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2]);
> + len += snprintf(buf + len, size - len, "%-14s:%15d%15d\n",
> + "LNA1 - LNA2",
> + as_main->lna_recv_cnt[ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2],
> + as_alt->lna_recv_cnt[ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2]);
> +
> + len += snprintf(buf + len, size - len, "\nLNA Config Attempts:\n");
> + len += snprintf(buf + len, size - len, "--------------------\n");
> +
> + len += snprintf(buf + len, size - len, "%30s%15s\n",
> + "MAIN", "ALT");
> + len += snprintf(buf + len, size - len, "%-14s:%15d%15d\n",
> "LNA1",
> - as_main->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1],
> - as_alt->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1]);
> - len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
> + as_main->lna_attempt_cnt[ATH_ANT_DIV_COMB_LNA1],
> + as_alt->lna_attempt_cnt[ATH_ANT_DIV_COMB_LNA1]);
> + len += snprintf(buf + len, size - len, "%-14s:%15d%15d\n",
> "LNA2",
> - as_main->lna_config_cnt[ATH_ANT_DIV_COMB_LNA2],
> - as_alt->lna_config_cnt[ATH_ANT_DIV_COMB_LNA2]);
> - len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
> + as_main->lna_attempt_cnt[ATH_ANT_DIV_COMB_LNA2],
> + as_alt->lna_attempt_cnt[ATH_ANT_DIV_COMB_LNA2]);
> + len += snprintf(buf + len, size - len, "%-14s:%15d%15d\n",
> "LNA1 + LNA2",
> - as_main->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2],
> - as_alt->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2]);
> - len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
> + as_main->lna_attempt_cnt[ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2],
> + as_alt->lna_attempt_cnt[ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2]);
> + len += snprintf(buf + len, size - len, "%-14s:%15d%15d\n",
> "LNA1 - LNA2",
> - as_main->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2],
> - as_alt->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2]);
> + as_main->lna_attempt_cnt[ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2],
> + as_alt->lna_attempt_cnt[ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2]);
> +
> exit:
> if (len > size)
> len = size;
> diff --git a/drivers/net/wireless/ath/ath9k/debug.h b/drivers/net/wireless/ath/ath9k/debug.h
> index a879e45..01c5c6a 100644
> --- a/drivers/net/wireless/ath/ath9k/debug.h
> +++ b/drivers/net/wireless/ath/ath9k/debug.h
> @@ -29,7 +29,7 @@ struct fft_sample_tlv;
> #define TX_STAT_INC(q, c) sc->debug.stats.txstats[q].c++
> #define RESET_STAT_INC(sc, type) sc->debug.stats.reset[type]++
> #define ANT_STAT_INC(i, c) sc->debug.stats.ant_stats[i].c++
> -#define ANT_LNA_INC(i, c) sc->debug.stats.ant_stats[i].lna_config_cnt[c]++;
> +#define ANT_LNA_INC(i, c) sc->debug.stats.ant_stats[i].lna_recv_cnt[c]++;
> #else
> #define TX_STAT_INC(q, c) do { } while (0)
> #define RESET_STAT_INC(sc, type) do { } while (0)
> @@ -252,7 +252,9 @@ struct ath_rx_stats {
>
> struct ath_antenna_stats {
> u32 recv_cnt;
> - u32 lna_config_cnt[4];
> + u32 rssi_avg;
> + u32 lna_recv_cnt[4];
> + u32 lna_attempt_cnt[4];
> };
>
> struct ath_stats {
> @@ -294,10 +296,11 @@ 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,
> + struct ath_hw_antcomb_conf *div_ant_conf,
> + int main_rssi_avg, int alt_rssi_avg);
> #else
>
> #define RX_STAT_INC(c) /* NOP */
> @@ -310,12 +313,10 @@ static inline int ath9k_init_debug(struct ath_hw *ah)
> static inline void ath9k_deinit_debug(struct ath_softc *sc)
> {
> }
> -
> static inline void ath_debug_stat_interrupt(struct ath_softc *sc,
> enum ath9k_int status)
> {
> }
> -
> static inline void ath_debug_stat_tx(struct ath_softc *sc,
> struct ath_buf *bf,
> struct ath_tx_status *ts,
> @@ -323,11 +324,16 @@ static inline void ath_debug_stat_tx(struct ath_softc *sc,
> unsigned int flags)
> {
> }
> -
> static inline void ath_debug_stat_rx(struct ath_softc *sc,
> struct ath_rx_status *rs)
> {
> }
> +static inline void ath9k_debug_stat_ant(struct ath_softc *sc,
> + struct ath_hw_antcomb_conf *div_ant_conf,
> + int main_rssi_avg, int alt_rssi_avg)
> +{
> +
> +}
>
> #endif /* CONFIG_ATH9K_DEBUGFS */
>
> --
> 1.8.3.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
next prev parent reply other threads:[~2013-08-01 19:45 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-01 6:23 [PATCH 1/8] ath9k: Do a quick scan only when scan_not_start is true Sujith Manoharan
2013-08-01 6:23 ` [PATCH 2/8] ath9k: Use a subroutine to check for short scan Sujith Manoharan
2013-08-01 6:23 ` [PATCH 3/8] ath9k: Add ALT check for cards with GROUP-3 config Sujith Manoharan
2013-08-01 6:23 ` [PATCH 4/8] ath9k: Use a subroutine to try LNA switch Sujith Manoharan
2013-08-01 6:23 ` [PATCH 5/8] ath9k: Use a helper function for checking LNA options Sujith Manoharan
2013-08-01 6:23 ` [PATCH 6/8] ath9k: Simplify checks in quick_scan Sujith Manoharan
2013-08-01 6:23 ` [PATCH 7/8] ath9k: Use a subroutine to calculate ALT ratio Sujith Manoharan
2013-08-01 6:23 ` [PATCH 8/8] ath9k: Add statistics for antenna diversity Sujith Manoharan
2013-08-01 15:27 ` [PATCH v2 " Sujith Manoharan
2013-08-01 16:37 ` cross compile backports? Jonathan Bagg
2013-08-01 17:47 ` Solomon Peachy
2013-08-01 19:03 ` Luis R. Rodriguez
2013-08-01 19:12 ` cross compile backports with LTIB Jonathan Bagg
2013-08-01 19:17 ` Jonathan Bagg
2013-08-01 19:44 ` John W. Linville [this message]
2013-08-01 19:53 ` [PATCH v2 8/8] ath9k: Add statistics for antenna diversity John W. Linville
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130801194418.GE13922@tuxdriver.com \
--to=linville@tuxdriver.com \
--cc=linux-wireless@vger.kernel.org \
--cc=sujith@msujith.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).