batman-adv: Drop manual installation of compat-hacks.h
[feed/routing.git] / batman-adv / files / compat-hacks.h
diff --git a/batman-adv/files/compat-hacks.h b/batman-adv/files/compat-hacks.h
deleted file mode 100644 (file)
index 4511184..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-/* Please avoid adding hacks here - instead add it to mac80211/backports.git */
-
-#undef CONFIG_MODULE_STRIPPED
-
-#include <linux/version.h>     /* LINUX_VERSION_CODE */
-#include <linux/types.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(4, 5, 0)
-
-#include <linux/netdevice.h>
-
-#define netdev_master_upper_dev_link(dev, upper_dev, upper_priv, upper_info, extack) ({\
-       BUILD_BUG_ON(upper_priv != NULL); \
-       BUILD_BUG_ON(upper_info != NULL); \
-       BUILD_BUG_ON(extack != NULL); \
-       netdev_master_upper_dev_link(dev, upper_dev); \
-})
-
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
-
-#include <linux/netdevice.h>
-
-#define netdev_master_upper_dev_link(dev, upper_dev, upper_priv, upper_info, extack) ({\
-       BUILD_BUG_ON(extack != NULL); \
-       netdev_master_upper_dev_link(dev, upper_dev, upper_priv, upper_info); \
-})
-
-#endif /* < KERNEL_VERSION(4, 5, 0) */
-
-
-#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
-
-#endif /* < KERNEL_VERSION(4, 0, 0) */
-
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0)
-
-struct sk_buff *skb_checksum_trimmed(struct sk_buff *skb,
-                                    unsigned int transport_len,
-                                    __sum16(*skb_chkf)(struct sk_buff *skb));
-
-int ip_mc_check_igmp(struct sk_buff *skb, struct sk_buff **skb_trimmed);
-
-int ipv6_mc_check_mld(struct sk_buff *skb, struct sk_buff **skb_trimmed);
-
-#endif /* < KERNEL_VERSION(4, 2, 0) */
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0)
-
-#define IFF_NO_QUEUE   0; dev->tx_queue_len = 0
-
-static inline bool hlist_fake(struct hlist_node *h)
-{
-       return h->pprev == &h->next;
-}
-
-#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;
-               __u8    autoneg;
-       } 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);
-       link_ksettings->base.autoneg = cmd.autoneg;
-
-       return 0;
-}
-
-#endif /* < KERNEL_VERSION(4, 6, 0) */
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)
-
-#ifdef netif_trans_update
-#undef netif_trans_update
-#endif
-
-#define netif_trans_update batadv_netif_trans_update
-static inline void batadv_netif_trans_update(struct net_device *dev)
-{
-       dev->trans_start = jiffies;
-}
-
-#endif /* < KERNEL_VERSION(4, 7, 0) */
-
-
-#include_next <linux/netlink.h>
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)
-
-#include_next <net/netlink.h>
-
-static inline bool batadv_nla_need_padding_for_64bit(struct sk_buff *skb);
-
-static inline int batadv_nla_align_64bit(struct sk_buff *skb, int padattr)
-{
-       if (batadv_nla_need_padding_for_64bit(skb) &&
-           !nla_reserve(skb, padattr, 0))
-               return -EMSGSIZE;
-
-       return 0;
-}
-
-static inline struct nlattr *batadv__nla_reserve_64bit(struct sk_buff *skb,
-                                                      int attrtype,
-                                                      int attrlen, int padattr)
-{
-       if (batadv_nla_need_padding_for_64bit(skb))
-               batadv_nla_align_64bit(skb, padattr);
-
-       return __nla_reserve(skb, attrtype, attrlen);
-}
-
-static inline void batadv__nla_put_64bit(struct sk_buff *skb, int attrtype,
-                                        int attrlen, const void *data,
-                                        int padattr)
-{
-       struct nlattr *nla;
-
-       nla = batadv__nla_reserve_64bit(skb, attrtype, attrlen, padattr);
-       memcpy(nla_data(nla), data, attrlen);
-}
-
-static inline bool batadv_nla_need_padding_for_64bit(struct sk_buff *skb)
-{
-#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
-       /* The nlattr header is 4 bytes in size, that's why we test
-        * if the skb->data _is_ aligned.  A NOP attribute, plus
-        * nlattr header for next attribute, will make nla_data()
-        * 8-byte aligned.
-        */
-       if (IS_ALIGNED((unsigned long)skb_tail_pointer(skb), 8))
-               return true;
-#endif
-       return false;
-}
-
-static inline int batadv_nla_total_size_64bit(int payload)
-{
-       return NLA_ALIGN(nla_attr_size(payload))
-#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
-               + NLA_ALIGN(nla_attr_size(0))
-#endif
-               ;
-}
-
-static inline int batadv_nla_put_64bit(struct sk_buff *skb, int attrtype,
-                                      int attrlen, const void *data,
-                                      int padattr)
-{
-       size_t len;
-
-       if (batadv_nla_need_padding_for_64bit(skb))
-               len = batadv_nla_total_size_64bit(attrlen);
-       else
-               len = nla_total_size(attrlen);
-       if (unlikely(skb_tailroom(skb) < len))
-               return -EMSGSIZE;
-
-       batadv__nla_put_64bit(skb, attrtype, attrlen, data, padattr);
-       return 0;
-}
-
-#ifdef nla_put_u64_64bit
-#undef nla_put_u64_64bit
-#endif
-
-#define nla_put_u64_64bit(_skb, _attrtype, _value, _padattr) \
-       batadv_nla_put_u64_64bit(_skb, _attrtype, _value, _padattr)
-static inline int batadv_nla_put_u64_64bit(struct sk_buff *skb, int attrtype,
-                                          u64 value, int padattr)
-{
-       return batadv_nla_put_64bit(skb, attrtype, sizeof(u64), &value,
-                                   padattr);
-}
-
-#endif /* < KERNEL_VERSION(4, 7, 0) */
-
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
-
-#include_next <linux/cache.h>
-
-/* hack for netlink.c which marked the family ops as ro */
-#ifdef __ro_after_init
-#undef __ro_after_init
-#endif
-#define __ro_after_init
-
-#endif /* < KERNEL_VERSION(4, 10, 0) */
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 9)
-
-#include <linux/netdevice.h>
-
-/* 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);
-}
-#ifdef skb_put
-#undef skb_put
-#endif
-
-#define skb_put batadv_skb_put
-
-static inline void *batadv_skb_put_zero(struct sk_buff *skb, unsigned int len)
-{
-       void *tmp = skb_put(skb, len);
-
-       memset(tmp, 0, len);
-
-       return tmp;
-}
-#ifdef skb_put_zero
-#undef skb_put_zero
-#endif
-
-#define skb_put_zero batadv_skb_put_zero
-
-static inline void *batadv_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;
-}
-#ifdef skb_put_data
-#undef skb_put_data
-#endif
-
-#define skb_put_data batadv_skb_put_data
-
-#endif /* < KERNEL_VERSION(4, 13, 0) */
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
-
-#define batadv_softif_slave_add(__dev, __slave_dev, __extack) \
-       batadv_softif_slave_add(__dev, __slave_dev)
-
-#endif /* < KERNEL_VERSION(4, 15, 0) */
-
-#ifndef from_timer
-
-#define TIMER_DATA_TYPE                unsigned long
-#define TIMER_FUNC_TYPE                void (*)(TIMER_DATA_TYPE)
-
-static inline void timer_setup(struct timer_list *timer,
-                              void (*callback)(struct timer_list *),
-                              unsigned int flags)
-{
-       __setup_timer(timer, (TIMER_FUNC_TYPE)callback,
-                     (TIMER_DATA_TYPE)timer, flags);
-}
-
-#define from_timer(var, callback_timer, timer_fieldname) \
-       container_of(callback_timer, typeof(*var), timer_fieldname)
-
-#endif /* !from_timer */
-       
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 16, 0)
-
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
-
-#include <net/cfg80211.h>
-
-/* cfg80211 fix: https://patchwork.kernel.org/patch/10449857/ */
-static inline int batadv_cfg80211_get_station(struct net_device *dev,
-                                             const u8 *mac_addr,
-                                             struct station_info *sinfo)
-{
-       memset(sinfo, 0, sizeof(*sinfo));
-       return cfg80211_get_station(dev, mac_addr, sinfo);
-}
-
-#define cfg80211_get_station(dev, mac_addr, sinfo) \
-       batadv_cfg80211_get_station(dev, mac_addr, sinfo)
-
-#endif /* < KERNEL_VERSION(4, 18, 0) */
-
-
-#ifdef __CHECK_POLL
-typedef unsigned __bitwise __poll_t;
-#else
-typedef unsigned __poll_t;
-#endif
-
-#endif /* < KERNEL_VERSION(4, 16, 0) */
-
-/* <DECLARE_EWMA> */
-
-#include <linux/version.h>
-#include_next <linux/average.h>
-
-#include <linux/bug.h>
-
-#ifdef DECLARE_EWMA
-#undef DECLARE_EWMA
-#endif /* DECLARE_EWMA */
-
-/*
- * Exponentially weighted moving average (EWMA)
- *
- * This implements a fixed-precision EWMA algorithm, with both the
- * precision and fall-off coefficient determined at compile-time
- * and built into the generated helper funtions.
- *
- * The first argument to the macro is the name that will be used
- * for the struct and helper functions.
- *
- * The second argument, the precision, expresses how many bits are
- * used for the fractional part of the fixed-precision values.
- *
- * The third argument, the weight reciprocal, determines how the
- * new values will be weighed vs. the old state, new values will
- * get weight 1/weight_rcp and old values 1-1/weight_rcp. Note
- * that this parameter must be a power of two for efficiency.
- */
-
-#define DECLARE_EWMA(name, _precision, _weight_rcp)                    \
-       struct ewma_##name {                                            \
-               unsigned long internal;                                 \
-       };                                                              \
-       static inline void ewma_##name##_init(struct ewma_##name *e)    \
-       {                                                               \
-               BUILD_BUG_ON(!__builtin_constant_p(_precision));        \
-               BUILD_BUG_ON(!__builtin_constant_p(_weight_rcp));       \
-               /*                                                      \
-                * Even if you want to feed it just 0/1 you should have \
-                * some bits for the non-fractional part...             \
-                */                                                     \
-               BUILD_BUG_ON((_precision) > 30);                        \
-               BUILD_BUG_ON_NOT_POWER_OF_2(_weight_rcp);               \
-               e->internal = 0;                                        \
-       }                                                               \
-       static inline unsigned long                                     \
-       ewma_##name##_read(struct ewma_##name *e)                       \
-       {                                                               \
-               BUILD_BUG_ON(!__builtin_constant_p(_precision));        \
-               BUILD_BUG_ON(!__builtin_constant_p(_weight_rcp));       \
-               BUILD_BUG_ON((_precision) > 30);                        \
-               BUILD_BUG_ON_NOT_POWER_OF_2(_weight_rcp);               \
-               return e->internal >> (_precision);                     \
-       }                                                               \
-       static inline void ewma_##name##_add(struct ewma_##name *e,     \
-                                            unsigned long val)         \
-       {                                                               \
-               unsigned long internal = READ_ONCE(e->internal);        \
-               unsigned long weight_rcp = ilog2(_weight_rcp);          \
-               unsigned long precision = _precision;                   \
-                                                                       \
-               BUILD_BUG_ON(!__builtin_constant_p(_precision));        \
-               BUILD_BUG_ON(!__builtin_constant_p(_weight_rcp));       \
-               BUILD_BUG_ON((_precision) > 30);                        \
-               BUILD_BUG_ON_NOT_POWER_OF_2(_weight_rcp);               \
-                                                                       \
-               WRITE_ONCE(e->internal, internal ?                      \
-                       (((internal << weight_rcp) - internal) +        \
-                               (val << precision)) >> weight_rcp :     \
-                       (val << precision));                            \
-       }
-
-/* </DECLARE_EWMA> */