[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190128234507.32028-9-jakub.kicinski@netronome.com>
Date: Mon, 28 Jan 2019 15:45:01 -0800
From: Jakub Kicinski <jakub.kicinski@...ronome.com>
To: davem@...emloft.net
Cc: oss-drivers@...ronome.com, netdev@...r.kernel.org,
jiri@...nulli.us, f.fainelli@...il.com, andrew@...n.ch,
mkubecek@...e.cz, dsahern@...il.com, simon.horman@...ronome.com,
jesse.brandeburg@...el.com, maciejromanfijalkowski@...il.com,
vasundhara-v.volam@...adcom.com, michael.chan@...adcom.com,
shalomt@...lanox.com, idosch@...lanox.com,
Jakub Kicinski <jakub.kicinski@...ronome.com>
Subject: [RFC 08/14] nfp: hstats: make use of iteration for direction
Basic RX and TX stats are the same, just at a slightly different
offset, use iteration to save code.
Signed-off-by: Jakub Kicinski <jakub.kicinski@...ronome.com>
---
.../net/ethernet/netronome/nfp/nfp_hstat.c | 48 +++++--------------
1 file changed, 12 insertions(+), 36 deletions(-)
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_hstat.c b/drivers/net/ethernet/netronome/nfp/nfp_hstat.c
index 9480d3b6caa5..d339008333bc 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_hstat.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_hstat.c
@@ -7,52 +7,29 @@
/* NFD per-vNIC stats */
static int
-nfp_hstat_vnic_nfd_basic_get_rx(struct net_device *netdev,
- struct rtnl_hstat_req *req,
- const struct rtnl_hstat_group *grp)
+nfp_hstat_vnic_nfd_basic_get(struct net_device *netdev,
+ struct rtnl_hstat_req *req,
+ const struct rtnl_hstat_group *grp)
{
struct nfp_net *nn = netdev_priv(netdev);
+ u32 off;
- rtnl_hstat_dump(req, IFLA_HSTATS_STAT_LINUX_PKTS,
- nn_readq(nn, NFP_NET_CFG_STATS_RX_FRAMES));
- rtnl_hstat_dump(req, IFLA_HSTATS_STAT_LINUX_BYTES,
- nn_readq(nn, NFP_NET_CFG_STATS_RX_OCTETS));
- return 0;
-}
-
-static const struct rtnl_hstat_group nfp_hstat_vnic_nfd_rx = {
- .qualifiers = {
- RTNL_HSTATS_QUALS_BASIC(DEV, RX),
- },
-
- .get_stats = nfp_hstat_vnic_nfd_basic_get_rx,
- .stats = {
- [0] = RTNL_HSTATS_STAT_LINUX_PKTS_BIT |
- RTNL_HSTATS_STAT_LINUX_BYTES_BIT,
- },
- .stats_cnt = 2,
-};
-
-static int
-nfp_hstat_vnic_nfd_basic_get_tx(struct net_device *netdev,
- struct rtnl_hstat_req *req,
- const struct rtnl_hstat_group *grp)
-{
- struct nfp_net *nn = netdev_priv(netdev);
+ off = rtnl_hstat_is_rx(req) ?
+ 0 : NFP_NET_CFG_STATS_TX_OCTETS - NFP_NET_CFG_STATS_RX_OCTETS;
rtnl_hstat_dump(req, IFLA_HSTATS_STAT_LINUX_PKTS,
- nn_readq(nn, NFP_NET_CFG_STATS_TX_FRAMES));
+ nn_readq(nn, NFP_NET_CFG_STATS_RX_FRAMES + off));
rtnl_hstat_dump(req, IFLA_HSTATS_STAT_LINUX_BYTES,
- nn_readq(nn, NFP_NET_CFG_STATS_TX_OCTETS));
+ nn_readq(nn, NFP_NET_CFG_STATS_RX_OCTETS + off));
return 0;
}
-static const struct rtnl_hstat_group nfp_hstat_vnic_nfd_tx = {
+static const struct rtnl_hstat_group nfp_hstat_vnic_nfd = {
.qualifiers = {
- RTNL_HSTATS_QUALS_BASIC(DEV, TX),
+ RTNL_HSTATS_QUALS_BASIC_BIDIR(DEV),
},
- .get_stats = nfp_hstat_vnic_nfd_basic_get_tx,
+ .get_stats = nfp_hstat_vnic_nfd_basic_get,
.stats = {
[0] = RTNL_HSTATS_STAT_LINUX_PKTS_BIT |
RTNL_HSTATS_STAT_LINUX_BYTES_BIT,
@@ -63,8 +40,7 @@ static const struct rtnl_hstat_group nfp_hstat_vnic_nfd_tx = {
int nfp_net_hstat_get_groups(const struct net_device *netdev,
struct rtnl_hstat_req *req)
{
- rtnl_hstat_add_grp(req, &nfp_hstat_vnic_nfd_rx);
- rtnl_hstat_add_grp(req, &nfp_hstat_vnic_nfd_tx);
+ rtnl_hstat_add_grp(req, &nfp_hstat_vnic_nfd);
return 0;
}
--
2.19.2
Powered by blists - more mailing lists