X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=batman-adv%2Ffiles%2Fcompat-hacks.h;h=d35cece49d8bfe38daf061ff8407d2203dd563f8;hb=refs%2Fpull%2F385%2Fhead;hp=9675ad84031a8e0c17e02e6d3d6259862c2f4c26;hpb=7d5648775aa4dd554d5dc4e7c26ebd843b3e4474;p=feed%2Frouting.git diff --git a/batman-adv/files/compat-hacks.h b/batman-adv/files/compat-hacks.h index 9675ad8..d35cece 100644 --- a/batman-adv/files/compat-hacks.h +++ b/batman-adv/files/compat-hacks.h @@ -22,9 +22,10 @@ #include -#define netdev_master_upper_dev_link(dev, upper_dev, upper_priv, upper_info) ({\ +#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_set_master(dev, upper_dev); \ }) @@ -32,12 +33,22 @@ #include -#define netdev_master_upper_dev_link(dev, upper_dev, upper_priv, upper_info) ({\ +#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 + +#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) */ @@ -298,6 +309,61 @@ static inline void *batadv_skb_put_data(struct sk_buff *skb, const void *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 + +/* 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) */ + /* */ #include @@ -356,7 +422,7 @@ static inline void *batadv_skb_put_data(struct sk_buff *skb, const void *data, static inline void ewma_##name##_add(struct ewma_##name *e, \ unsigned long val) \ { \ - unsigned long internal = ACCESS_ONCE(e->internal); \ + unsigned long internal = READ_ONCE(e->internal); \ unsigned long weight_rcp = ilog2(_weight_rcp); \ unsigned long precision = _precision; \ \ @@ -365,10 +431,10 @@ static inline void *batadv_skb_put_data(struct sk_buff *skb, const void *data, BUILD_BUG_ON((_precision) > 30); \ BUILD_BUG_ON_NOT_POWER_OF_2(_weight_rcp); \ \ - ACCESS_ONCE(e->internal) = internal ? \ + WRITE_ONCE(e->internal, internal ? \ (((internal << weight_rcp) - internal) + \ (val << precision)) >> weight_rcp : \ - (val << precision); \ + (val << precision)); \ } /* */