batman-adv: upgrade package to latest release 2017.2
authorSven Eckelmann <sven@narfation.org>
Sat, 29 Jul 2017 06:36:32 +0000 (08:36 +0200)
committerSven Eckelmann <sven@narfation.org>
Sat, 29 Jul 2017 07:26:40 +0000 (09:26 +0200)
 * 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 <sven@narfation.org>
batman-adv/Makefile
batman-adv/files/compat-hacks.h

index b744661..304df5a 100644 (file)
@@ -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)
index 8c8a889..b8bcf72 100644 (file)
 
 #endif /* < KERNEL_VERSION(4, 1, 0) */
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
+
+/* Linux 3.15 misses the uapi include.... */
+#include <uapi/linux/nl80211.h>
+
+#endif /* < KERNEL_VERSION(3, 16, 0) */
+
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)
 
 #include <linux/netdevice.h>
 
 #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) */
+
 /* <DECLARE_EWMA> */
 
 #include <linux/version.h>