From: Sven Eckelmann <sven@narfation.org>
Date: Thu, 21 Jan 2016 16:04:20 +0100
Subject: [PATCH] batman-adv: Use the mac80211 compat layer
---
batman-adv/Makefile | 40 +++++++++++++++++---------
batman-adv/patches/0000-compat-hacks.patch | 46 ++++++++++++++++++++++++++++++
2 files changed, 72 insertions(+), 14 deletions(-)
create mode 100644 batman-adv/patches/0000-compat-hacks.patch
@@ -27,7 +27,7 @@ define KernelPackage/batman-adv
URL:=https://www.open-mesh.org/
MAINTAINER:=Marek Lindner <mareklindner@neomailbox.ch>
SUBMENU:=Network Support
- DEPENDS:=+KMOD_BATMAN_ADV_BLA:kmod-lib-crc16 +kmod-crypto-core +kmod-crypto-crc32c +kmod-lib-crc32c
+ DEPENDS:=+KMOD_BATMAN_ADV_BLA:kmod-lib-crc16 +kmod-crypto-core +kmod-crypto-crc32c +kmod-lib-crc32c +kmod-cfg80211
TITLE:=B.A.T.M.A.N. Adv
FILES:=$(PKG_BUILD_DIR)/net/batman-adv/batman-adv.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,50,batman-adv)
@@ -47,20 +47,36 @@ define Package/kmod-batman-adv/conffiles
/etc/config/batman-adv
endef
-MAKE_BATMAN_ADV_ARGS += \
- CROSS_COMPILE="$(TARGET_CROSS)" \
- KERNELPATH="$(LINUX_DIR)" \
- ARCH="$(LINUX_KARCH)" \
- PATH="$(TARGET_PATH)" \
- SUBDIRS="$(PKG_BUILD_DIR)" \
- PWD="$(PKG_BUILD_DIR)" \
- LINUX_VERSION="$(LINUX_VERSION)" \
+PKG_EXTRA_KCONFIG:= \
+ CONFIG_BATMAN_ADV=m \
CONFIG_BATMAN_ADV_DEBUG=$(if $(CONFIG_KMOD_BATMAN_ADV_DEBUG_LOG),y,n) \
CONFIG_BATMAN_ADV_BLA=$(if $(CONFIG_KMOD_BATMAN_ADV_BLA),y,n) \
CONFIG_BATMAN_ADV_DAT=$(if $(CONFIG_KMOD_BATMAN_ADV_DAT),y,n) \
CONFIG_BATMAN_ADV_MCAST=$(if $(CONFIG_KMOD_BATMAN_ADV_MCAST),y,n) \
CONFIG_BATMAN_ADV_NC=$(if $(CONFIG_KMOD_BATMAN_ADV_NC),y,n) \
- REVISION="" all
+
+PKG_EXTRA_CFLAGS:= \
+ $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(PKG_EXTRA_KCONFIG)))) \
+ $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(PKG_EXTRA_KCONFIG)))) \
+
+NOSTDINC_FLAGS = \
+ -I$(PKG_BUILD_DIR)/net/batman-adv \
+ -I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \
+ -I$(STAGING_DIR)/usr/include/mac80211-backport \
+ -I$(STAGING_DIR)/usr/include/mac80211/uapi \
+ -I$(STAGING_DIR)/usr/include/mac80211 \
+ -include backport/backport.h
+
+define Build/Compile
+ +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \
+ ARCH="$(LINUX_KARCH)" \
+ CROSS_COMPILE="$(TARGET_CROSS)" \
+ SUBDIRS="$(PKG_BUILD_DIR)/net/batman-adv" \
+ $(PKG_EXTRA_KCONFIG) \
+ EXTRA_CFLAGS="$(PKG_EXTRA_CFLAGS)" \
+ NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
+ modules
+endef
define Build/Prepare
$(call Build/Prepare/Default)
@@ -68,10 +84,6 @@ define Build/Prepare
$(PKG_BUILD_DIR)/net/batman-adv/main.h
endef
-define Build/Compile
- $(MAKE) -C "$(PKG_BUILD_DIR)" $(MAKE_BATMAN_ADV_ARGS)
-endef
-
define Build/Clean
rm -rf $(BUILD_DIR)/$(PKG_NAME)/
endef
new file mode 100644
@@ -0,0 +1,46 @@
+diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c
+index 730cfa8..39e5694 100644
+--- a/net/batman-adv/hard-interface.c
++++ b/net/batman-adv/hard-interface.c
+@@ -47,6 +47,24 @@
+ #include "sysfs.h"
+ #include "translation-table.h"
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)
++
++#define dev_get_iflink(_net_dev) ((_net_dev)->iflink)
++
++#endif /* < KERNEL_VERSION(4, 1, 0) */
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)
++
++#define netdev_master_upper_dev_link(dev, upper_dev, upper_priv, upper_info) \
++ netdev_set_master(dev, upper_dev)
++
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0)
++
++#define netdev_master_upper_dev_link(dev, upper_dev, upper_priv, upper_info) \
++ netdev_master_upper_dev_link(dev, upper_dev)
++
++#endif /* < KERNEL_VERSION(4, 5, 0) */
++
+ /**
+ * batadv_hardif_release - release hard interface from lists and queue for
+ * free after rcu grace period
+diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
+index 6c65de9..06d0330 100644
+--- a/net/batman-adv/soft-interface.c
++++ b/net/batman-adv/soft-interface.c
+@@ -60,6 +60,12 @@
+ #include "sysfs.h"
+ #include "translation-table.h"
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0)
++
++#define IFF_NO_QUEUE 0; dev->tx_queue_len = 0
++
++#endif /* < KERNEL_VERSION(4, 3, 0) */
++
+ static int batadv_get_settings(struct net_device *dev, struct ethtool_cmd *cmd);
+ static void batadv_get_drvinfo(struct net_device *dev,
+ struct ethtool_drvinfo *info);