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:53:04 -0400 [thread overview]
Message-ID: <20130801195303.GF13922@tuxdriver.com> (raw)
In-Reply-To: <20130801194418.GE13922@tuxdriver.com>
Nevermind -- I had a patch that I was applying out of order...
On Thu, Aug 01, 2013 at 03:44:18PM -0400, John W. Linville wrote:
> 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.
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
prev parent reply other threads:[~2013-08-01 20:00 UTC|newest]
Thread overview: 22+ 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:36 ` Solomon Peachy
2013-08-01 19:12 ` cross compile backports with LTIB Jonathan Bagg
2013-08-01 19:17 ` Jonathan Bagg
2013-08-07 19:55 ` Issue reading kernel config Jonathan Bagg
2013-08-07 20:33 ` Jonathan Bagg
2013-08-08 6:37 ` Johannes Berg
2013-08-08 11:45 ` Jonathan Bagg
2013-08-08 12:16 ` Johannes Berg
2013-08-01 19:44 ` [PATCH v2 8/8] ath9k: Add statistics for antenna diversity John W. Linville
2013-08-01 19:53 ` John W. Linville [this message]
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=20130801195303.GF13922@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.