Commit a56d9390 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

net: l2tp_eth: use generic dev->stats fields

Core networking has opt-in atomic variant of dev->stats,
simply use DEV_STATS_INC(), DEV_STATS_ADD() and DEV_STATS_READ().

v2: removed @priv local var in l2tp_eth_dev_recv() (Simon)
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Cc: Simon Horman <horms@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d12a26b7
...@@ -37,12 +37,6 @@ ...@@ -37,12 +37,6 @@
/* via netdev_priv() */ /* via netdev_priv() */
struct l2tp_eth { struct l2tp_eth {
struct l2tp_session *session; struct l2tp_session *session;
atomic_long_t tx_bytes;
atomic_long_t tx_packets;
atomic_long_t tx_dropped;
atomic_long_t rx_bytes;
atomic_long_t rx_packets;
atomic_long_t rx_errors;
}; };
/* via l2tp_session_priv() */ /* via l2tp_session_priv() */
...@@ -79,10 +73,10 @@ static netdev_tx_t l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev ...@@ -79,10 +73,10 @@ static netdev_tx_t l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev
int ret = l2tp_xmit_skb(session, skb); int ret = l2tp_xmit_skb(session, skb);
if (likely(ret == NET_XMIT_SUCCESS)) { if (likely(ret == NET_XMIT_SUCCESS)) {
atomic_long_add(len, &priv->tx_bytes); DEV_STATS_ADD(dev, tx_bytes, len);
atomic_long_inc(&priv->tx_packets); DEV_STATS_INC(dev, tx_packets);
} else { } else {
atomic_long_inc(&priv->tx_dropped); DEV_STATS_INC(dev, tx_dropped);
} }
return NETDEV_TX_OK; return NETDEV_TX_OK;
} }
...@@ -90,14 +84,12 @@ static netdev_tx_t l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev ...@@ -90,14 +84,12 @@ static netdev_tx_t l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev
static void l2tp_eth_get_stats64(struct net_device *dev, static void l2tp_eth_get_stats64(struct net_device *dev,
struct rtnl_link_stats64 *stats) struct rtnl_link_stats64 *stats)
{ {
struct l2tp_eth *priv = netdev_priv(dev); stats->tx_bytes = DEV_STATS_READ(dev, tx_bytes);
stats->tx_packets = DEV_STATS_READ(dev, tx_packets);
stats->tx_bytes = (unsigned long)atomic_long_read(&priv->tx_bytes); stats->tx_dropped = DEV_STATS_READ(dev, tx_dropped);
stats->tx_packets = (unsigned long)atomic_long_read(&priv->tx_packets); stats->rx_bytes = DEV_STATS_READ(dev, rx_bytes);
stats->tx_dropped = (unsigned long)atomic_long_read(&priv->tx_dropped); stats->rx_packets = DEV_STATS_READ(dev, rx_packets);
stats->rx_bytes = (unsigned long)atomic_long_read(&priv->rx_bytes); stats->rx_errors = DEV_STATS_READ(dev, rx_errors);
stats->rx_packets = (unsigned long)atomic_long_read(&priv->rx_packets);
stats->rx_errors = (unsigned long)atomic_long_read(&priv->rx_errors);
} }
static const struct net_device_ops l2tp_eth_netdev_ops = { static const struct net_device_ops l2tp_eth_netdev_ops = {
...@@ -126,7 +118,6 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb, ...@@ -126,7 +118,6 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb,
{ {
struct l2tp_eth_sess *spriv = l2tp_session_priv(session); struct l2tp_eth_sess *spriv = l2tp_session_priv(session);
struct net_device *dev; struct net_device *dev;
struct l2tp_eth *priv;
if (!pskb_may_pull(skb, ETH_HLEN)) if (!pskb_may_pull(skb, ETH_HLEN))
goto error; goto error;
...@@ -144,12 +135,11 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb, ...@@ -144,12 +135,11 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb,
if (!dev) if (!dev)
goto error_rcu; goto error_rcu;
priv = netdev_priv(dev);
if (dev_forward_skb(dev, skb) == NET_RX_SUCCESS) { if (dev_forward_skb(dev, skb) == NET_RX_SUCCESS) {
atomic_long_inc(&priv->rx_packets); DEV_STATS_INC(dev, rx_packets);
atomic_long_add(data_len, &priv->rx_bytes); DEV_STATS_ADD(dev, rx_bytes, data_len);
} else { } else {
atomic_long_inc(&priv->rx_errors); DEV_STATS_INC(dev, rx_errors);
} }
rcu_read_unlock(); rcu_read_unlock();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment