From 8da2f5cbb128e0caa88bc3ec7933fefce4d77d86 Mon Sep 17 00:00:00 2001 From: Sven Eckelmann Date: Sat, 29 Jul 2017 08:36:32 +0200 Subject: [PATCH] batman-adv: upgrade package to latest release 2017.2 * support latest kernels (3.2 - 4.13) * avoid bridge loop detection mac addresses in translation tables * coding style cleanups and refactoring * bugs squashed: - ignore invalid throughput values from wifi interfaces Signed-off-by: Sven Eckelmann --- batman-adv/Makefile | 6 ++-- batman-adv/files/compat-hacks.h | 60 +++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/batman-adv/Makefile b/batman-adv/Makefile index b744661..304df5a 100644 --- a/batman-adv/Makefile +++ b/batman-adv/Makefile @@ -10,10 +10,10 @@ include $(TOPDIR)/rules.mk PKG_NAME:=batman-adv -PKG_VERSION:=2017.1 +PKG_VERSION:=2017.2 PKG_RELEASE:=0 -PKG_MD5SUM:=f8eb805c0a0241c3bd8ec086a00f2099 -PKG_HASH:=ec1848023308c41710eeefb544580f5853d68b88a627a3f2dabaa3472b988c15 +PKG_MD5SUM:=937b5f1d0188e3522d67ad45ee0a4f5a +PKG_HASH:=d487974e21cb53d39f139e93a2cf297807df5b7bf63ba6d810bad6d91537394f PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION) diff --git a/batman-adv/files/compat-hacks.h b/batman-adv/files/compat-hacks.h index 8c8a889..b8bcf72 100644 --- a/batman-adv/files/compat-hacks.h +++ b/batman-adv/files/compat-hacks.h @@ -11,6 +11,13 @@ #endif /* < KERNEL_VERSION(4, 1, 0) */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) + +/* Linux 3.15 misses the uapi include.... */ +#include + +#endif /* < KERNEL_VERSION(3, 16, 0) */ + #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0) #include @@ -36,6 +43,11 @@ #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) +/* for batadv_v_elp_get_throughput which would have used + * STATION_INFO_EXPECTED_THROUGHPUT in Linux 4.0.0 + */ +#define NL80211_STA_INFO_EXPECTED_THROUGHPUT 28 + /* wild hack for batadv_getlink_net only */ #define get_link_net get_xstats_size || 1 ? fallback_net : (struct net*)netdev->rtnl_link_ops->get_xstats_size @@ -214,6 +226,54 @@ static inline int batadv_nla_put_u64_64bit(struct sk_buff *skb, int attrtype, #endif /* < KERNEL_VERSION(4, 10, 0) */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 9) + +/* work around missing attribute needs_free_netdev and priv_destructor in + * net_device + */ +#define ether_setup(dev) \ + void batadv_softif_free2(struct net_device *dev) \ + { \ + batadv_softif_free(dev); \ + free_netdev(dev); \ + } \ + void (*t1)(struct net_device *dev) __attribute__((unused)); \ + bool t2 __attribute__((unused)); \ + ether_setup(dev) +#define needs_free_netdev destructor = batadv_softif_free2; t2 +#define priv_destructor destructor = batadv_softif_free2; t1 + +#endif /* < KERNEL_VERSION(4, 11, 9) */ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) + +static inline void *batadv_skb_put(struct sk_buff *skb, unsigned int len) +{ + return (void *)skb_put(skb, len); +} +#define skb_put batadv_skb_put + +static inline void *skb_put_zero(struct sk_buff *skb, unsigned int len) +{ + void *tmp = skb_put(skb, len); + + memset(tmp, 0, len); + + return tmp; +} + +static inline void *skb_put_data(struct sk_buff *skb, const void *data, + unsigned int len) +{ + void *tmp = skb_put(skb, len); + + memcpy(tmp, data, len); + + return tmp; +} + +#endif /* < KERNEL_VERSION(4, 13, 0) */ + /* */ #include -- 2.30.2