batman-adv: Add B.A.T.M.A.N. V support
[lede-routing/.git] / batman-adv / files / compat-hacks.h
index e95b64da16e8fd557876b06bb853ea762f356bd2..5126fc232e456398c6d8168b1d133a04ba533b69 100644 (file)
 #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) */