From: greearb@candelatech.com
To: netdev@vger.kernel.org
Cc: linux-wireless@vger.kernel.org, ath10k@lists.infradead.org,
Ben Greear <greearb@candelatech.com>
Subject: [PATCH 2/3] mac80211: Add support for ethtool gstats2 API.
Date: Tue, 17 Apr 2018 18:49:35 -0700 [thread overview]
Message-ID: <1524016176-3881-2-git-send-email-greearb@candelatech.com> (raw)
In-Reply-To: <1524016176-3881-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
This enables users to request fewer stats to be refreshed
in cases where firmware does not need to be probed.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
include/net/mac80211.h | 6 ++++++
net/mac80211/driver-ops.h | 9 +++++++--
net/mac80211/ethtool.c | 18 +++++++++++++-----
3 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index d2279b2..4854f33 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -3361,6 +3361,8 @@ enum ieee80211_reconfig_type {
*
* @get_et_stats: Ethtool API to get a set of u64 stats.
*
+ * @get_et_stats2: Ethtool API to get a set of u64 stats, with flags.
+ *
* @get_et_strings: Ethtool API to get a set of strings to describe stats
* and perhaps other supported types of ethtool data-sets.
*
@@ -3692,6 +3694,10 @@ struct ieee80211_ops {
void (*get_et_stats)(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ethtool_stats *stats, u64 *data);
+ void (*get_et_stats2)(struct ieee80211_hw *hw,
+ struct ieee80211_vif *vif,
+ struct ethtool_stats *stats, u64 *data,
+ u32 flags);
void (*get_et_strings)(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
u32 sset, u8 *data);
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index 4d82fe7..519d2db 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -58,10 +58,15 @@ static inline void drv_get_et_strings(struct ieee80211_sub_if_data *sdata,
static inline void drv_get_et_stats(struct ieee80211_sub_if_data *sdata,
struct ethtool_stats *stats,
- u64 *data)
+ u64 *data, u32 flags)
{
struct ieee80211_local *local = sdata->local;
- if (local->ops->get_et_stats) {
+ if (local->ops->get_et_stats2) {
+ trace_drv_get_et_stats(local);
+ local->ops->get_et_stats2(&local->hw, &sdata->vif, stats, data,
+ flags);
+ trace_drv_return_void(local);
+ } else if (local->ops->get_et_stats) {
trace_drv_get_et_stats(local);
local->ops->get_et_stats(&local->hw, &sdata->vif, stats, data);
trace_drv_return_void(local);
diff --git a/net/mac80211/ethtool.c b/net/mac80211/ethtool.c
index 9cc986d..b67520e 100644
--- a/net/mac80211/ethtool.c
+++ b/net/mac80211/ethtool.c
@@ -61,9 +61,9 @@ static int ieee80211_get_sset_count(struct net_device *dev, int sset)
return rv;
}
-static void ieee80211_get_stats(struct net_device *dev,
- struct ethtool_stats *stats,
- u64 *data)
+static void ieee80211_get_stats2(struct net_device *dev,
+ struct ethtool_stats *stats,
+ u64 *data, u32 flags)
{
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
struct ieee80211_chanctx_conf *chanctx_conf;
@@ -199,7 +199,14 @@ static void ieee80211_get_stats(struct net_device *dev,
if (WARN_ON(i != STA_STATS_LEN))
return;
- drv_get_et_stats(sdata, stats, &(data[STA_STATS_LEN]));
+ drv_get_et_stats(sdata, stats, &data[STA_STATS_LEN], flags);
+}
+
+static void ieee80211_get_stats(struct net_device *dev,
+ struct ethtool_stats *stats,
+ u64 *data)
+{
+ ieee80211_get_stats2(dev, stats, data, 0);
}
static void ieee80211_get_strings(struct net_device *dev, u32 sset, u8 *data)
@@ -211,7 +218,7 @@ static void ieee80211_get_strings(struct net_device *dev, u32 sset, u8 *data)
sz_sta_stats = sizeof(ieee80211_gstrings_sta_stats);
memcpy(data, ieee80211_gstrings_sta_stats, sz_sta_stats);
}
- drv_get_et_strings(sdata, sset, &(data[sz_sta_stats]));
+ drv_get_et_strings(sdata, sset, &data[sz_sta_stats]);
}
static int ieee80211_get_regs_len(struct net_device *dev)
@@ -238,5 +245,6 @@ const struct ethtool_ops ieee80211_ethtool_ops = {
.set_ringparam = ieee80211_set_ringparam,
.get_strings = ieee80211_get_strings,
.get_ethtool_stats = ieee80211_get_stats,
+ .get_ethtool_stats2 = ieee80211_get_stats2,
.get_sset_count = ieee80211_get_sset_count,
};
--
2.4.11
next prev parent reply other threads:[~2018-04-18 1:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-18 1:49 [PATCH 1/3] ethtool: Support ETHTOOL_GSTATS2 command greearb-my8/4N5VtI7c+919tysfdA
2018-04-18 1:49 ` greearb [this message]
2018-04-18 1:49 ` [PATCH 3/3] ath10k: Support ethtool gstats2 API greearb
2018-04-19 11:19 ` kbuild test robot
2018-04-18 21:07 ` [PATCH 1/3] ethtool: Support ETHTOOL_GSTATS2 command Florian Fainelli
2018-04-18 21:26 ` Johannes Berg
2018-04-18 21:51 ` Ben Greear
2018-04-19 6:38 ` Johannes Berg
2018-04-19 15:25 ` Ben Greear
[not found] ` <173c5f98-36bc-2e52-1e64-3a5f89008d46-my8/4N5VtI7c+919tysfdA@public.gmane.org>
2018-04-19 15:26 ` Johannes Berg
[not found] ` <1524151617.3024.25.camel-cdvu00un1VgdHxzADdlk8Q@public.gmane.org>
2018-04-22 18:54 ` David Miller
[not found] ` <20180422.145420.1197041027922699603.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2018-04-22 21:15 ` Roopa Prabhu
2018-04-23 15:41 ` Ben Greear
2018-04-23 15:38 ` Ben Greear
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=1524016176-3881-2-git-send-email-greearb@candelatech.com \
--to=greearb@candelatech.com \
--cc=ath10k@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.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).