[1/1] Fix l2tp stats couter on 32 Bit Systems

Submitted by Dominik Heidler on March 15, 2016, 8:35 p.m.

Details

Message ID 1458074138-12607-2-git-send-email-dominik@heidler.eu
State Superseded, archived
Headers show

Commit Message

Dominik Heidler March 15, 2016, 8:35 p.m.
Signed-off-by: Dominik Heidler <dominik@heidler.eu>
---
 net/l2tp/l2tp_eth.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Patch hide | download patch | download mbox

diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
index e253c26..a18c2ff 100644
--- a/net/l2tp/l2tp_eth.c
+++ b/net/l2tp/l2tp_eth.c
@@ -111,12 +111,21 @@  static struct rtnl_link_stats64 *l2tp_eth_get_stats64(struct net_device *dev,
 {
 	struct l2tp_eth *priv = netdev_priv(dev);
 
+	#if BITS_PER_LONG == 64
 	stats->tx_bytes   = atomic_long_read(&priv->tx_bytes);
 	stats->tx_packets = atomic_long_read(&priv->tx_packets);
 	stats->tx_dropped = atomic_long_read(&priv->tx_dropped);
 	stats->rx_bytes   = atomic_long_read(&priv->rx_bytes);
 	stats->rx_packets = atomic_long_read(&priv->rx_packets);
 	stats->rx_errors  = atomic_long_read(&priv->rx_errors);
+	#else
+	stats->tx_bytes   = (unsigned long) atomic_long_read(&priv->tx_bytes);
+	stats->tx_packets = (unsigned long) atomic_long_read(&priv->tx_packets);
+	stats->tx_dropped = (unsigned long) atomic_long_read(&priv->tx_dropped);
+	stats->rx_bytes   = (unsigned long) atomic_long_read(&priv->rx_bytes);
+	stats->rx_packets = (unsigned long) atomic_long_read(&priv->rx_packets);
+	stats->rx_errors  = (unsigned long) atomic_long_read(&priv->rx_errors);
+	#endif
 	return stats;
 }
 

Comments

Tim Niemeyer March 15, 2016, 9:25 p.m.
Moin

Wird das Problem lösen. Magst du das in die Firmware einbauen?

Tim

Am Dienstag, den 15.03.2016, 21:35 +0100 schrieb Dominik Heidler:
> Signed-off-by: Dominik Heidler <dominik@heidler.eu>
> ---
>  net/l2tp/l2tp_eth.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
> index e253c26..a18c2ff 100644
> --- a/net/l2tp/l2tp_eth.c
> +++ b/net/l2tp/l2tp_eth.c
> @@ -111,12 +111,21 @@ static struct rtnl_link_stats64 *l2tp_eth_get_stats64(struct net_device *dev,
>  {
>  	struct l2tp_eth *priv = netdev_priv(dev);
>  
> +	#if BITS_PER_LONG == 64
>  	stats->tx_bytes   = atomic_long_read(&priv->tx_bytes);
>  	stats->tx_packets = atomic_long_read(&priv->tx_packets);
>  	stats->tx_dropped = atomic_long_read(&priv->tx_dropped);
>  	stats->rx_bytes   = atomic_long_read(&priv->rx_bytes);
>  	stats->rx_packets = atomic_long_read(&priv->rx_packets);
>  	stats->rx_errors  = atomic_long_read(&priv->rx_errors);
> +	#else
> +	stats->tx_bytes   = (unsigned long) atomic_long_read(&priv->tx_bytes);
> +	stats->tx_packets = (unsigned long) atomic_long_read(&priv->tx_packets);
> +	stats->tx_dropped = (unsigned long) atomic_long_read(&priv->tx_dropped);
> +	stats->rx_bytes   = (unsigned long) atomic_long_read(&priv->rx_bytes);
> +	stats->rx_packets = (unsigned long) atomic_long_read(&priv->rx_packets);
> +	stats->rx_errors  = (unsigned long) atomic_long_read(&priv->rx_errors);
> +	#endif
>  	return stats;
>  }
>  
> -- 
> 2.7.2
>