From patchwork Wed Mar 16 15:35:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Fix l2tp stat counter From: Dominik Heidler X-Patchwork-Id: 19 Message-Id: <1458142510-3295-1-git-send-email-dominik@heidler.eu> To: franken-dev@freifunk.net Date: Wed, 16 Mar 2016 16:35:10 +0100 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 Reviewed-by: Tim Niemeyer --- 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 ++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