[PATCH] Fix l2tp stat counter
Tim Niemeyer
tim at tn-x.org
Do Mär 24 23:46:18 CET 2016
Hi
Rebased und applied.
Tim
Am Mittwoch, den 16.03.2016, 16:35 +0100 schrieb Dominik Heidler:
> The 32 bit counter was incorrectly interpreted as signed
> when being converted to the 64 bit value used for the
> sysfs output.
>
> Signed-off-by: Dominik Heidler <dominik at heidler.eu>
> ---
> build_patches/ar71xx-3.18-l2tp-stats.patch | 42 ++++++++++++++++++++++++++++++
> buildscript | 3 +++
> 2 files changed, 45 insertions(+)
> create mode 100644 build_patches/ar71xx-3.18-l2tp-stats.patch
>
> diff --git a/build_patches/ar71xx-3.18-l2tp-stats.patch b/build_patches/ar71xx-3.18-l2tp-stats.patch
> new file mode 100644
> index 0000000..039d2c8
> --- /dev/null
> +++ b/build_patches/ar71xx-3.18-l2tp-stats.patch
> @@ -0,0 +1,42 @@
> +diff -ruN a/target/linux/ar71xx/patches-3.18/fix-l2tp-stats-couter-on-32-Bit-Systems.patch b/target/linux/ar71xx/patches-3.18/fix-l2tp-stats-couter-on-32-Bit-Systems.patch
> +--- a/target/linux/ar71xx/patches-3.18/fix-l2tp-stats-couter-on-32-Bit-Systems.patch 1970-01-01 01:00:00.000000000 +0100
> ++++ b/target/linux/ar71xx/patches-3.18/fix-l2tp-stats-couter-on-32-Bit-Systems.patch 2016-03-12 18:41:32.818602442 +0100
> +@@ -0,0 +1,38 @@
> ++From 19b1c8733b99f13005f2d8918bce588f0b2556f8 Mon Sep 17 00:00:00 2001
> ++From: Dominik Heidler <dominik at heidler.eu>
> ++Date: Sat, 12 Mar 2016 18:37:42 +0100
> ++Subject: [PATCH] Fix l2tp stats couter on 32 Bit Systems
> ++
> ++---
> ++ 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
> ++
> diff --git a/buildscript b/buildscript
> index 362781a..6f4bb09 100755
> --- a/buildscript
> +++ b/buildscript
> @@ -171,6 +171,9 @@ prepare() {
> #add Support for GL-AR150 see also http://git.openwrt.org/?p=openwrt.git;a=commit;h=8211e81bce57392635fa3ad6572514387118e4a5
> patch -p0 -d "$target" -i "$PWD"/build_patches/ar71xx-add-support-for-GL-AR150.patch
>
> + # fix l2tp stat counter on 32 Bit systems
> + patch -p1 -d "$target" -i "$PWD"/build_patches/ar71xx-3.18-l2tp-stats.patch
> +
> #saves ~200MB for each build
> test -d ./src/dl || mkdir ./src/dl
> ln -s ../../src/dl "$target"/dl
> --
> 2.7.2
>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 473 bytes
Beschreibung: This is a digitally signed message part
URL : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20160324/d1c914bb/attachment-0002.sig>
Mehr Informationen über die Mailingliste franken-dev