summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Eckelmann <sven@narfation.org>2016-02-11 23:08:20 +0100
committerSven Eckelmann <sven@narfation.org>2016-04-21 15:48:53 +0200
commit4c3eecfac3ac73e63fae28a0d51def8e1cd5e261 (patch)
treeb83616576fe33c3b27a16b998bff67cb814b2225
parent6363b1ddc5f73558ab94573b74cd4d3d600233ff (diff)
batman-adv: Add B.A.T.M.A.N. V support
Signed-off-by: Sven Eckelmann <sven@narfation.org>
-rw-r--r--batman-adv/Config.in4
-rw-r--r--batman-adv/Makefile1
-rw-r--r--batman-adv/files/compat-hacks.h37
3 files changed, 42 insertions, 0 deletions
diff --git a/batman-adv/Config.in b/batman-adv/Config.in
index 86fc795..48092e7 100644
--- a/batman-adv/Config.in
+++ b/batman-adv/Config.in
@@ -24,3 +24,7 @@ config KMOD_BATMAN_ADV_NC
depends on PACKAGE_kmod-batman-adv
default n
+config KMOD_BATMAN_ADV_BATMAN_V
+ bool "enable batman v routing algorithm"
+ depends on PACKAGE_kmod-batman-adv
+ default n
diff --git a/batman-adv/Makefile b/batman-adv/Makefile
index c071d7c..20664e1 100644
--- a/batman-adv/Makefile
+++ b/batman-adv/Makefile
@@ -54,6 +54,7 @@ PKG_EXTRA_KCONFIG:= \
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) \
+ CONFIG_BATMAN_ADV_BATMAN_V=$(if $(CONFIG_KMOD_BATMAN_ADV_BATMAN_V),y,n) \
PKG_EXTRA_CFLAGS:= \
$(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(PKG_EXTRA_KCONFIG)))) \
diff --git a/batman-adv/files/compat-hacks.h b/batman-adv/files/compat-hacks.h
index e95b64d..5126fc2 100644
--- a/batman-adv/files/compat-hacks.h
+++ b/batman-adv/files/compat-hacks.h
@@ -37,3 +37,40 @@
#define IFF_NO_QUEUE 0; dev->tx_queue_len = 0
#endif /* < KERNEL_VERSION(4, 3, 0) */
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
+
+#include <linux/ethtool.h>
+
+#define ethtool_link_ksettings batadv_ethtool_link_ksettings
+
+struct batadv_ethtool_link_ksettings {
+ struct {
+ __u32 speed;
+ __u8 duplex;
+ } base;
+};
+
+#define __ethtool_get_link_ksettings(__dev, __link_settings) \
+ batadv_ethtool_get_link_ksettings(__dev, __link_settings)
+
+static inline int
+batadv_ethtool_get_link_ksettings(struct net_device *dev,
+ struct ethtool_link_ksettings *link_ksettings)
+{
+ struct ethtool_cmd cmd;
+ int ret;
+
+ memset(&cmd, 0, sizeof(cmd));
+ ret = __ethtool_get_settings(dev, &cmd);
+
+ if (ret != 0)
+ return ret;
+
+ link_ksettings->base.duplex = cmd.duplex;
+ link_ksettings->base.speed = ethtool_cmd_speed(&cmd);
+
+ return 0;
+}
+
+#endif /* < KERNEL_VERSION(4, 6, 0) */